这里我们只介绍 GitLab 和 GitHub 的 pages 功能的部署
GitHub
打开项目设置的 GitHub Pages 模块,将 Source 设置为 gh-pages,这样我们就可以将博客项目放在 master 分支,而部署到 gh-pages 分支。
手动部署
在根目录建一个 deploy.sh 文件:
bash
<span class="token comment"># 确保脚本抛出遇到的错误</span>
<span class="token builtin class-name">set</span> <span class="token parameter variable">-e</span>
<span class="token comment"># 生成静态文件</span>
<span class="token function">npm</span> run docs:build
<span class="token comment"># 进入生成的文件夹</span>
<span class="token builtin class-name">cd</span> docs/.vuepress/dist
<span class="token comment"># 如果是发布到自定义域名</span>
<span class="token comment"># echo 'www.example.com' > CNAME</span>
<span class="token function">git</span> init
<span class="token function">git</span> <span class="token function">add</span> <span class="token parameter variable">-A</span>
<span class="token function">git</span> commit <span class="token parameter variable">-m</span> <span class="token string">'deploy'</span>
<span class="token comment"># 如果发布到 https://<USERNAME>.github.io</span>
<span class="token comment"># git push -f git@github.com:<USERNAME>/<USERNAME>.github.io.git master</span>
<span class="token comment"># 如果发布到 https://<USERNAME>.github.io/<REPO></span>
<span class="token comment"># git push -f git@github.com:<USERNAME>/<REPO>.git master:gh-pages</span>
<span class="token builtin class-name">cd</span> -
::: warning
如果你用的 MAC,在项目根目录借助 终端 执行 bash deploy.sh 即可;如果你使用的是 WINDOWS,在项目根目录借助 Git Bash 执行 bash deploy.sh 即可。
:::
自动部署
GitHub 的自动部署需要借助 travis-ci 。
- 打开 travis-ci,使用
GitHub登录; - 进入设置页面,点击
Manage repositories on GitHub按钮,将需要自动部署的项目导入进来; - 项目列表中,项目后面有一个
settings按钮,点击进去将进行配置:- 获取
token:进入github的设置页面,点击Developer settings按钮,点击Personal access tokens按钮,在当前页面生成token,名字随便写,只是起到区分作用; - 配置
token:将上面生成的token添加在项目的设置页面的Environment Variables,切记,名字不可随便写,在这里你写成GITHUB_TOKEN; - 配置
Cron Jobs:(如果你的项目就在master分支,可以不用配置这里)Branch选择 你存放项目源码的分支,Interval选择monthly,Options选择Always run,添加成功后便会生效。
- 获取
- 在根目录下创建
.travis.yml(配置规范):yml<span class="token key atrule">language</span><span class="token punctuation">:</span> node_js <span class="token key atrule">node_js</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> lts/* <span class="token key atrule">script</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> npm run build <span class="token key atrule">deploy</span><span class="token punctuation">:</span> <span class="token key atrule">provider</span><span class="token punctuation">:</span> pages <span class="token key atrule">skip-cleanup</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">local_dir</span><span class="token punctuation">:</span> docs/.vuepress/dist <span class="token comment"># 项目打包后生成的文件的目录</span> <span class="token key atrule">github-token</span><span class="token punctuation">:</span> $GITHUB_TOKEN <span class="token comment"># 这里这个变量就是刚才配置 token 时填写的那个变量</span> <span class="token key atrule">keep-history</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">on</span><span class="token punctuation">:</span> <span class="token key atrule">branch</span><span class="token punctuation">:</span> master <span class="token comment"># 项目源码所在的分支</span> - 现在去提交一下代码试试吧,在你提交成功后
travis-ci的控制台就能看到你的项目在部署了。
GitLab
手动部署
设置输出目录为
public:由于
GitLab的pages功能的指定文件夹是public,所以我们要将项目的输出目录改为public,也就是将config.js的dest设置为public;本地编译,然后将项目提交到
GitLab即可。
自动部署
- 设置输出目录为
public; - 由于
GitLab自带 CI,所以就省去了很多的配置步骤,只需要在项目根目录创建.gitlab-ci.yml(配置规范):yml<span class="token key atrule">image</span><span class="token punctuation">:</span> node<span class="token punctuation">:</span>9.11.1 <span class="token key atrule">pages</span><span class="token punctuation">:</span> <span class="token key atrule">cache</span><span class="token punctuation">:</span> <span class="token key atrule">paths</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> node_modules/ <span class="token comment"># 缓存 node_modules,加速编译</span> <span class="token key atrule">script</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> npm install <span class="token punctuation">-</span> npm run docs<span class="token punctuation">:</span>build <span class="token key atrule">artifacts</span><span class="token punctuation">:</span> <span class="token key atrule">paths</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> public <span class="token key atrule">only</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> master - 将项目提交到
GitLab即可。