-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
96 lines (80 loc) · 3.09 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
const cp = require("child_process");
const fs = require("fs");
const path = require("path");
// 获取微信开发者工具的cli指令(Mac)
const cli = "/Applications/wechatwebdevtools.app/Contents/MacOS/cli";
// 获取微信开发者工具的cli指令(Windows)
// const cli = "开发工具安装位置/cli.bat";
// 当前小程序项目地址(替换成自己的)
const projectDir = "/Users/xxxx";
// 更新信息模板
const UPDATE_MESSAGE_TEMPLATE = "fix bug";
// 定义当前需要上传的小程序
const list = [
{ appId: "xxx", appName: "xxx", version: "1.0.1" },
{ appId: "xxx", appName: "xxx", version: "1.0.2" },
];
// 窗口执行命令工具方法
function exec(cmdStr) {
return new Promise((resolve, reject) => {
cp.exec(cmdStr, function (err, stdout, stderr) {
if (err) {
reject(`执行命令失败: ${stderr}`);
} else {
resolve(stdout);
}
});
});
}
// 更新project.config.json文件中的appId
async function updateAppId(appId) {
try {
const projectPath = path.join(projectDir, "project.config.json");
let data = await fs.promises.readFile(projectPath, "utf8");
let jsonData = JSON.parse(data);
jsonData.appid = appId;
await fs.promises.writeFile(projectPath, JSON.stringify(jsonData, null, 2));
console.log(`更新 appId 为 ${appId} 成功`);
} catch (e) {
console.error("更新 project.config.json 文件失败", e);
throw new Error("更新 project.config.json 文件失败");
}
}
// 主方法,执行上传操作
async function main() {
try {
console.log("准备工作:检查是否已经登录工具...");
const isLoggedIn = await exec(`${cli} islogin`);
console.log(isLoggedIn);
console.log("准备工作:打开指定项目...");
const openProject = await exec(`${cli} open --project ${projectDir}`);
console.log(openProject);
console.log("准备工作:自动预览项目...");
await exec(`${cli} auto-preview --project ${projectDir}`);
console.log("自动预览完成");
// 批量上传小程序
for (let item of list) {
try {
console.log(`开始上传小程序:${item.appName}(appId: ${item.appId},version: ${item.version})`);
console.log("步骤 1:更新 project.config.json 中的 appId...");
await updateAppId(item.appId);
const UPDATE_MESSAGE = `版本号: ${item.version} --> ${UPDATE_MESSAGE_TEMPLATE}`;
console.log("步骤 2:上传代码审核...");
const uploadResult = await exec(
`${cli} upload --project ${projectDir} -v ${item.version} -d ${UPDATE_MESSAGE}`
);
console.log(uploadResult);
console.log(`小程序 ${item.appName}(appId: ${item.appId})上传完成`);
} catch (err) {
console.error(`上传小程序 ${item.appName}(appId: ${item.appId})时发生错误: `, err);
}
}
console.log("上传完成,退出微信开发者工具...");
const quitResult = await exec(`${cli} quit`);
console.log(quitResult);
} catch (err) {
console.error("执行上传过程中出现了问题: ", err);
}
}
// 执行命令
main();