vue cli 3.x 项目部署到 github pages
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 请求。
参考
vue cli 3.x 项目部署到 github pages的更多相关文章
- 教你如何一步步将项目部署到Github
注册Github账号有半年多的时间,却一直不知道如何将自己做好的项目部署到Github中.看了网上许多的教程,要么一开始就来Git命令行,要么直接就来一堆术语,很少能够真正说中要点,解决我们的烦恼. ...
- 将项目部署到github的方法
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub. GitHub于2008年4月10日正式上线,除了Git代码仓库托管及基本的 We ...
- vue cli创建typescript项目
使用最新的Vue CLI @vue/cli创建typescript项目,使用vue -V查看当前的vue cli版本 安装命令 npm install -g @vue-cli 创建项目 vue cre ...
- Hexo搭建博客教程(3) - 远程部署到GitHub Pages
本章讲的是如何将本地的个人项目远程部署到 GitHub Pages,涉及到GitHub的项目仓库.Git的使用,以及Hexo的远程部署等. 1. 安装 hexo-deployer-git 插件 想要将 ...
- 基于Hexo搭建博客并部署到Github Pages
基于Hexo搭建博客并部署到Github Pages 之前在简书上写东西,觉得自己还是太浮躁.本来打算用Flask自己写一个,以为是微框架就比较简单,naive.HTML.CSS.JS等都要学啊,我几 ...
- create-react-app部署到GitHub Pages时报错:Failed to get remote。origin.url
最近使用create-react-app脚手架开发了一个私人博客:点击跳转,在部署到GitHub Pages的时候报了一个错误,具体如下: 在create-react-app的GitHub库的issu ...
- Linux下使用 github+hexo 搭建个人博客02-hexo部署到Github Pages
之前的这篇文章<Linux下使用 github+hexo 搭建个人博客01-hexo搭建>,相信大家都知道怎么搭建 hexo ,怎么切换主题,并且完成了一篇博文的创建,以及 MarkDow ...
- Note | 用Hugo搭建博客并部署到GitHub Pages
目录 1. 本地搭建 1.1 安装Hugo 1.2 创建站点 1.3 新建页面和文章 1.4 使用主题 1.5 修改配置文件 1.6 预览 2. 部署 之前担心过现有博客平台(如博客园,CSDN)突然 ...
- 基于@vue/cli 的构建项目(3.0)
1.检测node的版本号 注意:1.Vue CLI需要Node.js的版本 8.9+(推荐8.11.0+) 所以在安装Vue CLI之前先看下node的版本 node -v 2.安装@vue/cli ...
随机推荐
- nake_api_protect 请求保护器——防止请求被恶意刷
github : https://github.com/xjnotxj/wechat_interaction_auth -- nake_api_protect 接口请求保护器,根据 频率 + 次数 的 ...
- JS 总结
加var与不加var的区别: 简单来说就是加了var是局部变量 不加是全局变量.只有加了var的情况下就能限定该变量的使用范围 这样在别的方法里面也可以命名同样的变量了
- 33.APP后端处理视频的方案
在当前的app应用中,到处都能看到视频的身影,例如,在社交类的app上,用户可以拍摄属于自己的小视频,并发布到相应得栏目,增加和好友们互动的机会. 后台常见的视频处理有以下几种: · ...
- 五个最佳RSS新闻阅读器
文章出自http://www.williamlong.info/archives/1591.html 在博客和在线新闻充斥的互联网上,大量信息已经使得用户阅读量过载,幸运的是,通过RSS Feed提供 ...
- CSS透明opacity和IE各版本透明度滤镜filter的准确用法
滤镜名 说明 Alpha 让HTML元件呈现出透明的渐进效果Blur 让HTML元件产生风吹模糊的效果Chroma 让图像中的某一颜色变成透明色DropShadow ...
- 树莓派.Raspberry Pi 3碰到"Unable to determine hardware version. I see: Hardware : BCM2835"错误的解决过程
按pi4jp官方的安装指导(http://pi4j.com/install.html)进行安装 curl -s get.pi4j.com | sudo bash 安装完成后执行JAVA程序, 发现如下 ...
- BZOJ_3438_小M的作物_最小割
BZOJ_3438_小M的作物_最小割 Description 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物的种子,每种作物的种子 有1个(就是可以种一棵作物) ...
- AMBA总线协议AHB、APB
一.什么是AMBA总线 AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus).ASB (Advanced ...
- mysql中利用group by过滤删除重复行
DELETEFROM peopleWHERE peopleId IN (SELECT peopleId FROM people GROUP BY peopleId HAVING count(peopl ...
- MVC动态绑定下拉框
Controller: //获取下拉信息表 //_vendorsAppService.GetAllObj() 是获取下拉列表结果集 ViewData["vendlist"] = n ...