更新记录

0.0.6(2023-05-26)

更新日志

0.0.6 (2023-05-26)

Documentation | 文档

  • 调整README中关于版本号自增的描述 (39772b0)

0.0.5 (2023-05-26)

✨ Features | 新功能

  • ✨ 支持钉钉和支付宝小程序配置版本号为自增方式 (8b61a5f)

0.0.4 (2023-05-25)

Bug Fixes | Bug 修复

  • 移除一些打印信息 (5d596c3)

0.0.3 (2023-05-25)

✨ Features | 新功能

  • ✨ 支持默认取package.json的version和desc,增加文档 (ad08932)

0.0.2 (2023-05-25)

✨ Features | 新功能

0.0.1 (2023-05-25)

Bug Fixes | Bug 修复

  • 支持微信、支付宝、钉钉小程序上传代码 (20e91ab)

平台兼容性

Vue2 Vue3
× ×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.6.10 × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

uni-mini-ci

介绍

uni-mini-ci是一个小程序端构建后支持 CI(持续集成)的插件,支持上传微信、企业微信、钉钉、支付宝平台的小程序。只需简单配置,即可轻松上传多个平台的小程序。

安装

全局安装


# 使用 npm
npm i uni-mini-ci -g

或者

# 使用 yarn
yarn global add uni-mini-ci

局部安装


# 使用 npm
npm i uni-mini-ci --save-dev

或者

# 使用 yarn
yarn add uni-mini-ci -D

特性

  • 支持微信、支付宝、钉钉小程序的上传
  • 支持微信、支付宝、钉钉小程序指定版本号
  • 支持设置支付宝、钉钉小程序版本号自增
  • 其他小程序平台增加中...

配置

配置文件

你可以使用.minicirc文件配置uni-mini-ci,在根目录下创建.minicirc文件

// .minicirc
{
  "weixin": {
    "appid": "微信小程序appid",
    "privateKeyPath": "密钥文件相对项目根目录的相对路径,例如 key/private.appid.key",
    "projectPath": "微信小程序产物目录,例如 dist/build/mp-weixin"
  },
  "alipay": {
    "appid": "支付宝小程序appid",
    "toolId": "支付宝开放平台工具ID",
    "privateKey": "私钥文本内容",
    "projectPath": "支付宝小程序产物目录,例如 dist/build/mp-alipay",
    "autoincrement": true
  },
  "dd": {
    "appid": "钉钉小程序appid,钉钉开发者后台的 MiniAppId 选项",
    "token": "钉钉开发者后台的 API Token",
    "projectPath": "钉钉小程序产物目录,例如 dist/build/mp-alipay",
    "autoincrement": true
  },
  "version": "0.0.1",
  "desc": "版本描述"
}

添加命令

添加一条 npm run scriptpackage.json 中:

{
  "scripts": {
    // 上传到微信小程序
    "upload:weixin": "minici --platform weixin",
    // 上传到支付宝小程序
    "upload:alipay": "minici --platform alipay",
    // 上传到钉钉小程序
    "upload:dd": "minici --platform dd"
  }
}

目前uni-mini-ci支持一个选项--platform,目前支持的平台为:

  • weixin 微信/企业微信
  • alipay 支付宝小程序
  • dd 钉钉小程序

上传小程序

配置完成后,可以在终端中执行命令进行上传操作:

  • 执行yarn upload:weixin 命令上传到微信小程序
  • 执行yarn upload:alipay 命令上传到支付宝小程序
  • 执行yarn upload:dd 命令上传到钉钉小程序

我们也可以将上传命令与打包命令组合起来使用,例如:

{
  "scripts": {
    // 打包并上传到微信小程序
    "upload:mp-weixin": "uni build -p mp-weixin && minici --platform weixin",
    // 打包并上传到支付宝小程序
    "upload:mp-alipay": "uni build -p mp-alipay && minici --platform alipay",
    // 打包并上传到钉钉小程序
    "upload:mp-dingtalk": "uni build -p mp-dingtalk && minici --platform dd"
  }
}

注意

