vue cli 3.x 项目部署到 github pages的方法


Posted in Javascript onApril 17, 2019

github pages 是 github 免费为用户提供的服务,写博客,或者部署一些纯静态项目。

最近将 vue cli 3.x 初始化项目部署到 github pages,踩了一些坑,记录如下。

https://github.com/nusr/resume-vue

1. vue-router 不要开启 history 模式

路径中的 # 比较丑,就开启了 vue-router 的 history 模式,去掉了 #。平时做项目也是默认开启 history 模式。折腾了半天发现,我这是部署到 github pages ,服务器没有配置,导致页面一直请求不到。

2. 配置 publicUrl

打包路径也要单独配置,否则也是请求不到页面。

比如我的项目地址是 https://github.com/nusr/resume-vue

我要部署到 https://nusr.github.io/resume-vue,那么 publicPath 要配置为 /resume-vue

// vue.config.js
module.exports = {
 publicPath: process.env.NODE_ENV === "production" ? "/resume-vue" : "/"
};

3. css 引入图片错误

css 引入背景图片时,开发环境没有任何问题,但是一旦部署后,就无法获取图片了。

稍微改下 App.vue 的代码,暂时解决了这个问题。

<!--App.vue-->
<template>
 <div id="app">
  <router-view />
 </div>
</template>
<script>
export default {
 name: "App",
 mounted() {
  /**
   * 解决 css 引入图片在 github pages 无法获取的问题
   */
  const { NODE_ENV } = process.env;
  document.documentElement.className = NODE_ENV;
 }
};
</script>
<style lang="less">
@import "~@/assets/global.less";
</style>

给 html 标签配置了一个顶级类,写上不同的 css 解决了这个问题。

真时的部署环境不是这样的,部署文件夹就是根目录,但 github pages 部署文件夹不是根目录,就有这个问题。

// global.less
.development {
 background-image: url(/background.png);
}
.production {
 background-image: url(/resume-vue/background.png)
}

4. 自动部署脚本

根目录下新建 deploy.sh 文件,文件内容如下。

# deploy.sh
# 错误时停止
set -e
# 打包
npm run build
# 进入目标文件夹
cd dist
# 提交到本地仓库
git init
git add -A
git commit -m 'deploy'
# 提交到 https://github.com:nusr/resume-vue 项目的 gh-pages 分支
git push -f git@github.com:nusr/resume-vue.git master:gh-pages
cd -

部署命令是 bash deploy.sh

开启 github pages

建立仓库,仓库名称是 username.github.io ,必须是这种格式。

比如我的用户名是 nusr,建立的仓库就是 nusr.github.io

github pages 默认开启分支是 gh-pages,可以进入该仓库页面,点击 Settings -> GitHub Pages,切换展示的分支。

GitHub Pages 支持定制域名,支持 jsonp 请求。

参考

1.github pages 官方说明

2.vue cli 3.x 部署官方说明

以上所述是小编给大家介绍的vue cli 3.x 项目部署到 github pages的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
js几个不错的函数 $$()
Oct 09 Javascript
疯掉了,尽然有js写的操作系统
Apr 23 Javascript
javascript 屏蔽鼠标键盘的几段代码
Jan 02 Javascript
动态表格Table类的实现
Aug 26 Javascript
javascript 传统事件模型构造的事件监听器实现代码
May 31 Javascript
详解Document.Cookie
Dec 25 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
Sep 29 Javascript
angular1配合gulp和bower的使用教程
Jan 19 Javascript
react写一个select组件的实现代码
Apr 03 Javascript
localstorage实现带过期时间的缓存功能
Jun 28 Javascript
js通过canvas生成图片缩略图
Oct 02 Javascript
jQuery实现简单弹幕制作
Dec 10 jQuery
详解vue开发中调用微信jssdk的问题
Apr 16 #Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
Apr 16 #Javascript
vue微信分享的实现(在当前页面分享其他页面)
Apr 16 #Javascript
在Vue项目中使用snapshot测试的具体使用
Apr 16 #Javascript
vue.js中使用echarts实现数据动态刷新功能
Apr 16 #Javascript
详解vue-cli 脚手架 安装
Apr 16 #Javascript
详解jquery和vue对比
Apr 16 #jQuery
You might like
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
JavaScript 动态创建VML的方法
2009/10/14 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
详解vue父子组件状态同步的最佳方式
2020/09/10 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
python实现ftp客户端示例分享
2014/02/17 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
python爬取微信公众号文章
2018/08/31 Python
python计算两个矩形框重合百分比的实例
2018/11/07 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
matplotlib实现区域颜色填充
2019/03/18 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
特步官方商城:Xtep
2017/03/21 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
手机业务员岗位职责
2013/12/13 职场文书
少年闰土教学反思
2014/02/22 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
巴黎圣母院观后感
2015/06/10 职场文书