71 lines
1.9 KiB
JavaScript
Executable File
71 lines
1.9 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
const fs = require("node:fs");
|
|
const path = require("node:path");
|
|
const process = require("node:process");
|
|
const ci = require("miniprogram-ci");
|
|
|
|
function requireEnvironment(name) {
|
|
const value = process.env[name];
|
|
if (!value) {
|
|
throw new Error(`${name} is required.`);
|
|
}
|
|
return value;
|
|
}
|
|
|
|
async function main() {
|
|
const projectPath = process.cwd();
|
|
const privateKeyPath = path.resolve(
|
|
requireEnvironment("WECHAT_CI_PRIVATE_KEY_PATH"),
|
|
);
|
|
const qrcodeOutputDest = path.resolve(
|
|
requireEnvironment("MINIAPP_QR_OUTPUT"),
|
|
);
|
|
const appid = requireEnvironment("MINIAPP_APPID");
|
|
const robot = Number.parseInt(process.env.MINIAPP_ROBOT ?? "1", 10);
|
|
const versionLabel = requireEnvironment("MINIAPP_VERSION_LABEL");
|
|
|
|
if (!fs.existsSync(path.join(projectPath, "project.config.json"))) {
|
|
throw new Error("The working directory must contain project.config.json.");
|
|
}
|
|
if (!fs.existsSync(privateKeyPath)) {
|
|
throw new Error("The WeChat code-upload key file does not exist.");
|
|
}
|
|
if (!Number.isInteger(robot) || robot < 1 || robot > 30) {
|
|
throw new Error("MINIAPP_ROBOT must be an integer from 1 to 30.");
|
|
}
|
|
|
|
const project = new ci.Project({
|
|
appid,
|
|
type: "miniProgram",
|
|
projectPath,
|
|
privateKeyPath,
|
|
ignores: ["node_modules/**/*", ".git/**/*"],
|
|
});
|
|
|
|
await ci.preview({
|
|
project,
|
|
desc: `Automated preview ${versionLabel}`.slice(0, 50),
|
|
robot,
|
|
setting: {
|
|
es6: true,
|
|
minify: true,
|
|
autoPrefixWXSS: true,
|
|
},
|
|
qrcodeFormat: "image",
|
|
qrcodeOutputDest,
|
|
onProgressUpdate: (progress) => {
|
|
if (typeof progress === "string") {
|
|
console.log(progress);
|
|
}
|
|
},
|
|
});
|
|
|
|
console.log(`Preview QR code created: ${qrcodeOutputDest}`);
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error(`Mini Program preview failed: ${error.message}`);
|
|
process.exitCode = 1;
|
|
});
|