diff --git a/packages/taro-plugin-mini-ci/README.md b/packages/taro-plugin-mini-ci/README.md index 26e206b21f28..50e14f15d5bf 100644 --- a/packages/taro-plugin-mini-ci/README.md +++ b/packages/taro-plugin-mini-ci/README.md @@ -1,6 +1,6 @@ # @tarojs/plugin-mini-ci -> Taro 小程序端构建后支持CI(持续集成)的插件, 支持构建完毕后自动打开小程序开发这个工具、上传作为体验版、生成预览二维码. 目前支持(企业)微信、字节、支付宝、钉钉、百度小程序 +> Taro 小程序端构建后支持 CI(持续集成)的插件, 支持构建完毕后自动打开小程序开发这个工具、上传作为体验版、生成预览二维码. 目前支持(企业)微信、 京东、字节、支付宝、钉钉、百度小程序 ## 使用 @@ -21,35 +21,33 @@ npm i @tarojs/plugin-mini-ci -D * @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" - }, - dd: { - appid: "钉钉小程序appid,即钉钉开放平台后台应用管理的 MiniAppId 选项", - token: "令牌,从钉钉后台获取" - }, - swan: { - token: "鉴权需要的token令牌" - }, - // 版本号 - version: "1.0.0", - // 版本发布描述 - desc: "版本描述" + weapp: { + appid: '微信小程序appid', + privateKeyPath: '密钥文件相对项目根目录的相对路径,例如 key/private.appid.key', + }, + tt: { + email: '字节小程序邮箱', + password: '字节小程序密码', + }, + alipay: { + appid: '支付宝小程序appid', + toolId: '工具id', + privateKeyPath: '密钥文件相对项目根目录的相对路径,例如 key/pkcs8-private-pem', + }, + dd: { + appid: '钉钉小程序appid,即钉钉开放平台后台应用管理的 MiniAppId 选项', + token: '令牌,从钉钉后台获取', + }, + swan: { + token: '鉴权需要的token令牌', + }, + // 版本号 + version: '1.0.0', + // 版本发布描述 + desc: '版本描述', } const config = { - plugins: [ - [ "@tarojs/plugin-mini-ci", CIPluginOpt ] - ] + plugins: [['@tarojs/plugin-mini-ci', CIPluginOpt]], } ``` @@ -103,124 +101,124 @@ const config = { ```json { - "scripts": { - // 构建完后自动 “打开开发者工具” - "build:weapp": "taro build --type weapp --open", - // 构建完后自动 “上传代码作为开发版并生成预览二维码” - "build:weapp:preview": "taro build --type weapp --preview", - // 构建完后自动“上传代码作为体验版” - "build:weapp:upload": "taro build --type weapp --upload", - // 构建完后自动“上传 dist/xxx 目录的代码作为体验版”, `--projectPath` 参数 适用于 taro 和 原生混合的场景 - "build:weapp:upload": "taro build --type weapp --upload --projectPath dist/xxx" - }, - "taroConfig": { - "version": "1.0.0", - "desc": "上传描述" - } + "scripts": { + // 构建完后自动 “打开开发者工具” + "build:weapp": "taro build --type weapp --open", + // 构建完后自动 “上传代码作为开发版并生成预览二维码” + "build:weapp:preview": "taro build --type weapp --preview", + // 构建完后自动“上传代码作为体验版” + "build:weapp:upload": "taro build --type weapp --upload", + // 构建完后自动“上传 dist/xxx 目录的代码作为体验版”, `--projectPath` 参数 适用于 taro 和 原生混合的场景 + "build:weapp:upload": "taro build --type weapp --upload --projectPath dist/xxx" + }, + "taroConfig": { + "version": "1.0.0", + "desc": "上传描述" + } } ``` -由上面的示例可知,插件为taro cli命令扩展了4个选项: +由上面的示例可知,插件为 taro cli 命令扩展了 4 个选项: - --open -打开开发者工具,类似于网页开发中自动打开谷歌浏览器 + 打开开发者工具,类似于网页开发中自动打开谷歌浏览器 - --preview -上传代码作为开发版并生成预览二维码 + 上传代码作为开发版并生成预览二维码 - --upload -上传代码作为体验版 + 上传代码作为体验版 -此3个选项在一条命令里不能同时使用(互斥) +此 3 个选项在一条命令里不能同时使用(互斥) - --projectPath -指定要操作(打开、预览、上传)的目录路径, 默认情况下是操作构建后目录路径,即 [outputRoot选项](https://taro-docs.jd.com/taro/docs/next/config-detail#outputroot); + 指定要操作(打开、预览、上传)的目录路径, 默认情况下是操作构建后目录路径,即 [outputRoot 选项](https://taro-docs.jd.com/taro/docs/next/config-detail#outputroot); 此选项必须搭配上述三个选项之一一起使用; -此选项优先级为: 终端传入的`--projectPath` > CI配置的`projectPath` 选项 > [outputRoot选项](https://taro-docs.jd.com/taro/docs/next/config-detail#outputroot)。 +此选项优先级为: 终端传入的`--projectPath` > CI 配置的`projectPath` 选项 > [outputRoot 选项](https://taro-docs.jd.com/taro/docs/next/config-detail#outputroot)。 ### 作为命令单独使用 ```json { - "scripts": { - // 直接 “打开开发者工具并载入项目” - "build:weapp": "taro open --type weapp --projectPath dist/xxx", - // 直接 “上传代码作为开发版并生成预览二维码” - "build:weapp:preview": "taro preview --type weapp", - // 直接“上传代码作为体验版” - "build:weapp:upload": "taro upload --type weapp", - // 上传指定目录代码作为体验版 - "build:weapp:upload2": "taro upload --type weapp --projectPath dist/xxx", - }, - "taroConfig": { - "version": "1.0.0", - "desc": "上传描述" - } + "scripts": { + // 直接 “打开开发者工具并载入项目” + "build:weapp": "taro open --type weapp --projectPath dist/xxx", + // 直接 “上传代码作为开发版并生成预览二维码” + "build:weapp:preview": "taro preview --type weapp", + // 直接“上传代码作为体验版” + "build:weapp:upload": "taro upload --type weapp", + // 上传指定目录代码作为体验版 + "build:weapp:upload2": "taro upload --type weapp --projectPath dist/xxx" + }, + "taroConfig": { + "version": "1.0.0", + "desc": "上传描述" + } } ``` -由上面的示例可知,插件额外新增了3个独立命令,让你可以直接操作指定目录。适用于把 `taro` 作为项目一部分的使用场景。 +由上面的示例可知,插件额外新增了 3 个独立命令,让你可以直接操作指定目录。适用于把 `taro` 作为项目一部分的使用场景。 当直接作为命令使用时,有两个选项: - --type -传入平台名称 + 传入平台名称 - --projectPath -传入路径。 此选项优先级为: 终端传入的`--projectPath` > CI配置的`projectPath` 选项 > [outputRoot选项](https://taro-docs.jd.com/taro/docs/next/config-detail#outputroot) + 传入路径。 此选项优先级为: 终端传入的`--projectPath` > CI 配置的`projectPath` 选项 > [outputRoot 选项](https://taro-docs.jd.com/taro/docs/next/config-detail#outputroot) ### Hooks 使用 -在插件执行完 `预览`、`上传` 操作后, 插件会触发2个钩子事件: +在插件执行完 `预览`、`上传` 操作后, 插件会触发 2 个钩子事件: -| 事件名 | 传递参数对象 | 说明 | -| :--- | :--- | :--- | -| onPreviewComplete | 详细见下文 | CI 执行预览后触发 | -| onUploadComplete | 详细见下文| CI 执行上传后触发 | +| 事件名 | 传递参数对象 | 说明 | +| :---------------- | :----------- | :---------------- | +| onPreviewComplete | 详细见下文 | CI 执行预览后触发 | +| onUploadComplete | 详细见下文 | CI 执行上传后触发 | 两个钩子被触发时传入的数据对象描述如下 ```ts interface HooksData { /** 是否预览、构建成功 */ - success: boolean; + success: boolean data: { /** 当前构建的小程序平台 */ - platform: string; + platform: string /** 预览码本地路径 */ - qrCodeLocalPath: string; + qrCodeLocalPath: string /** 预览码内容 */ - qrCodeContent: string; + qrCodeContent: string /** 插件传递的预览版本号 */ - version: string; + version: string /** 插件传递的描述文本 */ - desc: string; + desc: string /** 预览或上传的目录路径 */ - projectPath: string; - }, + projectPath: string + } /** 错误对象 */ - error?: Error; + error?: Error } ``` -你可以写一个自定义插件,来接收上述2个事件传递的值: +你可以写一个自定义插件,来接收上述 2 个事件传递的值: ```js // config/test.js -module.exports = function(ctx) { - ctx.register({ - name: 'onPreviewComplete', - fn: ({success, data, error}) => { - console.log('接收预览后数据', success, data, error) - // 你可以在这里发送钉钉或者飞书消息 - } - }) - ctx.register({ - name: 'onUploadComplete', - fn: ({success, data, error}) => { - console.log('接收上传后数据', success, data, error) - // 你可以在这里发送钉钉或者飞书消息 - } - }) +module.exports = function (ctx) { + ctx.register({ + name: 'onPreviewComplete', + fn: ({ success, data, error }) => { + console.log('接收预览后数据', success, data, error) + // 你可以在这里发送钉钉或者飞书消息 + }, + }) + ctx.register({ + name: 'onUploadComplete', + fn: ({ success, data, error }) => { + console.log('接收上传后数据', success, data, error) + // 你可以在这里发送钉钉或者飞书消息 + }, + }) } ``` @@ -229,14 +227,12 @@ module.exports = function(ctx) { ```js // config/index.js const config = { - plugins: [ - ["@tarojs/plugin-mini-ci", CI插件参数], + ['@tarojs/plugin-mini-ci', CI插件参数], // 应用自己写的插件 - require('path').join(__dirname, './test' ) + require('path').join(__dirname, './test'), ], - ... 其他配置省略 - + ...其他配置省略, } module.exports = function (merge) { @@ -249,15 +245,15 @@ module.exports = function (merge) { ### 各平台 支持的功能情况对比 -| 平台/功能 | 自动打开IDE | 输出预览二维码 | 输出体验二维码 | -| :--- | :--- | :--- | :--- | -| weapp | ✅ | ✅ |✅ | -| qywx | ✅ | ✅ |✅ | -| tt | ✅ | ✅ |✅ | -| alipay | ✅ | ✅ |✅ | -| dd | ✅ | ✅ |❌ | -| swan | ✅ | ✅ |✅ | -| jd | ❌ | ✅ |✅ | +| 平台/功能 | 自动打开 IDE | 输出预览二维码 | 输出体验二维码 | +| :-------- | :----------- | :------------- | :------------- | +| weapp | ✅ | ✅ | ✅ | +| qywx | ✅ | ✅ | ✅ | +| tt | ✅ | ✅ | ✅ | +| alipay | ✅ | ✅ | ✅ | +| dd | ✅ | ✅ | ❌ | +| swan | ✅ | ✅ | ✅ | +| jd | ❌ | ✅ | ✅ | > ps: 各平台上传都是支持的,只是不一定会输出二维码 @@ -267,49 +263,64 @@ module.exports = function (merge) { ### 插件配置 -| 参数 | 类型 | 说明 | -| :--- | :--- | :--- | -| weapp | Object | (企业)微信小程序CI配置 | -| tt | Object | 头条小程序配置 | -| alipay | Object | 支付宝小程序配置 | -| dd | Object | 钉钉小程序配置(3.6.0 版本开始支持) | -| swan | Object | 百度小程序配置 | -| version | string | 上传版本号,不传时默认读取package.json下的taroConfig下的version字段 | -| desc | string | 上传时的描述信息,不传时默认读取package.json下的taroConfig下的desc字段 | +| 参数 | 类型 | 说明 | +| :---------- | :----- | :---------------------------------------------------------------------------------- | +| weapp | Object | (企业)微信小程序 CI 配置 | +| tt | Object | 头条小程序配置 | +| alipay | Object | 支付宝小程序配置 | +| dd | Object | 钉钉小程序配置(3.6.0 版本开始支持) | +| swan | Object | 百度小程序配置 | +| version | string | 上传版本号,不传时默认读取 package.json 下的 taroConfig 下的 version 字段 | +| desc | string | 上传时的描述信息,不传时默认读取 package.json 下的 taroConfig 下的 desc 字段 | | projectPath | string | 目标项目目录,对所有小程序生效(不传默认取 outputRoot 字段 )(3.6.0 版本开始支持) | -### (企业)微信小程序CI配置 - -| 参数 | 类型 | 说明 | -| :--- | :--- | :--- | -| appid | string | 小程序/小游戏项目的 appid | -| privateKeyPath | string | 私钥文件在项目中的相对路径,在获取项目属性和上传时用于鉴权使用| -| devToolsInstallPath | string | 微信开发者工具安装路径,如果你安装微信开发者工具时选的默认路径,则不需要传入此参数(选填) | -| projectPath | string | 上传的小程序的路径(默认取的 outputRoot )(3.6.0 版本已废弃) | -| ignores | string[] | 上传需要排除的目录(选填) | -| robot | number | 指定使用哪一个 ci 机器人,可选值:1 ~ 30(选填, 3.6.0 版本开始支持) | - -官方CI文档[点这里](https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html) - -### 头条小程序CI配置 - -| 参数 | 类型 | 说明 | -| :--- | :--- | :--- | -| email | string | 字节小程序邮箱 | +### (企业)微信小程序 CI 配置 + +| 参数 | 类型 | 说明 | +| :------------------ | :------- | :--------------------------------------------------------------------------------------- | +| appid | string | 小程序/小游戏项目的 appid | +| privateKeyPath | string | 私钥文件在项目中的相对路径,在获取项目属性和上传时用于鉴权使用 | +| devToolsInstallPath | string | 微信开发者工具安装路径,如果你安装微信开发者工具时选的默认路径,则不需要传入此参数(选填) | +| projectPath | string | 上传的小程序的路径(默认取的 outputRoot )(3.6.0 版本已废弃) | +| ignores | string[] | 上传需要排除的目录(选填) | +| robot | number | 指定使用哪一个 ci 机器人,可选值:1 ~ 30(选填, 3.6.0 版本开始支持) | +| setting | Object | 预览和上传时的编译设置,具体见下表(选填, 3.6.2 版本开始支持) | + +#### 编译设置选项说明 + +| 参数 | 类型 | 说明 | +| :--------------- | :------ | :---------------------------------------------------------- | +| 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 文档[点这里](https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html) + +### 头条小程序 CI 配置 + +| 参数 | 类型 | 说明 | +| :------- | :----- | :------------- | +| email | string | 字节小程序邮箱 | | password | string | 字节小程序密码 | -官方CI文档[点这里](https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/developer-instrument/development-assistance/ide-order-instrument) +官方 CI 文档[点这里](https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/developer-instrument/development-assistance/ide-order-instrument) -### 支付宝小程序CI配置 +### 支付宝小程序 CI 配置 -| 参数 | 类型 | 说明 | -| :--- | :--- | :--- | -| appid | string | 小程序appid(`3.6.0` 之前参数名是 `appId` , `3.6.0` 开始统一成`appid`) | -| toolId | string | 工具id,[查看这里复制](https://open.alipay.com/dev/workspace/key-manage/tool) | -| privateKeyPath | string | 密钥文件相对项目根目录的相对路径, 私钥可通过[支付宝开放平台开发助手](https://opendocs.alipay.com/common/02kipl)生成 | -| privateKey | string | 私钥文本内容, 生成方式同上(privateKeyPath和privateKey之间必须要填写其中一个; 3.6.0 版本开始支持) | -| devToolsInstallPath | string | 小程序开发者工具安装路径(选填, 3.6.0 版本开始支持) | -| clientType | string | 上传的终端,终端类型见下表(选填,默认值alipay) | +| 参数 | 类型 | 说明 | +| :------------------ | :----- | :------------------------------------------------------------------------------------------------------------------ | +| appid | string | 小程序 appid(`3.6.0` 之前参数名是 `appId` , `3.6.0` 开始统一成`appid`) | +| toolId | string | 工具 id,[查看这里复制](https://open.alipay.com/dev/workspace/key-manage/tool) | +| privateKeyPath | string | 密钥文件相对项目根目录的相对路径, 私钥可通过[支付宝开放平台开发助手](https://opendocs.alipay.com/common/02kipl)生成 | +| privateKey | string | 私钥文本内容, 生成方式同上(privateKeyPath 和 privateKey 之间必须要填写其中一个; 3.6.0 版本开始支持) | +| devToolsInstallPath | string | 小程序开发者工具安装路径(选填, 3.6.0 版本开始支持) | +| clientType | string | 上传的终端,终端类型见下表(选填,默认值 alipay) | ``` 终端类型值及其含义: @@ -339,33 +350,34 @@ alihealth:阿里健康 health: 阿里医院 ``` -官方CI文档[点这里](https://opendocs.alipay.com/mini/02q29z) +官方 CI 文档[点这里](https://opendocs.alipay.com/mini/02q29z) -### 钉钉小程序CI配置(3.6.0 版本开始支持) +### 钉钉小程序 CI 配置(3.6.0 版本开始支持) -| 参数 | 类型 | 说明 | -| :--- | :--- | :--- | -| appid | string | 钉钉小程序appid,即钉钉开放平台后台应用管理的 MiniAppId 选项(必填) | -| token | string | 令牌,从钉钉后台获取 (必填) | -| devToolsInstallPath | string | 小程序开发者工具安装路径(选填) | +| 参数 | 类型 | 说明 | +| :------------------ | :----- | :------------------------------------------------------------------- | +| appid | string | 钉钉小程序 appid,即钉钉开放平台后台应用管理的 MiniAppId 选项(必填) | +| token | string | 令牌,从钉钉后台获取 (必填) | +| devToolsInstallPath | string | 小程序开发者工具安装路径(选填) | -`taro` 集成的钉钉CI使用了[钉钉官方仓库](https://github.com/open-dingtalk/dingtalk-design-cli)中的 `dingtalk-miniapp-opensdk` 包,查阅源码封装而成 +`taro` 集成的钉钉 CI 使用了[钉钉官方仓库](https://github.com/open-dingtalk/dingtalk-design-cli)中的 `dingtalk-miniapp-opensdk` 包,查阅源码封装而成 -### 百度小程序CI配置 +### 百度小程序 CI 配置 -| 参数 | 类型 | 说明 | -| :--- | :--- | :--- | -| token | string | 有该小程序发布权限的登录密钥 | -| minSwanVersion | string | 最低基础库版本, 不传默认为 3.350.6 | +| 参数 | 类型 | 说明 | +| :------------- | :----- | :--------------------------------- | +| token | string | 有该小程序发布权限的登录密钥 | +| minSwanVersion | string | 最低基础库版本, 不传默认为 3.350.6 | -官方CI文档[点这里](https://smartprogram.baidu.com/docs/develop/devtools/commandtool/) +官方 CI 文档[点这里](https://smartprogram.baidu.com/docs/develop/devtools/smartapp_cli_function/) -### 京东小程序CI配置 -| 参数 | 类型 | 说明 | -| :--- | :--- | :--- | +### 京东小程序 CI 配置 + +| 参数 | 类型 | 说明 | +| :--------- | :----- | :--------- | | privateKey | string | 秘钥字符串 | -官方CI文档[点这里](https://mp-docs.jd.com/doc/dev/devtools/1597) +官方 CI 文档[点这里](https://mp-docs.jd.com/doc/dev/devtools/1597) ### 完整 ts 接口描述 @@ -389,7 +401,7 @@ export interface CIOptions { swan?: SwanConfig } -export type ProjectType = 'miniProgram' | 'miniGame' | 'miniProgramPlugin' | 'miniGamePlugin'; +export type ProjectType = 'miniProgram' | 'miniGame' | 'miniProgramPlugin' | 'miniGamePlugin' /** 微信小程序配置 */ export interface WeappConfig { @@ -405,6 +417,27 @@ export interface WeappConfig { ignores?: Array /** 指定使用哪一个 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 + } } /** 头条小程序配置 */ @@ -416,19 +449,30 @@ export interface TTConfig { } /** 终端类型 */ -export type AlipayClientType = -/** 支付宝 */'alipay' | -/** AMPE */'ampe' | -/** 高德 */'amap' | -/** 天猫精灵 */'genie'| -/** ALIOS */ 'alios'| -/** UC */'uc'| -/** 夸克 */ 'quark'| -/** 口碑 */'koubei' | -/** loT */'alipayiot'| -/** 菜鸟 */'cainiao' | -/** 阿里健康(医蝶谷) */ 'alihealth'| -/** 阿里医院 */ 'health' +export type AlipayClientType = /** 支付宝 */ + | 'alipay' + /** AMPE */ + | 'ampe' + /** 高德 */ + | 'amap' + /** 天猫精灵 */ + | 'genie' + /** ALIOS */ + | 'alios' + /** UC */ + | 'uc' + /** 夸克 */ + | 'quark' + /** 口碑 */ + | 'koubei' + /** loT */ + | 'alipayiot' + /** 菜鸟 */ + | 'cainiao' + /** 阿里健康(医蝶谷) */ + | 'alihealth' + /** 阿里医院 */ + | 'health' /** 支付宝系列小程序配置 */ export interface AlipayConfig { @@ -447,16 +491,16 @@ export interface AlipayConfig { } export type DingtalkProjectType = -/** 第三方个人应用 */ -'dingtalk-personal'| -/** 第三方企业应用 */ -'dingtalk-biz-isv'| -/** 企业内部应用 */ -'dingtalk-biz'| -/** 企业定制应用 */ -'dingtalk-biz-custom'| -/** 工作台组件 */ -'dingtalk-biz-worktab-plugin' + /** 第三方个人应用 */ + | 'dingtalk-personal' + /** 第三方企业应用 */ + | 'dingtalk-biz-isv' + /** 企业内部应用 */ + | 'dingtalk-biz' + /** 企业定制应用 */ + | 'dingtalk-biz-custom' + /** 工作台组件 */ + | 'dingtalk-biz-worktab-plugin' export interface DingtalkConfig { /** 钉钉小程序appid,即钉钉开放平台后台应用管理的 MiniAppId 选项(必填) */ appid: string @@ -480,5 +524,4 @@ export interface SwanConfig { export interface JdConfig { privateKey: string } - ``` diff --git a/packages/taro-plugin-mini-ci/src/BaseCi.ts b/packages/taro-plugin-mini-ci/src/BaseCi.ts index 94d2a2786945..bab542f93fe2 100644 --- a/packages/taro-plugin-mini-ci/src/BaseCi.ts +++ b/packages/taro-plugin-mini-ci/src/BaseCi.ts @@ -19,6 +19,27 @@ export interface WeappConfig { ignores?: Array /** 指定使用哪一个 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 + } } /** 头条小程序配置 */ @@ -111,7 +132,7 @@ export interface CIOptions { alipay?: AlipayConfig /** 钉钉小程序配置 */ dd?: DingtalkConfig - /** 百度小程序配置, 官方文档地址:https://smartprogram.baidu.com/docs/develop/devtools/commandtool/ */ + /** 百度小程序配置, 官方文档地址:https://smartprogram.baidu.com/docs/develop/devtools/smartapp_cli_function/ */ swan?: SwanConfig /** 京东小程序配置, 官方文档地址:https://mp-docs.jd.com/doc/dev/devtools/1597 */ jd?: JdConfig diff --git a/packages/taro-plugin-mini-ci/src/WeappCI.ts b/packages/taro-plugin-mini-ci/src/WeappCI.ts index 6144f9f0ca84..5fbf7dfc2752 100644 --- a/packages/taro-plugin-mini-ci/src/WeappCI.ts +++ b/packages/taro-plugin-mini-ci/src/WeappCI.ts @@ -87,6 +87,7 @@ export default class WeappCI extends BaseCI { desc: this.desc, onProgressUpdate: undefined, robot: this.pluginOpts.weapp!.robot, + setting: this.pluginOpts.weapp!.setting, qrcodeFormat: 'image', qrcodeOutputDest: previewQrcodePath }) @@ -138,7 +139,8 @@ export default class WeappCI extends BaseCI { version: this.version, desc: this.desc, onProgressUpdate: undefined, - robot: this.pluginOpts.weapp!.robot + robot: this.pluginOpts.weapp!.robot, + setting: this.pluginOpts.weapp!.setting }) if (uploadResult.subPackageInfo) {