支付宝和钉钉小程序不支持上传的版本号小于或等于现有版本号,我们在测试环境调试可能会频繁的修改代码并上传,所以每次上传操作都指定版本号并不现实。针对这一问题,我们提供了autoincrement字段用于配置版本号是否自增,配置此字段为true时,uni-mini-ci会忽略配置文件中的version字段,并且上传版本号会在当前版本的小版本号上加一。而生产环境则不建议配置autoincrement字段,特殊情况可灵活使用。

API

配置参数

参数 类型 说明
weixin Object (企业)微信小程序 CI 配置
alipay Object 支付宝小程序配置
dd Object 钉钉小程序配置
version string 上传版本号,不传时默认读取 package.json 的 version 字段
desc string 上传时的描述信息

(企业)微信小程序 CI 配置

参数 类型 说明
appid string 小程序/小游戏项目的 appid(必填)
privateKeyPath string 密钥文件相对项目根目录的相对路径,例如 key/private.appid.key,在获取项目属性和上传时用于鉴权使用 (必填)
projectPath string 微信小程序产物目录,例如 dist/build/mp-weixin(必填)
ignores string[] 上传需要排除的目录(选填)
robot number 指定使用哪一个 ci 机器人,可选值:1 ~ 30
setting Object 预览和上传时的编译设置,具体见下表

编译设置选项说明

参数 类型 说明
es6 boolean 对应于微信开发者工具的 "es6 转 es5"
es7 boolean 对应于微信开发者工具的 "增强编译"
disableUseStrict boolean "增强编译" 开启时,是否禁用 JS 文件严格模式,默认为 false
minifyJS boolean 上传时压缩 JS 代码
minifyWXML boolean 上传时压缩 WXML 代码
minifyWXSS boolean 上传时压缩 WXSS 代码
minify boolean 上传时压缩所有代码,对应于微信开发者工具的 "上传时压缩代码"
codeProtect boolean 对应于微信开发者工具的 "上传时进行代码保护"
autoPrefixWXSS boolean 对应于微信开发者工具的 "上传时样式自动补全"

官方 CI 文档点这里

支付宝小程序 CI 配置

参数 类型 说明
appid string 支付宝小程序 appid (必填)
toolId string 工具 id,查看这里复制(必填)
projectPath string 支付宝小程序产物目录,例如 dist/build/mp-alipay(必填)
privateKeyPath string 密钥文件相对项目根目录的相对路径, 私钥可通过支付宝开放平台开发助手生成
privateKey string 私钥文本内容, 生成方式同上(privateKeyPath 和 privateKey 之间必须要填写其中一个)
autoincrement boolean 版本号是否自增(支付宝小程序上传版本号必须大于现有版本号,建议测试环境开启版本号自增)
clientType string 上传的终端,终端类型见下表(选填,默认值 alipay)
终端类型值及其含义:

alipay: 支付宝

ampe:AMPE

amap:高德

genie:天猫精灵

alios:ALIOS

uc:UC

quark:夸克

koubei:口碑

alipayiot:IoT

cainiao:菜鸟

alihealth:阿里健康

health:  阿里医院

官方 CI 文档点这里

钉钉小程序 CI 配置

参数 类型 说明
appid string 钉钉小程序appid,钉钉开发者后台的 MiniAppId 选项(必填)
token string 令牌,从钉钉后台获取 (必填)
projectPath string 钉钉小程序产物目录,例如 dist/build/mp-alipay(必填)
autoincrement boolean 版本号是否自增(钉钉小程序上传版本号必须大于现有版本号,建议测试环境开启版本号自增)

官方 CI 文档点这里

模型定义

/**微信小程序类型 */
export type ProjectType = 'miniProgram' | 'miniGame' | 'miniProgramPlugin' | 'miniGamePlugin'

