Skill: super9du/wx-miniprogram-ci (version 1.2.1)

--- name: wx-miniprogram-ci description: 为微信小程序项目开发提供预览、上传、构建 npm、云函数上传、云存储上传等能力。 --- # wx-miniprogram-skill 为微信小程序项目提供预览、上传、构建 npm、云函数上传、云存储上传等能力的技能，基于微信官方的 npm 命令 [miniprogram-ci](https://www.npmjs.com/package/miniprogram-ci) 创建。 ## 快速开始 > ⚠️ **注意**：脚本位于 `scripts/wx-miniprogram-ci.js`，可从仓库根目录直接运行： > ```bash > node scripts/wx-miniprogram-ci.js <command> [options] > ``` ### 1. 初始化环境 ```bash node wx-miniprogram-ci.js init ``` ### 2. 配置 使用 `config --set` 命令配置（自动持久化到 `~/.wxmini-ci.config.js`），或手动创建配置文件。 ### 3. 使用 ```bash node wx-miniprogram-ci.js check # 检查配置 node wx-miniprogram-ci.js preview ... # 预览 node wx-miniprogram-ci.js upload ... # 上传 ``` ## 命令行使用 ```bash node wx-miniprogram-ci.js <command> [options] ``` ### 可用命令 | 命令 | 说明 | |------|------| | init | 初始化环境（检查/安装全局 miniprogram-ci） | | config | 查看/修改配置 | | check | 检查配置是否完整 | | preview | 预览（生成二维码） | | upload | 上传代码 | | build-npm | 构建 npm | | upload-function | 上传云函数 | | upload-storage | 上传云存储 | | get-sourcemap | 获取 sourceMap | ### 全局选项 | 选项 | 说明 | |------|------| | `--config-dir` | 指定配置目录（默认 ~/.wxmini-ci.config.js） | | `--appid` | 小程序 appid | | `--private-key` | 私钥文件路径 | | `--project-path` | 项目路径 | | `--type` | 项目类型（默认 miniProgram） | | `--output-dir` | 输出目录 | | `--project` | 从 projects 映射中选择项目 | ### 输出目录默认值 | 平台 | 默认输出目录 | |------|-------------| | 所有平台 | `./wx-miniprogram-ci`（当前工作目录下） | ## 命令详解 ### init - 初始化环境 ```bash node wx-miniprogram-ci.js init ``` 初始化环境： 1. 检查是否已全局安装 `miniprogram-ci` 2. 如果未安装则执行 `npm install -g miniprogram-ci` 3. 保持当前脚本作为配置管理和全局 CLI 调用层 --- ### config - 查看/修改配置 ```bash # 查看当前配置（所有项目） node wx-miniprogram-ci.js config # 列出所有项目 node wx-miniprogram-ci.js config --list # 获取全局配置（--get 无参数时显示全局配置概览） node wx-miniprogram-ci.js config --get # 获取指定配置项 node wx-miniprogram-ci.js config --get appid # 设置全局配置项（自动持久化到 ~/.wxmini-ci.config.js，格式：key=value） node wx-miniprogram-ci.js config --set appid=YOUR_APPID node wx-miniprogram-ci.js config --set privateKeyPath=~/.credentials/private.YOUR_APPID.key # ⚠️ 注意：config --set 不带参数会报错（必须指定 key=value） # 获取项目配置 node wx-miniprogram-ci.js config --project myapp --get appid # 切换默认项目 node wx-miniprogram-ci.js config --switch myapp # 设置项目配置（自动持久化到 ~/.wxmini-ci.config.js，格式：key=value） node wx-miniprogram-ci.js config --project myapp --set appid=YOUR_APPID node wx-miniprogram-ci.js config --project myapp --set privateKeyPath=~/.credentials/private.YOUR_APPID.key ``` --- ### check - 配置检查 ```bash node wx-miniprogram-ci.js check --appid <appid> --private-key <keypath> --project-path <path> ``` 检查：AppID、私钥文件、项目目录、project.config.json 是否存在。 --- ### preview - 预览 ```bash node wx-miniprogram-ci.js preview \ --appid YOUR_APPID \ --private-key ~/.credentials/private.YOUR_APPID.key \ --project-path /path/to/your/project \ --desc "预览描述" \ --qrcode-format terminal \ --page-path pages/index/index \ --search-query a=1 \ --robot 1 \ --output-dir /tmp/wx-miniprogram-ci ``` **preview 特有选项：** | 选项 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `--desc` | string | 当前时间 | 描述 | | `--qrcode-format` | string | terminal | 二维码格式：terminal/base64/image | | `--qrcode-output` | string | {output-dir}/preview-{timestamp}.png | 二维码图片路径（精确文件路径） | | `--output-dir` | string | ./wx-miniprogram-ci | 二维码输出目录（目录，会拼接文件名） | | `--page-path` | string | 主页面 | 预览页面路径 | | `--search-query` | string | 空 | 启动参数 | | `--scene` | number | 1011 | 场景值 | | `--robot` | number | 1 | CI 机器人 1-30 | | `--private-key` | string | 配置值 | 私钥文件路径（支持 `--private-key` 或 `--privateKey` 别名） | --- ### upload - 上传 ```bash node wx-miniprogram-ci.js upload \ --appid YOUR_APPID \ --private-key ~/.credentials/private.YOUR_APPID.key \ --project-path /path/to/your/project \ --version 1.0.0 \ --desc "修复bug" \ --setting.es6 true \ --setting.minify true \ --robot 1 ``` **upload 特有选项：** | 选项 | 类型 | 默认值 | 说明 | |------|------|--------|------| | `--version` | string | 必填 | 版本号 | | `--desc` | string | 当前时间 | 上传描述 | | `--setting` | object | 见下方 | 编译设置 | | `--robot` | number | 1 | CI 机器人 1-30 | | `--threads` | number | 1 | 编译线程数 | **setting 编译设置：** | 设置 | 类型 | 说明 | |------|------|------| | `--setting.es6` | boolean | ES6 转 ES5 | | `--setting.es7` | boolean | 增强编译 | | `--setting.minify` | boolean | 压缩代码 | | `--setting.minifyJS` | boolean | 压缩 JS | | `--setting.minifyWXML` | boolean | 压缩 WXML | | `--setting.minifyWXSS` | boolean | 压缩 WXSS | | `--setting.codeProtect` | boolean | 代码保护 | | `--setting.autoPrefixWXSS` | boolean | 样式自动补全 | --- ### build-npm - 构建 npm ```bash node wx-miniprogram-ci.js build-npm \ --appid YOUR_APPID \ --private-key ~/.credentials/private.YOUR_APPID.key \ --project-path /path/to/your/project ``` **build-npm 特有选项：** | 选项 | 类型 | 说明 | |------|------|------| | `--ignores` | string | 排除规则 | **说明：** 会自动检测 `miniprogram-ci` 版本： - v1.x 使用 `buildNpm()` - v2.x 使用 `packNpm()` --- ### upload-function - 上传云函数 ```bash node wx-miniprogram-ci.js upload-function \ --appid YOUR_APPID \ --private-key ~/.credentials/private.YOUR_APPID.key \ --project-path /path/to/your/project \ --env cloud-xxxx \ --name my-function \ --path ./functions/my-function \ --remote-npm-install false ``` **upload-function 特有选项：** | 选项 | 类型 | 必填 | 说明 | |------|------|------|------| | `--env` | string | 是 | 云环境 ID | | `--name` | string | 是 | 云函数名称 | | `--path` | string | 是 | 云函数目录 | | `--remote-npm-install` | boolean | 否 | 云端安装依赖，默认 false | ⚠️ 注意：云函数上传可能需要 miniprogram-ci@alpha 版本 --- ### upload-storage - 上传云存储 ```bash node wx-miniprogram-ci.js upload-storage \ --appid YOUR_APPID \ --private-key ~/.credentials/private.YOUR_APPID.key \ --project-path /path/to/your/project \ --env cloud-xxxx \ --path ./dist \ --remote-path /my-folder ``` **upload-storage 特有选项：** | 选项 | 类型 | 必填 | 说明 | |------|------|------|------| | `--env` | string | 是 | 云环境 ID | | `--path` | string | 是 | 本地文件目录 | | `--remote-path` | string | 否 | 远端目录 | ⚠️ 注意：云存储上传需要 miniprogram-ci@alpha 版本 --- ### get-sourcemap - 获取 SourceMap ```bash node wx-miniprogram-ci.js get-sourcemap \ --appid YOUR_APPID \ --private-key ~/.credentials/private.YOUR_APPID.key \ --project-path /path/to/your/project \ --robot 1 \ --output ./sourcemap ``` **get-sourcemap 特有选项：** | 选项 | 类型 | 必填 | 说明 | |------|------|------|------| | `--robot` | number | 是 | CI 机器人 | | `--output` | string | 是 | 保存路径 | --- ## 环境变量 仅支持 `WXMINI_OUTPUT_DIR` 一个环境变量： | 环境变量 | 对应配置 | 说明 | |----------|----------|------| | WXMINI_OUTPUT_DIR | outputDir | 输出目录（默认使用 outputDir 配置或 ./wx-miniprogram-ci，当前工作目录下） | 示例： ```bash export WXMINI_OUTPUT_DIR=/tmp/my-output node wx-miniprogram-ci.js upload --version 1.0.0 --desc "发布" ``` ## 配置文件 仅支持一个配置文件路径：`~/.wxmini-ci.config.js`（可通过 `--config-dir` 指定其他目录）。 ### 配置优先级 配置优先级（从高到低）： 1. **命令行参数** - 直接指定，如 `--appid xxx` 2. **环境变量** - 仅 `WXMINI_OUTPUT_DIR` 3. **配置文件** - 仅 `~/.wxmini-ci.config.js`（或 `--config-dir` 指定目录下的） 4. **默认配置** - 内置默认值 ### 多项目配置 支持同时管理多个小程序项目，通过 `projects` 映射配置： ```javascript const os = require('os'); const path = require('path'); module.exports = { // 默认项目（可选，不指定 --project 时自动使用） default: 'project-a', // 项目映射 projects: { 'project-a': { appid: 'YOUR_APPID', privateKeyPath: '~/.credentials/private.YOUR_APPID.key', projectPath: '/path/to/your/project-a', type: 'miniProgram' }, 'project-b': { appid: 'YOUR_APPID_B', privateKeyPath: '~/.credentials/private.YOUR_APPID_B.key', projectPath: '/path/to/your/project-b', type: 'miniProgram' } }, // 编译设置（可选） setting: { es6: true, minify: true } } ``` 使用指定项目或默认项目： ```bash # 使用默认项目（config 中指定了 default） node wx-miniprogram-ci.js upload --version 1.0.0 # 使用指定项目 node wx-miniprogram-ci.js upload --project project-a --version 1.0.0 node wx-miniprogram-ci.js upload --project project-b --version 1.0.0 ``` ### 设置默认项目 ```bash # 切换默认项目（推荐） node wx-miniprogram-ci.js config --switch project-a # 或通过 --set 设置 default 字段（格式：key=value） node wx-miniprogram-ci.js config --set default=project-a ``` --- ## 常见问题 ### IP 不在白名单 ``` Error: ip xxx.xxx.xxx.xxx not in whitelist ``` 解决：登录 mp.weixin.qq.com → 开发管理 → 开发设置 → IP白名单，加入服务器 IP。 ### 私钥文件不存在 ``` Error: private key not found ``` 解决：确认私钥文件路径正确，内容为微信公众平台下载的 .key 文件。 ### robot 无权限 ``` Error: robot xx has no permission ``` 解决：确保调用接口的账号有使用对应 CI 机器人的权限。 --- ## 工作流程示例 ```bash # 1. 初始化环境（首次使用） node wx-miniprogram-ci.js init --project-path /path/to/project # 2. 配置项目（自动持久化） node wx-miniprogram-ci.js config --project myapp --set appid=YOUR_APPID node wx-miniprogram-ci.js config --project myapp --set privateKeyPath=~/.credentials/private.YOUR_APPID.key node wx-miniprogram-ci.js config --project myapp --set projectPath=/path/to/project # 3. 切换默认项目（之后命令无需 --project） node wx-miniprogram-ci.js config --switch myapp # 4. 检查配置（无需 --project，自动用 myapp） node wx-miniprogram-ci.js check # 5. 预览测试 node wx-miniprogram-ci.js preview --desc "功能测试" # 6. 上传发布 node wx-miniprogram-ci.js upload --version 1.0.1 --desc "修复登录bug" ``` --- ## 官方文档 - [miniprogram-ci 概述](https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html#%E6%A6%82%E8%BF%B0)


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal:  | SkillSpector: suspicious (HIGH)