Skip to main content
Version: Next

小程序持续集成

info

目前仅支持微信字节支付宝百度小程序。

Taro 小程序端构建后支持 CI(持续集成)的插件 @tarojs/plugin-mini-ci

功能包括:

  • 构建完毕后自动打开小程序开发者工具
  • 上传体验版
  • 生成预览二维码

使用

安装

npm i @tarojs/plugin-mini-ci -D

使用插件

配置 Taro 编译选项:

config/index.js
// 如果你使用 VSCode 作为开发工具, 你还可以使用注释的语法引入插件包含的声明文件,可获得类似于 Typescript 的友好提示
/**
* @typedef { import("@tarojs/plugin-mini-ci").CIOptions } CIOptions
* @type {CIOptions}
*/
const CIPluginOpt = {
// 微信小程序
weapp: {
appid: "微信小程序appid",
privateKeyPath: "密钥文件相对项目根目录的相对路径,例如 key/private.appid.key"
},
// 字节跳动小程序
tt: {
email: "字节小程序邮箱",
password: "字节小程序密码"
},
// 支付宝小程序
alipay: {
appId: "支付宝小程序appId",
toolId: "工具id",
privateKeyPath: "密钥文件相对项目根目录的相对路径,例如 key/pkcs8-private-pem"
},
// 百度小程序
swan: {
token: "鉴权需要的token令牌"
},
// 版本号
version: "1.0.0",
// 版本发布描述
desc: "版本描述"
}

const config = {
plugins: [
["@tarojs/plugin-mini-ci", CIPluginOpt]
]
}

配置 NPM Script

修改 package.json

package.json
{
"scripts": {
// 构建完后自动 “打开开发者工具”
"build:weapp": "taro build --type weapp --open",
// 构建完后自动“上传代码作为体验版”
"build:weapp:upload": "taro build --type weapp --upload",
// 构建完后自动 “上传代码作为开发版并生成预览二维码”
"build:weapp:preview": "taro build --type weapp --preview"
},
"taroConfig": {
"version": "1.0.0",
"desc": "上传描述"
}
}

由上面的示例可知,插件为 Taro CLI 命令扩展了 3 个选项:

  • --open 打开开发者工具,类似于网页开发中自动打开谷歌浏览器
  • --upload 上传代码作为体验版
  • --preview 上传代码作为开发版并生成预览二维码
note

上述 3 个选项在一条命令里不能同时使用

API

插件配置

参数类型说明
weappObject微信小程序 CI 配置
ttObject头条小程序配置
alipayObject支付宝小程序配置
swanObject百度小程序配置
versionstring上传的版本号。不传时默认读取 package.json 里 taroConfig 下的 version 字段
descstring上传时的描述信息。不传时默认读取 package.json 里 taroConfig 下的 desc 字段

微信小程序 CI 配置

官方 CI 文档

参数类型说明
appidstring小程序/小游戏项目的 appid
privateKeyPathstring私钥文件在项目中的相对路径,在获取项目属性和上传时用于鉴权使用
devToolsInstallPathstring微信开发者工具安装路径,如果你安装微信开发者工具时选的默认路径,则不需要传入此参数
projectPathstring上传的小程序的路径(默认取的 outputPath )
ignoresstring[]上传需要排除的目录(选填)

头条小程序 CI 配置

官方 CI 文档

参数类型说明
emailstring字节小程序邮箱
passwordstring字节小程序密码

支付宝小程序 CI 配置

官方CI文档

参数类型说明
appIdstring小程序appId
toolIdstring工具 id,生成方式请查看这里
privateKeyPathstring密钥文件相对项目根目录的相对路径,支付宝生产的私钥文件名一般是 pkcs8-private-pem
clientTypestring上传的终端,终端类型见下表(默认值 alipay

clientType 终端类型值及其含义:

终端类型含义
alipay支付宝
ampeAMPE
amap高德
genie天猫精灵
aliosALIOS
ucUC
quark夸克
taobao淘宝
koubei口碑
alipayiotIoT
cainiao菜鸟
alihealth阿里健康

百度小程序CI配置

官方CI文档

参数类型说明
tokenstring有该小程序发布权限的登录密钥
minSwanVersionstring最低基础库版本, 不传默认为 3.350.6

Ts 接口描述

export interface IOptions {
version?: string
desc?: string
weapp?: WeappConfig
tt?: TTConfig
alipay?: AlipayConfig
swan?: SwanConfig
}

/** 微信小程序配置 */
export interface WeappConfig {
/** 小程序/小游戏项目的 appid */
appid: string
/** 私钥,在获取项目属性和上传时用于鉴权使用(必填) */
privateKeyPath: string
/** 微信开发者工具安装路径 */
devToolsInstallPath?: string
/** 上传的小程序的路径(默认 outputPath) */
projectPath?: string
/** 类型,默认miniProgram 小程序 */
type?: ProjectType
/** 上传需要排除的目录 */
ignores?: Array<string>
}

/** 头条小程序配置 */
export interface TTConfig {
email: string
password: string
}

/** 终端类型 */
export type ClientType =
/** 支付宝 */'alipay' |
/** AMPE */'ampe' |
/** 高德 */'amap' |
/** 天猫精灵 */'genie'|
/** ALIOS */ 'alios'|
/** UC */'uc'|
/** 夸克 */ 'quark'|
/** 淘宝 */ 'taobao'|
/** 口碑 */'koubei' |
/** loT */'alipayiot'|
/** 菜鸟 */'cainiao' |
/** 阿里健康 */ 'alihealth'

/** 支付宝系列小程序配置 */
export interface AlipayConfig {
/** 小程序 appId */
appId: string
/** 工具 id */
toolId: string
/** 工具私钥 */
privateKey: string
/** 服务代理地址(可选) */
proxy?: string
/** 上传的终端, 默认 alipay */
clientType?: ClientType
}

/** 百度小程序配置 */
export interface SwanConfig {
/** 有该小程序发布权限的登录密钥 */
token: string
/** 最低基础库版本, 不传默认为 3.350.6 */
minSwanVersion?: string
}