/** 微信小程序配置 */
export interface WeixinConfig {
  /** 微信小程序产物目录 */
  projectPath?: string
  /** 小程序/小游戏项目的 appid */
  appid: string
  /** 私钥文件路径,在获取项目属性和上传时用于鉴权使用 */
  privateKeyPath: string
  /** 类型,默认miniProgram 小程序 */
  type?: ProjectType
  /** 上传需要排除的目录 */
  ignores?: Array<string>
  /** 指定使用哪一个 ci 机器人,可选值:1 ~ 30 */
  robot?: number
  /** 预览和上传时的编译设置 */
  setting?: {
    /** 对应于微信开发者工具的 "es6 转 es5" */
    es6: boolean
    /** 对应于微信开发者工具的 "增强编译" */
    es7: boolean
    /** "增强编译" 开启时,是否禁用JS文件严格模式,默认为false */
    disableUseStrict: boolean
    /** 上传时压缩 JS 代码 */
    minifyJS: boolean
    /** 上传时压缩 WXML 代码 */
    minifyWXML: boolean
    /** 上传时压缩 WXSS 代码 */
    minifyWXSS: boolean
    /** 上传时压缩所有代码,对应于微信开发者工具的 "上传时压缩代码" */
    minify: boolean
    /** 对应于微信开发者工具的 "上传时进行代码保护" */
    codeProtect: boolean
    /** 对应于微信开发者工具的 "上传时样式自动补全" */
    autoPrefixWXSS: boolean
  }
}
/** 支付宝小程序终端类型 */
export type AlipayClientType =
  /** 支付宝 */
  | 'alipay'
  /** AMPE */
  | 'ampe'
  /** 高德 */
  | 'amap'
  /** 天猫精灵 */
  | 'genie'
  /** ALIOS */
  | 'alios'
  /** UC */
  | 'uc'
  /** 夸克 */
  | 'quark'
  /** 口碑 */
  | 'koubei'
  /** loT */
  | 'alipayiot'
  /** 菜鸟 */
  | 'cainiao'
  /** 阿里健康(医蝶谷) */
  | 'alihealth'
  /** 阿里医院 */
  | 'health'

/** 支付宝系列小程序配置 */
export interface AlipayConfig {
  /** 支付宝小程序产物目录 */
  projectPath?: string
  /** 小程序appid */
  appid: string
  /** 工具id */
  toolId: string
  /** 私钥文件路径,在获取项目属性和上传时用于鉴权使用(privateKeyPath和privateKey之间必须要填写其中一个) */
  privateKeyPath: string
  /** 私钥文本内容,在获取项目属性和上传时用于鉴权使用(privateKeyPath和privateKey之间必须要填写其中一个) */
  privateKey: string
  /** 上传的终端, 默认alipay */
  clientType?: AlipayClientType
  /** 是否版本号自增,配置后忽略 version 字段 */
  autoincrement?: boolean
}
/**钉钉小程序配置 */
export interface DingtalkConfig {
  /** 钉钉小程序产物目录 */
  projectPath?: string
  /** 钉钉小程序appid,即钉钉开放平台后台应用管理的 MiniAppId 选项(必填) */
  appid: string
  /** 令牌,从钉钉后台获取 */
  token: string
  /** 钉钉应用类型, 默认为:'dingtalk-biz' (企业内部应用) */
  projectType?: DingtalkProjectType
  /** 是否版本号自增,配置后忽略 version 字段 */
  autoincrement?: boolean
}

/**钉钉小程序类型 */
export type DingtalkProjectType =
  /** 第三方个人应用 */
  | 'dingtalk-personal'
  /** 第三方企业应用 */
  | 'dingtalk-biz-isv'
  /** 企业内部应用 */
  | 'dingtalk-biz'
  /** 企业定制应用 */
  | 'dingtalk-biz-custom'
  /** 工作台组件 */
  | 'dingtalk-biz-worktab-plugin'
/**配置参数 */
export interface CIOptions {
  /** 发布版本号,默认取 package.json 文件的 version 字段 */
  version?: string
  /** 版本发布描述, 默认取 package.json 文件的 description 字段 */
  desc?: string
  /** 微信小程序CI配置, 官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html */
  weixin?: WeixinConfig
  /** 支付宝系列小程序配置,官方文档地址: https://opendocs.alipay.com/mini/miniu/api */
  alipay?: AlipayConfig
  /** 钉钉小程序配置 */
  dd?: DingtalkConfig
}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问