97 lines
2.3 KiB
TypeScript
97 lines
2.3 KiB
TypeScript
import esbuild from "esbuild";
|
|
import fs from "fs";
|
|
import path from "path";
|
|
|
|
// 打包默认使用 prod 环境变量
|
|
if (!process.env.NODE_ENV) {
|
|
process.env.NODE_ENV = "prod";
|
|
}
|
|
|
|
// 自动创建 env 目录和环境变量文件(.gitignore 可能忽略了这些文件)
|
|
const envDir = path.resolve("env");
|
|
const envFile = path.join(envDir, `.env.${process.env.NODE_ENV}`);
|
|
if (!fs.existsSync(envDir)) {
|
|
fs.mkdirSync(envDir, { recursive: true });
|
|
}
|
|
if (!fs.existsSync(envFile)) {
|
|
const defaultEnv = `NODE_ENV=${process.env.NODE_ENV}\nPORT=10588\nOSSURL=http://127.0.0.1:10588/\n`;
|
|
fs.writeFileSync(envFile, defaultEnv, "utf8");
|
|
console.log(`📄 已自动创建环境变量文件: ${envFile}`);
|
|
}
|
|
|
|
const pkg = JSON.parse(fs.readFileSync(path.resolve("package.json"), "utf8"));
|
|
|
|
const external = [
|
|
"electron",
|
|
"@huggingface/transformers",
|
|
"onnxruntime-node",
|
|
"vm2",
|
|
"sqlite3",
|
|
"better-sqlite3",
|
|
"mysql",
|
|
"mysql2",
|
|
"pg",
|
|
"pg-query-stream",
|
|
"oracledb",
|
|
"tedious",
|
|
"mssql",
|
|
];
|
|
|
|
// 后端服务打包配置
|
|
const appBuildConfig: esbuild.BuildOptions = {
|
|
entryPoints: ["src/app.ts"],
|
|
bundle: true,
|
|
minify: false,
|
|
format: "cjs",
|
|
allowOverwrite: true,
|
|
outfile: `data/serve/app.js`,
|
|
platform: "node",
|
|
target: "esnext",
|
|
tsconfig: "./tsconfig.json",
|
|
alias: {
|
|
"@": "./src",
|
|
},
|
|
sourcemap: false,
|
|
external,
|
|
define: {
|
|
__APP_VERSION__: JSON.stringify(pkg.version),
|
|
},
|
|
};
|
|
|
|
// Electron 主进程打包配置
|
|
const mainBuildConfig: esbuild.BuildOptions = {
|
|
entryPoints: ["scripts/main.ts"],
|
|
bundle: true,
|
|
minify: false,
|
|
format: "cjs",
|
|
outfile: `build/main.js`,
|
|
allowOverwrite: true,
|
|
platform: "node",
|
|
target: "esnext",
|
|
tsconfig: "./tsconfig.json",
|
|
alias: {
|
|
"@": "./src",
|
|
},
|
|
sourcemap: false,
|
|
external,
|
|
define: {
|
|
__APP_VERSION__: JSON.stringify(pkg.version),
|
|
},
|
|
};
|
|
|
|
(async () => {
|
|
try {
|
|
console.log("🔨 开始构建...\n");
|
|
|
|
// 并行构建
|
|
await Promise.all([esbuild.build(appBuildConfig), esbuild.build(mainBuildConfig)]);
|
|
|
|
console.log("✅ 后端服务构建完成: build/app.js");
|
|
console.log("✅ Electron主进程构建完成: build/main.js");
|
|
console.log("\n🎉 所有构建任务完成!\n");
|
|
} catch (err) {
|
|
console.error("❌ 构建失败:", err);
|
|
process.exit(1);
|
|
}
|
|
})();
|