大约 2 分钟
vuepress 博客发布
master存放源码,gh-pages存储编译文件
思路:
- set -e # 确保脚本抛出遇到的错误
- 提交源码到 master 分支
- npm run docs:build # 编译代码
- 将编译后的代码迁移到与项目同级目录下
- 校验远程的 gh-pages 分支是否存在。如果存在则先删除
- 本地 创建 gh-pages 分支,并推送到远程gh-pages分支中
- 删除编译后的代码dist文件夹
#!/usr/bin/env sh
# 确保脚本抛出遇到的错误--异常终止脚本
set -e
echo "提交源码文件..."
# 拉取远程仓库的更新
git pull origin master
# 检查源代码是否有变更
if git status | grep -q "modified:"; then
# 如果有变更则添加、提交并推送到远程 master 分支
git add .
git commit -m "update source code"
git push origin master
else
# 当前没有需要提交的代码,控制台输出提示
echo "No changes in source code!"
fi
# 提交源码,编译代码,将生成的dist 迁移到 项目同级目录下,然后将编译文件推送到 gh-pages分支
echo "源码文件提交完成,接下来将执行:编译代码并推送到gh-pages分支"
# 编译代码
npm run docs:build
# 迁移 dist 目录到与项目同级目录下
cp -r src/.vuepress/dist ../
# 切换到与项目同级目录下
#cd ../
# 目前编译的文件已经迁移到 与项目同级目录下,现在切入 dist目前初始化仓库,然后实现推送
cd ../dist
# 检查远程是否存在 gh-pages 分支
if [ "$(git ls-remote --heads origin gh-pages)" ]; then
echo "远程gh-pages分支存在,需要执行删除..."
# 如果远程存在 gh-pages 分支,则删除远程分支
git push origin --delete gh-pages
else
echo "远程gh-pages分支不存在"
# 如果不存在 gh-pages 分支,则需要创建远程分支
# git push -u origin gh-pages
fi
# 检查本地是否存在 gh-pages 分支
#if git branch --list gh-pages; then
# echo "本地 gh-pages分支存在,进行删除操作"
# # 如果本地存在 gh-pages 分支,则删除本地分支
# git branch -D gh-pages
#fi
# 创建并切换到新的 gh-pages 分支,并提交到远程仓库
#git checkout --orphan gh-pages
echo "提交编译的代码到gh-pages分支"
# 提交编译文件到gh-pages分支
git init
git add .
git commit -m "deploy docs"
#git push -f origin gh-pages
git checkout -b gh-pages
# 如果发布到 https://<USERNAME>.github.io
git push -f https://gitee.com/mylishihuan/notes_book.git gh-pages
echo "编译文件推送完成,执行删除本地dist文件"
# 切换会项目更目录
cd ../
# 获取当前目录的绝对路径
CURRENT_DIR=$(pwd)
echo "当前所处目录的路径: ${CURRENT_DIR}"
# 删除 dist目录
rm -rf dist
# 切换回 master 分支
#git switch master