如何自动化构建发布微信小程序

427 阅读3分钟

背景

在日常开发小程序中,我们经常在完成小程序某个功能开发后,手动打包,然后打开开发者工具,然后选择构建的项目目录点击上传。
这个流程通常会比较繁琐,且在多人协同开发时,经常因为其他人的功能需要提测,而需要到微信开发者平台切换不同成员的体验版,或者要麻烦别人拉一下代码进行打包发布。
那么有没有什么办法,能解决呢,经过调研,我了解到,其实是有自动化部署脚本的。

自动化配置

首先,你们公司需要有自动化构建平台,比如我们公司目前用的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,下图是密钥生成位置。 image.png 在回头看看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