背景
在日常开发小程序中,我们经常在完成小程序某个功能开发后,手动打包,然后打开开发者工具,然后选择构建的项目目录点击上传。
这个流程通常会比较繁琐,且在多人协同开发时,经常因为其他人的功能需要提测,而需要到微信开发者平台切换不同成员的体验版,或者要麻烦别人拉一下代码进行打包发布。
那么有没有什么办法,能解决呢,经过调研,我了解到,其实是有自动化部署脚本的。
自动化配置
首先,你们公司需要有自动化构建平台,比如我们公司目前用的Jenkins。
小程序项目根目录新建publish.js文件,内容如下
const ci = require('miniprogram-ci');
// eslint-disable-next-line prettier/prettier, semi-style
(async () => {
// 发布配置
const project = new ci.Project({
appid: '小程序的appid',
type: 'miniProgram',
projectPath: './dist/build/mp-weixin',
privateKeyPath: './privateKey/密钥文件',
ignores: ['node_modules/**/*']
});
const uploadResult = await ci.upload({
project,
version: '1.0.0',
desc: '基线版本',
setting: {
es6: true,
es7: true,
minify: true,
minifyJS: true,
minifyWXML: true,
minifyWXSS: true
},
onProgressUpdate: console.log
});
})();
这里需要注意的一点就是密钥文件,需要在微信公众平台,开发管理-开发设置下生成,生成后丢到项目目录中即可,我这边是项目目录下的privateKey目录,projectPath就是你项目打包构建后的目录,一般都是./dist/build/mp-weixin,下图是密钥生成位置。
在回头看看publish.js这个文件,这个文件编写了一段立即执行函数,引用了从微信开发者工具中抽离的关于小程序/小游戏项目代码的编译模块,编写项目配置和上传方法,执行这个脚本,可以无需打开微信开发者工具,直接将打包后的产物,上传至微信公众平台。
详细配置,请查看官方文档:developers.weixin.qq.com/miniprogram…
有了这一段脚本之后,我们只需要在package.json中添加一个npm命令
"scripts": {
"build:mp-weixin": "uni build -p mp-weixin",
"publish": "npm run build:mp-weixin && node ./publish.js",
}
接下来在自动化构建工具中添加配置: 以Jenkins为例,在Build Step中添加shell命令
node -v && npm -v && pnpm -v
rm -rf ./node_modules
rm -rf ./dist
pwd && ls
npm cache clear --force
npm i
npm run publish
pwd && ls
接下来的事情就是Jenkins的配置了,你可以配置成,上传代码后,自动触发构建部署,也可以配置成手动点击构建触发。
当然,日常开发中,我们一般会有多个环境,比如开发环境,测试环境,生产环境。上面提到的构建配置,是以生产环境为例,如果是开发环境,可以适当进行修改。
如下:
项目中添加publish-dev.js,替换发布配置中dev环境的appid和密钥文件路径。
接着,在package.json中,添加如下命令
"scripts": {
"build:mp-weixin-dev": "uni build -p mp-weixin --outDir=./dist/build/mp-weixin --mode development",
"publish:dev": "npm run build:mp-weixin-dev && node ./publish-dev.js",
}
然后修改Jenkins配置的Build Steps
npm run publish
修改为
npm run publish:dev