小程序打包发布自动化流程
现有问题
- 测试无法发布自己想要的版本。
- vue的代码打包成微信小程序的代码。
- 打包完成的代码,无法推送到微信开发者平台。
- 构建完毕后,无法用对应的环境直接测试。
相关的依赖和配置
-
打包成微信需要的格式
- vue-cli-service uni-build 安装对应的vue脚手架
- 运维平台直接build成固定的微信包,不区分环境。构建完成的文件在 dist/dev/mp-weixin 里面
"build": "cross-env NODE_ENV=prod UNI_PLATFORM=mp-weixin vue-cli-service uni-build --report", "prod": "cross-env NODE_ENV=prod UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch", "stg": "cross-env NODE_ENV=stg UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch",
-
推送打包完成的代码到微信平台
- 安装 miniprogram-ci
- 在开发 mp.weixin.qq.com/ 中开发管理/开发设置/小程序代码上传 指定固定的ip白名单
- 在开发 mp.weixin.qq.com/ 中开发管理/开发设置/小程序代码上传 生成小程序代码上传密钥
const ci = require('miniprogram-ci'); const config = require('./config.json'); // 发布的版本信息 const manifest = require('../manifest.json'); // 微信小程序的基本信息 let { wxVersion: version, wxDesc: desc } = config; const appid = manifest['mp-weixin'].appid; const cwd = process.cwd() + '/dist/dev/mp-weixin'; if (!version) version = 'v1.0.0'; if (!desc) desc = new Date() + '上传'; const project = new ci.Project({ appid: appid, type: 'miniProgram', projectPath: cwd, privateKeyPath: process.cwd() + '/src/wxupload/private.wxea2e525a470f0b4d.key', // 秘钥 ignores: ['../node_modules/**/*'], });
- 直接上传
ci.upload({ project, version, desc, setting: { minify: true, }, }).then(res => { console.log(res) console.log('上传成功') }).catch(error => { if (error.errCode == -1) { console.log('上传成功') } console.log(error) console.log('上传失败') process.exit(-1) })
- 发布完成也是带有预览功能,生成了二维码图片扫码使用。
-
至此的构建,上传,发布等功能已经完成。
使用方式
- 运维平台从git 仓库拉去指定文件分支打包。
- 拉取完毕执行 npm build 生成基于正式环境的打包的文件。
- 测试需要测试环境的小程序,发布的时候需要选择对应的环境。
- 运维平台替换前台指定的全局环境变量。
- 替换后自动发布,自动预览。测试可以通过预览二维码进行访问具体的小程序。
开发流程
- 用vscode进行开发,起对应的环境,默认开热更新。
- 用微信小程序进行调试和预览。
- 微信配置文件里面 填写当前版本号和版本更新描述。