GitHub Pages 是用于托管我的,组织或者来自 Github 仓库项目的静态网站。
GitHub Pages is designed to host your personal, organization, or project pages from a GitHub repository.css
示例中是一个单页面应用,使用 Webpack 构建。经过打包能获得以下结构文件,这是最终发布到 GitHub Pages 上的源码文件。html
dist
├── static
│ ├── css
│ │ ├── main.css
│ │ └── head.css
│ ├── js
│ ├── main.js
│ └── head.js
└── index.html
复制代码
使用 Travis CI 来作持续发布。首先在项目的根目录下新建一个 .travis.yml 文件来告诉 Travis CI 跑一个简单的脚本。示例代码以下:node
# .travis.yml
language: node_js
sudo: false
node_js:
- 10.15.1
script:
- bash scripts/deploy-to-gh-pages.sh
复制代码
脚本中须要将打包出来的 dist 目录下的文件上传到仓库对应的 gh-pages 分支上。git
# deploy-to-gh-pages.sh
#! /bin/bash
rm -rf dist
npm run build
cd dist
git init
git add .
git commit -m 'Travis build'
git push --force --quiet "https://${GITHUB_TOKEN}@github.com/[user]/[repository name].git" master:gh-pages
复制代码
GITHUB_TOKEN
须要在 GitHub 中设置,如图:github
GitHub Pages 有多种发布站点源码方式,在这里选择新建一个 gh-pages 分支。npm
分支新建完成后,回到 GitHub,在对应的仓库下点击 Settings,翻到 GitHub Pages 栏,在下拉框中选择 gh-pages 分支来发布源码。如图:bash
当咱们提交代码后,Travis CI 将仓库拷贝到一个新的虚拟环境中,而后执行一系列的任务来构建代码,构建成功后,代码会被部署到 GitHub Pages 服务上。网站
通常经过 Webpack 打包生成的资源默认是绝对路径,当部署到带上下文的中间件的时候,就会致使资源引用失败(404)。ui
解决的办法就是在打包过程当中设置生成的资源路径为相对路径,在 Webpack 配置中找到 output
,增长 publicPath: './'
便可。spa