chore: 版本规范落地——本次发布定版 v1.2.0(基线为线上 v1.1.5),上传脚本版本号以 manifest 为唯一事实来源,新增 docs/版本规则.md

This commit is contained in:
2026-09-13 10:34:16 +08:00
parent 4f48b324c5
commit 47d3ea8bfa
5 changed files with 78 additions and 7 deletions
+45 -4
View File
@@ -1,10 +1,51 @@
/**
* 微信小程序上传脚本
*
* 用法:
* node scripts/upload-wx.js # 版本号自动取 client/src/manifest.json 的 versionName
* node scripts/upload-wx.js --desc "修复描述"
* node scripts/upload-wx.js --version 1.2.1 # 必须与 manifest 一致,否则拒绝上传
*
* 版本规则见 docs/版本规则.md:
* 主版本=产品形态重构;次版本=新功能模块;修订号=修复与微调
*/
const ci = require('miniprogram-ci');
const path = require('path');
const fs = require('fs');
function parseArgs(argv) {
const out = {};
for (let i = 0; i < argv.length; i++) {
const a = argv[i];
if (a.startsWith('--')) {
const key = a.slice(2);
const next = argv[i + 1];
if (next && !next.startsWith('--')) { out[key] = next; i++; }
else out[key] = true;
} else {
// 兼容位置参数:第一个是版本,第二个是描述
if (out.version === undefined) out.version = a;
else if (out.desc === undefined) out.desc = a;
}
}
return out;
}
(async () => {
const version = process.argv[2] || '1.0.0';
const desc = process.argv[3] || 'default';
const args = parseArgs(process.argv.slice(2));
const manifest = JSON.parse(
fs.readFileSync(path.resolve(__dirname, '../client/src/manifest.json'), 'utf-8')
);
const manifestVersion = manifest.versionName;
// 版本号唯一事实来源是 manifest.json;显式传参必须一致(防止包与元数据漂移)
if (args.version && args.version !== manifestVersion) {
console.log(`ERROR: --version ${args.version} 与 manifest.json versionName ${manifestVersion} 不一致。版本号请改 manifest.json(唯一事实来源)。`);
process.exit(1);
}
const version = manifestVersion;
const desc = args.desc || 'release';
const projectPath = path.resolve(__dirname, '../client/dist/build/mp-weixin');
const project = new ci.Project({
@@ -16,7 +57,7 @@ const fs = require('fs');
});
console.log('START_UPLOAD');
console.log('version=' + version + ' desc=' + desc);
console.log(`version=${version} desc=${desc}`);
const uploadResult = await ci.upload({
project,
@@ -31,4 +72,4 @@ const fs = require('fs');
})().catch(err => {
console.log('ERROR:' + err.message);
process.exit(1);
});
});