从微信开发者工具中抽取小程序/小游戏项目代码的编译模块,实现一键构建 npm / 预览 / 上传小程序。
支持 云原生构建、GitHub Actions 等 CI/CD 平台。
使用前需要:
- 使用小程序管理员身份访问 微信公众平台 → 开发 → 开发设置
- 下载代码上传密钥
- 配置 IP 白名单(或关闭白名单限制)
通过 mode 参数指定执行模式,支持多个模式用逗号分隔:
| 模式 | 说明 |
|---|
upload | 上传代码(默认) |
preview | 预览并生成二维码 |
packNpm | 构建 NPM |
packNpmManually | 手动构建 NPM |
getDevSourceMap | 获取 SourceMap |
| 参数 | 必填 | 说明 |
|---|
appid | ✓ | 小程序 AppID |
projectPath | ✓ | 项目路径(project.config.json 所在目录) |
privateKeyPath | ✓* | 私钥文件路径 |
privateKey | ✓* | 私钥内容(与 privateKeyPath 二选一) |
type | | 项目类型:miniProgram / miniProgramPlugin / miniGame / miniGamePlugin,默认 miniProgram |
ignores | | 排除的文件规则,逗号分隔,如 test/**/*,docs/**/* |
| 参数 | 必填 | 说明 |
|---|
version | upload 时必填 | 版本号 |
desc | | 版本备注 |
robot | getDevSourceMap 时必填 | CI 机器人编号(1-30) |
threads | | 编译线程数 |
| 参数 | 说明 |
|---|
qrcodeFormat | 二维码格式:image / base64 / terminal,默认 image |
qrcodeOutputDest | 二维码保存路径,默认 ./qrcode.jpg |
pagePath | 预览页面路径 |
searchQuery | 预览页面启动参数 |
scene | 场景值,默认 1011 |
| 参数 | 说明 |
|---|
es6 | ES6 转 ES5 |
es7 | 增强编译 |
minify | 压缩所有代码 |
minifyJS | 压缩 JS |
minifyWXML | 压缩 WXML |
minifyWXSS | 压缩 WXSS |
codeProtect | 代码保护 |
autoPrefixWXSS | 样式自动补全 |
disableUseStrict | 禁用严格模式 |
compileWorklet | 编译 worklet |
useProjectConfig | 使用项目配置中的编译设置 |
| 参数 | 说明 |
|---|
packNpmIgnores | 构建 npm 时排除的包名,逗号分隔 |
packageJsonPath | packNpmManually 时必填,package.json 路径 |
miniprogramNpmDistDir | packNpmManually 时必填,构建产物目标目录 |
| 参数 | 说明 |
|---|
uploadResultOutputDest | 上传结果保存路径 |
sourceMapSavePath | SourceMap 保存路径(getDevSourceMap 时必填) |
main:
push:
- stages:
- name: miniprogram-ci
image: tencentcom/miniprogram-ci
settings:
mode: upload
appid: wxsomeappid
projectPath: ./
privateKeyPath: ./private.wxsomeappid.key
version: v1.0.0
desc: CI 自动上传
es6: true
minify: true
main:
push:
- stages:
- name: miniprogram-ci
image: tencentcom/miniprogram-ci
settings:
mode: packNpm,upload
appid: wxsomeappid
projectPath: ./
privateKeyPath: ./private.wxsomeappid.key
version: v1.0.0
main:
push:
- stages:
- name: miniprogram-ci
image: tencentcom/miniprogram-ci
settings:
mode: preview
appid: wxsomeappid
projectPath: ./
privateKeyPath: ./private.wxsomeappid.key
qrcodeOutputDest: ./preview-qrcode.jpg
name: CI
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Upload MiniProgram
uses: docker://tencentcom/miniprogram-ci:latest
env:
PLUGIN_MODE: upload
PLUGIN_APPID: wxsomeappid
PLUGIN_PROJECTPATH: ./
PLUGIN_PRIVATEKEY: ${{ secrets.MINIPROGRAM_PRIVATE_KEY }}
PLUGIN_VERSION: v1.0.0
PLUGIN_DESC: CI 自动上传
PLUGIN_ES6: true
PLUGIN_MINIFY: true
- name: Upload MiniProgram
uses: docker://tencentcom/miniprogram-ci:latest
env:
PLUGIN_APPID: wxsomeappid
PLUGIN_PROJECTPATH: ./
PLUGIN_PRIVATEKEYPATH: ./private.wxsomeappid.key
PLUGIN_VERSION: v1.0.0
- 登录 微信公众平台
- 进入 开发 → 开发管理 → 开发设置 → 小程序代码上传
- 下载代码上传密钥
- 如遇 IP 白名单问题,可选择关闭白名单限制