小程序是支持自定义预处理命令的,提供了 beforeCompile,beforePreview 和 beforeUpload 三个预处理钩子,分别在编译前、预览前和上传前触发。所以我就想利用这个钩子,在上传前判断当前仓库的状态,如果不符合要求就组织上传。目前我主要是做以下三种操作:
- 判断当前仓库是否有代码没有 commit,避免上线的版本有未提交的代码-
- 判断当前仓库是否是 master 分支,避免上线的版本非主分支代码
- 推送当前分支代码到远端,避免其它协作者无法拉取到线上最新的代码
具体脚本如下
#! /usr/bin/env sh
# 检查分支是否为主分支
br_name=$(git symbolic-ref --short HEAD);
if [ $br_name != "master" ]
then
echo "[错误]当前分支名为 $br_name 但是上传包必须是在 master 分支";
exit 42;
fi
# 检查分支上是否有未提交的代码
if [[ ! -z $(git status --porcelain) ]]
then
echo "[错误]你有未提交的代码,上传包前请将代码提交到仓库";
exit 42;
fi
# 最后自动提交到远端仓库
git push;
其中 exit 42
表示是异常退出,微信开发者工具监听到异常退出后会中止上传进程,你也可以是别的非0错误号,更多的错误号可以查看 torvalds/linux 仓库。
最后我们还需要在微信开发者工具-详情
中勾选启用自定义处理命令
,并在上传前预处理中输入 ./bin/beforeUpload
地址,该地址即为刚才你的脚本所在位置。如果是修改 project.config.json
文本内容添加的,还是需要在微信开发者工具中手动勾选下启动自定义处理命令
,默认开发者工具是不开启这个选项的
{
"scripts": {
"beforeCompile": "",
"beforePreview": "",
"beforeUpload": "./bin/beforeUpload"
}
}
网友评论