背景:
多人开发时,通过微信小程序工具上传代码体验版都会不同,需要不断频繁切换体验码/仅限某个人仅限代码上传。
解决方案:
通过微信小程序 miniprogram-ci 脚本 + git 操作进行代码上传
官方文档地址:概述 | 微信开放文档
步骤:
1.密钥及 IP 白名单配置
使用 miniprogram-ci 前应访问"微信公众平台-开发-开发设置"后下载代码上传密钥,并配置 IP 白名单 开发者可选择打开 IP 白名单,打开后只有白名单中的 IP 才能调用相关接口。我们建议所有开发者默认开启这个选项,降低风险 代码上传密钥拥有预览、上传代码的权限,密钥不会明文存储在微信公众平台上,一旦遗失必须重置,请开发者妥善保管
!注意:上传密钥需要保存到指定文件,防止丢失
2.安装miniprogram-ci
vsvscode打开小程序项目,在终端安装ci:
npm install miniprogram-ci
3.创建文件夹及相关文件
安装完 CI 插件后会自动创建 package.json 文件,需要在同级目录创建一个deploy文件夹(命名自定义),并创建 index.js 文件,把第一步下载的上传密钥放在 weapp.key 文件中
上传密钥
上传思路:
上传时怎么获取当前体验版版本号+版本备注信息?
普通的CI上传已不能满足多人多分支的需求,可结合git+本地文件版本号获取线上体验版信息
代码实现:
在 package.json 文件中定义相关项目版本信息,定义 wxconfig 对象,本地读取版本号 + 备注,在上传时进行更改并上传(并同步到远程git)
注:需要额外安装 prompts node交互插件(原生nodejs终端交互已不能满足需求,后面会解释)
安装 prompts 插件 , 官方文档
npm install --save prompts
注:在 package.json 文件中的 miniprogram-ci 跟 prompts 需要声明在 devDependencies 对象内,而非默认的 dependencies 。
index.js 文件(内容不做解释,部分复杂的已做注释)
/**
* 修改版本号并自动上传脚本思路
* 1.获取传进来的参数 √
* 2.根据参数进行逻辑处理 √
* 3.获取package.json中的version参数 √
* 4.修改version的值写入package.json文件 √
* 5.git提交package.json文件 √
* 6.微信自动上传脚本上传到体验版 √
*/
const prompts = require('prompts')
const fs = require('fs').promises // 使用 fs.promises API 来获取异步方法
// 异步子进程
const exec = require('child_process').exec
const ci = require('miniprogram-ci')
const path = require('path')
// 引入package文件内容
const packageJSON = require('../package.json')
// prompts取消时 ctrl + c 不然主动退出会打印错误
const onCancel = (prompt) => {
process.exit()
}
// exec异步封装成异步函数
function execAsync(command) {
return new Pr