前言
在微信小程序开发过程中,实现自动化发布可以极大提高开发效率和质量。miniprogram-ci 是微信官方提供的一个命令行工具,用于实现微信小程序的自动化构建和发布。本文将详细介绍如何配置和使用 miniprogram-ci 实现微信小程序的自动化发布。
准备工作
1. 安装依赖
需要安装 miniprogram-ci 和 simple-git 两个 npm 包:
npm install miniprogram-ci simple-git --save-dev
然后使用微信小程序 npm构建功能,
2. 配置项目
确保项目根目录结构如下:
project-root/ => 项目根目录
private.小程序appid.key => 小程序上传密钥文件,可以在小程序管理后台 > 开发管理 > 小程序代码上传中直接下载
upload.js => 编写上传脚本
miniprogram/ => 小程序目录
package.json => 项目配置文件
project-root/
|-- conf/
| |-- private.小程序appid.key
| |-- upload.js
|-- miniprogram/
|-- package.json
编写上传脚本
在 upload.js 文件并添加以下内容:
const ci = require('miniprogram-ci');
const path = require('path');
const simpleGit = require('simple-git');
const git = simpleGit();
const project = new ci.Project({
appid: '小程序appid',
type: 'miniProgram',
projectPath: path.join(process.cwd(), 'miniprogram'), // 确保指向 miniprogram 目录
privateKeyPath: path.join(process.cwd(), 'conf/private.小程序appid.key'), // 修改此处
ignores: ['node_modules/**/*'],
});
(async () => {
try {
// 获取当前 git HEAD 的短ID
const shortCommitId = await new Promise((resolve, reject) => {
git.revparse(['--short', 'HEAD'], (err, result) => {
if (err) {
console.error('Failed to retrieve short ID of HEAD:', err);
reject(err);
return;
}
resolve(result.trim());
});
});
console.log('Short ID of HEAD:', shortCommitId);
// 获取最新的提交信息
const log = await git.log(['-1']);
const commitMessage = log.latest.message;
const commitHash = log.latest.hash;
console.log('Latest commit message:', commitMessage);
// 获取最新的标签信息
const tags = await git.tags();
const versionTag = tags.latest || '0.1.0';
console.log('Latest version tag:', versionTag);
// 构建版本号
const shortCommitHash = commitHash.substring(0, 7);
const version = `${versionTag}.${shortCommitId}`;
const desc = commitMessage;
console.log('上传版本号:', version);
console.log('上传描述:', desc);
// 执行上传操作
console.log('开始上传...');
const uploadResult = await ci.upload({
project,
version,
desc,
setting: {
es6: true,
minify: true,
},
onProgressUpdate: console.log,
});
console.log('上传结果:', uploadResult);
process.exit();
} catch (error) {
console.error('上传失败:', error);
process.exit(1);
}
})();
详细步骤解析
1. 初始化 miniprogram-ci 项目
在脚本中,通过 ci.Project 方法初始化一个项目对象,传入 appid、type、projectPath、privateKeyPath 和 ignores 等参数。
2. 获取 Git 信息
使用 simple-git 库获取当前的 Git 提交信息,包括短提交 ID、提交信息和提交哈希。还获取最新的标签信息用于版本号构建。
3. 构建版本号和描述
结合最新的标签信息和短提交 ID,构建上传时使用的版本号和描述信息。这样可以确保每次上传的版本号唯一且可追溯。
4. 执行上传操作
调用 ci.upload 方法上传小程序代码,并传入项目对象、版本号、描述和上传设置(如启用 ES6 和代码压缩)。在上传过程中,可以通过 onProgressUpdate 回调函数获取上传进度。
修改package.json
{
"name": "miniprogram-preview",
"version": "0.0.1",
"private": true,
"scripts": {
"upload": "node conf/upload.js"
},
"dependencies": {
"miniprogram-ci": "^1.0.94"
},
"wx": {
"wxVersion": "1.1.9",
"wxDesc": "测试一下"
}
}
执行脚本
npm run upload
完成小程序上传后,可在小程序管理后台看到上传的版本
总结
通过以上步骤,我们实现了微信小程序的自动化发布过程,包括获取 Git 信息、构建版本号和项目说明、配置 miniprogram-ci 并执行上传。希望本文能帮助开发者提高微信小程序的发布效率,实现持续集成和自动化部署。
后记
后续可以结合阿里云云效 Flow 等工具实现 Git 提交触发一键发布,将整个流程自动化,进一步提高开发和发布效率。