lishihuan大约 2 分钟

vuepress 博客发布

master存放源码,gh-pages存储编译文件

思路:

  1. set -e # 确保脚本抛出遇到的错误
  2. 提交源码到 master 分支
  3. npm run docs:build # 编译代码
  4. 将编译后的代码迁移到与项目同级目录下
  5. 校验远程的 gh-pages 分支是否存在。如果存在则先删除
  6. 本地 创建 gh-pages 分支,并推送到远程gh-pages分支中
  7. 删除编译后的代码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