dumi之github pages发布小记
dumi之github pages发布小记
背景
最近有包开发需求,于是用了次dumi。有脚手架搭建还是很方便的,很快也能成功运行了,然后我开始对脚手架进行修改已满足发包需求。
dumi文档发布脚本
set -e
shopt -s extglob
TEMP_PATH="docs/.temp"
# build docs
npm run doc:build
# prepare deploy
mkdir $TEMP_PATH
cd $TEMP_PATH
git init
git pull [email protected]:umijs/dumi.git gh-pages
cp -r ../../dist/* .
# commit and push changes
git add -A
git commit --am -m "build: deploy documentation"
git push -f [email protected]:umijs/dumi.git master:gh-pages
# clean
cd -
rm -rf $TEMP_PATH
整体来说思路很清晰:构建文档包->生成临时目录->初始化git->拉取gh-pages分支到目录->拷贝文档静态文件到临时目录->提交并推送到gh-pages分支->清理临时目录
在dumi脚手架上使用
按照dumi照抄了一份,在自己的包里准备发布一次文档到gh-pages,很快便发现了问题。
由于我的项目里没有gh-pages分支,所以在拉取的时候出现了报错。
于是我通过github基于master新建了分支gh-pages,通过脚本进行文档部署,但是除了文档静态文件还有master上面的代码,于是便走了一条不归路。
我首先想到的就是在复制文件进来前对文件目录清理一遍。
rm -rf *:这条命令执行下来只能删除隐藏文件(.开头的文件)以外的文件。
rm -rf .*:这样是可以把隐藏文件也删掉但是.git也被删掉了。
find . -not -name ".git" -exec rm -rf {} \;:这样是可以.git以外的文件,但是会提示'.'、‘..'目录不允许删除。
最终解决命令find . -not -name ".git" -not -name "." -not -name ".." -exec rm -rf {} \;
终于解决了排除.git文件删除其他文件的问题。但是悲剧的我发现我为什么要去拉代码呢,我直接上传就好了呀,部署文档的提交记录我又不需要关注,直接推送代码还能解决没有分支的问题。所以最后脚本更改如下:
set -e
shopt -s extglob
TEMP_PATH="docs/.temp"
# build docs
npm run docs:build
# prepare deploy
mkdir $TEMP_PATH
cd $TEMP_PATH
git init
cp -r ../../dist/* .
# commit and push changes
git add .
git commit -m "build: deploy documentation"
git push -f https://github.com/xxx.git master:gh-pages
# clean
cd -
rm -rf $TEMP_PATH
总结
文档发布思路:构建doc静态文件->创建临时目录->初始化git->复制静态文件到临时目录->提交并推送到gh-pages分支->删除临时目录
补充
直接使用workflows动态发布
name: deploy to gh-pages
on:
push:
branches:
- master # default branch
jobs:
deploy:
name: deploy
runs-on: ubuntu-18.04
steps:
- name: Checkout
uses: actions/checkout@v2
with:
persist-credentials: false
- name: Install and Build
run: |
npm install
npm run docs:build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.ACTION_TOKEN }}
publish_dir: ./dist