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 相关文章推荐
jquery 可排列的表实现代码
Nov 13 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
Dec 14 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
Sep 13 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
Dec 20 Javascript
jQuery中index()方法用法实例
Dec 27 Javascript
jQuery 获取页面li数组并删除不在数组中的key
Aug 02 Javascript
Vue下的国际化处理方法
Dec 18 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
Dec 17 Javascript
小程序云开发教程如何使用云函数实现点赞功能
May 18 Javascript
koa2+vue实现登陆及登录状态判断
Aug 15 Javascript
JS开发自己的类库实例分析
Aug 28 Javascript
vue如何搭建多页面多系统应用
Jun 17 Javascript
详解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
PHP脚本的10个技巧(6)
2006/10/09 PHP
php检测useragent版本示例
2014/03/24 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
防止登录页面出现在frame中js代码
2014/07/22 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
BootStrap selectpicker
2016/06/20 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
python数据化运营的重要意义
2019/11/25 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
工程造价与管理专业应届生求职信
2013/11/23 职场文书
现金会计岗位职责
2013/12/05 职场文书
班队活动设计方案
2014/01/30 职场文书
行政主管职责范本
2014/03/07 职场文书
趵突泉导游词
2015/02/03 职场文书
表扬信范文
2015/05/04 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
教导处教学工作总结
2015/08/12 职场文书
车辆挂靠协议书
2016/03/23 职场文书
导游词之神仙居景区
2019/11/15 职场文书
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python