【前端分享】小程序快速发版-miniprogram-ci

3,724 阅读2分钟

前言

公司小程序项目全部采用 Uni-App 开发,在发版时要先进行 Build 打包,然后在微信开发者工具中选择生产环境项目打开,再进行上传操作。

这种发版每次都要到微信开发者工具中操作,就要忍受微信开发者工具的龟速加载。

概述

miniprogram-ci 是从 微信开发者工具 中抽离的关于小程序/小游戏项目代码的编译模块。

开发者可不打开小程序开发者工具,独立使用 miniprogram-ci 进行小程序代码的上传、预览等操作。

miniprogram-ci 目前提供以下能力:

  1. 上传代码,对应小程序开发者工具的上传
  2. 预览代码,对应小程序开发者工具的预览
  3. 构建 npm,对应小程序开发者工具的: 菜单-工具-构建 npm
  4. 上传云开发云函数代码,对应小程序开发者工具的上传云函数能力
  5. 上传云托管代码,对应小程序开发者工具的上传云托管能力
  6. 上传云存储/静态托管文件,对应小程序开发者工具-云开发-云存储和静态托管文件管理
  7. 代理,配置 miniprogram-ci 的网络请求代理方式
  8. 支持获取最近上传版本的 sourceMap
  9. 支持 node 脚本调用方式和 命令行 调用方式

准备工作

  • 前往"微信公众平台-开发-开发设置"下载代码上传密钥,并配置 IP 白名单。

    开发者可选择打开 IP 白名单,打开后 只有白名单中的 IP 才能调用相关接口;关闭则 所有IP 都可调用。

  • 将下载的秘钥放在项目根目录下

    入口

安装 miniprogram-ci

npm install miniprogram-ci --save

编写上传脚本

// miniprogram-pro-upload.jsconst dayjs = require('dayjs');
​
const ci = require('miniprogram-ci');
(async () => {
  const project = new ci.Project({
    appid: '小程序AppID',  // 小程序AppID
    type: 'miniProgram',
    projectPath: 'dist/build/mp-weixin',  // 打包文件路径
    privateKeyPath: 'pro.key',  // 秘钥路径
  });
  const uploadResult = await ci.upload({
    project,
    version: '1.5.6',  // 版本号
    desc: `体验版本更新于${dayjs().format('YYYY-MM-DD HH:mm:ss')}`,  // 自定义备注
    setting: {
      es6: true,
    },
    onProgressUpdate: console.log,
  });
  console.log(uploadResult);
})();

脚本额外使用了 dayjs 来备注代码上传时间,可自行修改

npm install dayjs

上传体验版

node ./miniprogram-pro-upload.js

上传完毕后显示如下结果就表示上传成功了

image.png

设置体验版

在 "微信公众平台-管理-版本管理" 或 "小程序助手-审核管理-开发版" 中选择 ci机器人1 提交的版本设置为体验版

这个步骤只需 执行一次 ,后续如果更换 ci机器人 再选择对应的开发版设置为体验版即可

参考资料

微信官方文档 / 开发辅助 / CI