/run.project.js
// run.project.js
const fs = require("fs");
const path = require("path");
const { execSync } = require("child_process");
// 1. 从命令行读取:mode = "dev" 或 "build",project 默认为 "zanGon"
const mode = process.argv[2]; // e.g. "dev" 或 "build"
const project = process.argv[3] || "zanGon"; // e.g. "jinKai",不传则用 "zanGon"
// 如果 mode 不是 dev/build,就报错并退出
if (!["dev", "build"].includes(mode)) {
console.error(
"❌ 请以 `node run.project.js dev` 或 `node run.project.js build` 方式运行;\n" +
" 如果要指定 jinKai,请写成 `node run.project.js dev jinKai` 或 `node run.project.js build jinKai`"
);
process.exit(1);
}
console.log(
`\n🚀 开始${
mode === "dev" ? "启动开发服务器" : "构建"
},项目:${project},平台:H5\n`
);
// 2. 先用 pages.<project>.json 覆盖 src/pages.json
// 优先在 src/ 文件夹下找 pages.<project>.json
const pagesSrc = path.resolve(__dirname, "src", `pages.${project}.json`);
const pagesDest = path.resolve(__dirname, "src", "pages.json");
if (fs.existsSync(pagesSrc)) {
// 确保 src/ 目录存在
const destDir = path.dirname(pagesDest);
if (!fs.existsSync(destDir)) {
fs.mkdirSync(destDir, { recursive: true });
}
fs.copyFileSync(pagesSrc, pagesDest);
console.log(`✅ 已替换 src/pages.json:${pagesSrc} → ${pagesDest}`);
} else {
console.warn(`⚠️ 找不到 src/pages.${project}.json,跳过覆盖 src/pages.json`);
}
// 3. 再用 global.<project>.js 覆盖 src/common/config/global.js
const globalSrc = path.resolve(
__dirname,
"src",
"common",
"config",
`global.${project}.js`
);
const globalDest = path.resolve(
__dirname,
"src",
"common",
"config",
"global.js"
);
if (fs.existsSync(globalSrc)) {
const destDir = path.dirname(globalDest);
if (!fs.existsSync(destDir)) {
fs.mkdirSync(destDir, { recursive: true });
}
fs.copyFileSync(globalSrc, globalDest);
console.log(
`✅ 已替换 src/common/config/global.js:${globalSrc} → ${globalDest}`
);
} else {
console.warn(
`⚠️ 找不到 src/common/config/global.${project}.js,跳过覆盖 src/common/config/global.js`
);
}
// 4. 最后,根据 mode 和 project 调用对应的 H5 脚本:npm run <mode>:h5:<project>
const command = `npm run ${mode}:h5:${project}`;
console.log(`🚧 即将执行命令:${command}\n`);
try {
execSync(command, { stdio: "inherit" });
} catch (error) {
console.error("❌ H5 构建/运行失败:", error);
process.exit(1);
}
/package.json
"scripts": {
"dev": "node run.project.js dev",
"build": "node run.project.js build",
"dev:jinKai": "node run.project.js dev jinKai",
"build:jinKai": "node run.project.js build jinKai",
"dev:h5:zanGon": "cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service serve --mode zanGon",
"build:h5:zanGon": "cross-env NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build --mode zanGon",
"dev:h5:jinKai": "cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service serve --mode jinKai",
"build:h5:jinKai": "cross-env NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build --mode jinKai"
}
// 目录结构
├── src/
│ ├── common/
│ │ └── config/
│ │ ├── global.zanGon.js
│ │ ├── global.jinKai.js
│ │ ├── global.js ← 构建时覆盖
│ ├── pages/apply
│ ├── pages/apply_jinKai
│ ├── pages.zanGon.json
│ ├── pages.jinKai.json
│ ├── pages.json ← 构建时覆盖
├── run.project.js
├── package.json