Files
2025-05-19 17:29:51 +08:00

104 lines
3.3 KiB
JavaScript

const execa = require("execa");
const path = require("path");
const fs = require("fs-extra");
async function cleanDist() {
const distPath = path.resolve(__dirname, "../dist");
console.log(" -------- cleaning dist directory -------- ");
await fs.remove(distPath);
console.log(" -------- dist directory cleaned -------- ");
}
async function build() {
const entryPath = path.resolve(__dirname, "../packages/rcs_5.0");
const toolPath = path.resolve(__dirname, "../tool/app/web");
const themePath = path.resolve(__dirname, "../tool/theme/web");
const paths = [entryPath, toolPath, themePath];
for await (const curPath of paths) {
if (!(await fs.exists(path.resolve(curPath, "node_modules")))) {
try {
console.log(` -------- ${curPath} dependencies installing -------- `);
const dependencyProcess = execa(
"yarn install --registry=http://192.168.10.78:7001/",
{
cwd: curPath,
shell: true,
}
);
dependencyProcess.stdout.pipe(process.stdout);
dependencyProcess.stderr.pipe(process.stderr);
await dependencyProcess;
console.log(` -------- ${curPath} dependencies installed -------- `);
} catch (error) {
throw new Error(error);
}
}
console.log(` -------- ${curPath} build start -------- `);
const buildProcess = execa("yarn build", {
cwd: curPath,
shell: true,
});
buildProcess.stdout.pipe(process.stdout);
buildProcess.stderr.pipe(process.stderr);
await buildProcess;
console.log(` -------- ${curPath} build end -------- `);
}
}
async function generateHtml() {
const destPath = path.resolve(__dirname, "../dist/static/index.html");
const content = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ecas-vue</title>
<meta http-equiv="refresh" content="0;url=app/zh_CN/views/login/index.html">
</head>
<body>
</body>
</html>
`;
await fs.writeFile(destPath, content);
console.log(" -------- index.html generated -------- ");
}
async function generateMapping() {
console.log(" -------- generate mapping start -------- ");
const destPath = path.resolve(__dirname, "../dist/static/mapping.json");
const destPathApp = path.resolve(
__dirname,
"../dist/static/app/mapping.json"
);
const content = `
{
"route" : "..",
"master": true
}
`;
await fs.writeFile(destPath, content);
await fs.writeFile(destPathApp, content);
console.log(" -------- generate mapping end -------- ");
}
async function copyConfig2Data() {
console.log(" -------- copy config start -------- ");
const sourcePath = path.resolve(__dirname, "../config/web");
const destPath = path.resolve(__dirname, "../dist/static/app/data");
const files = ["desktop.json", "menu.json"];
for await (const file of files) {
const content = await fs.readFile(path.resolve(sourcePath, file), "utf-8");
await fs.writeFile(path.resolve(destPath, file), content);
}
console.log(" -------- copy config end -------- ");
}
(async function () {
await cleanDist();
await build();
await generateHtml();
await generateMapping();
await copyConfig2Data();
})();