起因
余鸿靖手册小站
这几天心血来潮想做一个手册网站,来记录一些系列类型的文章,于是一眼就相中了vuepress。
三下五除二就搞定了我的手册网站。正准备收尾的时候,却发现痛苦的事情才刚到来!
令人窒息的部署流程
本地库的大体流程如下:1
2
3
4
5
6
7远程github的库下有2个分支
master: 保存打包后的静态页面---用于展示page页
dev: 保存网页的源代码---换物理机也不影响代码丢失
本地库下也有2个分支
master: 保存打包后的静态页面---推送至远程master
dev: 网页的源代码---推送至远程的dev
于是乎我每次的部署流程如下:
- 在dev分支下编写文章,打包文件,推送源代码到dev
- 把打包的文件复制出来,然后切换到master(没错,切换还挺费时间的,文件比较多)
- 把打包的文件再复制到master分支下,并推送到远程master(现在一个完整的更新流程才完成了)
- 但是,如果文章有不满意的地方,我又需要切回dev分支重复以上操作一次
天呐!地狱般的效率,不能忍受了!
hexo的恩爱情仇
先不要吐槽我,本地为什么需要用两个分支,为什么不直接在打包后的文件夹直接推送master就行了。
因为我的博客是用hexo搭建,它的推送流程如下:1
2
3
4
5
6本地两个分支
master: 打包后的静态网站代码(你不能在此放你的源代码,因为它每次都会把分支下的所有文件清空,然后放置打包后的代码)
dev: 你的源代码(因为master放不了,所以新建立分支存放源代码)
远程两个分支
master: 打包后的静态代码---用于展示page页
dev: 源代码---保存源代码
没错,想必你已经知道了,我就是仿照这个来建立的分支。
所以,我忘了vuepress打包后,是不会删除其他的代码的,这意味着,我的源代码和打包后的代码可以放一起。
好吧,来改进一下吧。
尝试改进
所以,现在我可以不用来回切换分支,拖动文件来部署文件了。
目前的流程如下:
- 在dev分支下编写文章,打包文件,推送源代码到dev
- 进入打包的文件,推送到master
但是操作还是挺多的,毕竟还是需要add,commit,push三连。还是很难受,而且还要进入子文件夹。
想到hexo的hexo g -d
一键部署我就觉得这还是太麻烦了!
再次改进
想到可以通过bash来帮我自动执行这一系列操作。
于是在目录下创建一个deploy.sh的文件,内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
set -e
npm run build
cd docs/.vuepress/dist
git init
git add -A
git commit -m "deploy"
git push -f git@github.com:yuhongjing/library.git master
cd -
这时我们就可以直接bash deploy.sh
一句话就能够部署了!
如果需要一并提交源代码,我们也可以在这里面再多添加几句话就搞定了!
注意
如果系统不支持bash,可以下载一个git bash
来使用bash命令。
如果你觉得打开bash还是太麻烦,你可以在项目的package.json添加如下:1
2
3
4
5{
"scripts": {
"deploy": "bash deploy.sh"
}
}
这样的话,你就可以直接npm run deploy
即可。
emmmmmm,懒果然是人类进步的动力啊!