一、 概述
在传统开发流程中,发布小程序需要打开“微信开发者工具”手动点击上传。通过官方提供的 miniprogram-ci 工具,我们可以脱离图形界面,直接通过脚本实现代码上传,为后续接入 GitHub Actions 或 Jenkins 自动化流水线打下基础。
环境要求:
-
Node.js:v18.x+
-
包管理器:pnpm
-
项目架构:Vite + Uniapp
二、 准备工作
-
下载密钥:登录 微信公众平台,进入 开发 -> 开发管理 -> 开发设置 -> 小程序代码上传。
-
生成密钥:生成并下载
private.wx*******.key文件,放在项目根目录或push目录下。 -
配置 IP 白名单:出于安全考虑,建议关闭“IP 白名单直接上传”,或将你的开发/服务器 IP 加入白名单。
三、 安装 CI 工具
pnpm add miniprogram-ci --save-dev
四、 编写发布脚本
为了避免硬编码路径导致的错误,我们使用 path 模块自动处理绝对路径。在项目根目录下创建 push/start.js:
const ci = require('miniprogram-ci');
const path = require('path');
// 基础配置
const APPID = '你的微信小程序APPID';
const PRIVATE_KEY_PATH = path.join(process.cwd(), 'push/private.xxxx.key'); // 私钥绝对路径
const PROJECT_PATH = path.join(process.cwd(), 'dist/build/mp-weixin'); // Uniapp 编译后的产物路径
const project = new ci.Project({
appid: APPID,
type: 'miniProgram',
projectPath: PROJECT_PATH,
privateKeyPath: PRIVATE_KEY_PATH,
ignores: ['node_modules/**/*'],
});
(async () => {
console.log('正在上传至微信后台...');
try {
const uploadResult = await ci.upload({
project,
version: '1.0.0', // 此处可对接 package.json 的 version
desc: `自动发布于 ${new Date().toLocaleString()}`,
setting: {
es6: true,
minify: true,
autoPrefixWXSS: true,
},
onProgressUpdate: console.log,
});
console.log('✅ 上传结果:', uploadResult);
console.log('🚀 请前往小程序后台“开发版本”查看并提交审核。');
} catch (error) {
console.error('❌ 上传失败:', error);
process.exit(1);
}
})();
五、 项目结构参考
请确保 projectPath 指向的是包含 project.config.json 的目录。对于 Uniapp 来说,通常是编译后的 mp-weixin 文件夹。
my-vite-uniapp
├── dist # 编译输出目录
│ └── build
│ └── mp-weixin # <--- ci 工具指定的 projectPath
│ ├── app.json
│ └── ...
├── push # 脚本目录
│ ├── private.key # 密钥文件
│ └── start.js # 执行脚本
├── package.json
└── vite.config.js
六、 执行发布
在执行脚本前,请确保你已经运行了 pnpm run build:mp-weixin,保证 dist 目录下有最新的代码。
# 执行上传
node push/start.js
成功标志:
终端输出 status: 'done' 且显示包体积信息(subPackageInfo)即为成功。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











暂无评论内容