2026-03-13 17:07:27 +08:00
|
|
|
|
const { build } = require("esbuild");
|
2026-04-03 10:07:09 +08:00
|
|
|
|
const fs = require("fs");
|
|
|
|
|
|
const path = require("path");
|
|
|
|
|
|
const dotenv = require("dotenv");
|
2026-03-13 17:07:27 +08:00
|
|
|
|
|
|
|
|
|
|
// mongodb 的可选原生模块:打包时标记为 external,运行时不需要
|
|
|
|
|
|
const mongodbOptionals = [
|
|
|
|
|
|
"kerberos",
|
|
|
|
|
|
"mongodb-client-encryption",
|
|
|
|
|
|
"@mongodb-js/zstd",
|
|
|
|
|
|
"@aws-sdk/credential-providers",
|
|
|
|
|
|
"snappy",
|
|
|
|
|
|
"gcp-metadata",
|
|
|
|
|
|
"aws4",
|
|
|
|
|
|
"socks",
|
|
|
|
|
|
];
|
|
|
|
|
|
|
2026-04-03 10:07:09 +08:00
|
|
|
|
function cleanDist() {
|
|
|
|
|
|
const distDir = path.resolve(__dirname, "dist");
|
|
|
|
|
|
fs.rmSync(distDir, { recursive: true, force: true });
|
|
|
|
|
|
fs.mkdirSync(distDir, { recursive: true });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function getEmbeddedEnvBanner() {
|
|
|
|
|
|
const envPath = path.resolve(__dirname, ".env.gk");
|
|
|
|
|
|
const envRaw = fs.existsSync(envPath) ? fs.readFileSync(envPath, "utf8") : "";
|
|
|
|
|
|
const parsed = envRaw ? dotenv.parse(envRaw) : {};
|
|
|
|
|
|
const payload = JSON.stringify(parsed);
|
|
|
|
|
|
|
|
|
|
|
|
return [
|
|
|
|
|
|
"(() => {",
|
|
|
|
|
|
` const embeddedEnv = ${payload};`,
|
|
|
|
|
|
" if (!process.env.NODE_ENV) process.env.NODE_ENV = 'gk';",
|
|
|
|
|
|
" for (const [key, value] of Object.entries(embeddedEnv)) {",
|
|
|
|
|
|
" if (process.env[key] == null || process.env[key] === '') process.env[key] = value;",
|
|
|
|
|
|
" }",
|
|
|
|
|
|
"})();",
|
|
|
|
|
|
].join("\n");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
cleanDist();
|
|
|
|
|
|
|
2026-03-13 17:07:27 +08:00
|
|
|
|
build({
|
2026-04-08 17:46:49 +08:00
|
|
|
|
entryPoints: ["./transfer.js", "./corpid.js", "./replace-qrcode-url.js"],
|
2026-04-03 10:07:09 +08:00
|
|
|
|
outdir: "./dist",
|
|
|
|
|
|
entryNames: "[name]",
|
2026-03-13 17:07:27 +08:00
|
|
|
|
platform: "node",
|
|
|
|
|
|
bundle: true,
|
|
|
|
|
|
minify: false,
|
|
|
|
|
|
sourcemap: false,
|
|
|
|
|
|
target: ["node18"],
|
|
|
|
|
|
external: mongodbOptionals,
|
2026-04-03 10:07:09 +08:00
|
|
|
|
banner: {
|
|
|
|
|
|
js: getEmbeddedEnvBanner(),
|
|
|
|
|
|
},
|
2026-03-13 17:07:27 +08:00
|
|
|
|
}).catch(() => process.exit(1));
|