小程序每次发一个新版本到体验版,我需要做的是,打包=>打开微信开发者工具=>点击上传=>点击提交,总之很繁琐。这里的发布体验版流程充满了低效,所以我想通过脚本来实现自动化发包,查了下官方有miniprogram-ci这个NPM包,经过摸索终于解决了痛点,但官方文档实在是太简陋了,记录下我的解决方案。
我本来的项目情况
我是使用taro,每次需要发包前需要先执行npm run build:weapp,编译打包后的文件夹在/dist/weapp,每次是将该文件夹进行上传发布。
使用miniprogram-ci实现自动发包
发布开发版的脚本代码如下。基于如下代码块,做一个publish.js脚本即可。至于结合打包也都很easy了。
(async () => {
const project = new ci.Project({
appid: "",
type: "miniProgram",
projectPath: path.resolve(__dirname, "../", "dist"),
privateKeyPath: path.resolve(__dirname, "private.key"),
ignores: ["node_modules/**/*"],
});
// 通用编译配置
const setting = {
// 关键:禁用 ES6 转 ES5,因为 Taro 已经处理过了
es6: false,
// 禁用增强编译
enhance: false,
// 禁用 ES7 转 ES5
es7: false,
// 代码保护(混淆)
minified: true,
// 是否自动补全样式
autoPrefixWXSS: true,
// 压缩 WXML
minifyWXML: true,
// 压缩 WXSS
minifyWXSS: true,
// 将 JS 编译成 ES5
codeProtect: false,
};
注意
官方文档很多细节都是没有提及,这里说明下。
- 注意如果本身该版本在微信公众平台设置为了体验版,那么发布后就是体验版,否则就是开发版。
- private.key文件需要从微信公众平台下载,路径:开发->开发设置->下载开发者工具配置文件,解压后可以找到private.key文件。
- 这里projectPath即project.config存在的目录,我因为使用的taro,因此taro负责了编译到微信小程序语言,因此我在上述配置中就需要关闭编译那些开关。如果本身你是原生开发,那么我理解可以直接选择走项目配置即可。
- 本身ci工具的upload仅仅是有个大小检测,并不会检查语法之类的,因此假如选错了目录,或者多配置了编译等,结果就是上传成功,但预览白报错,比如
Component is not found in path "wx://not-found"
总结
miniprogram-ci不是好不好的问题,凑合用吧。- 微信小程序文档真的够烂,社区也就那样,随便一翻就是吐槽,说明什么,烂但你又不得不用,凑合吧。

