Initial commit
This commit is contained in:
75
artifacts/api-server/build.ts
Normal file
75
artifacts/api-server/build.ts
Normal file
@@ -0,0 +1,75 @@
|
||||
import path from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
import { build as esbuild } from "esbuild";
|
||||
import { rm, readFile } from "fs/promises";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
// server deps to bundle to reduce openat(2) syscalls
|
||||
// which helps cold start times without risking some
|
||||
// packages that are not bundle compatible
|
||||
const allowlist = [
|
||||
"@google/generative-ai",
|
||||
"axios",
|
||||
"connect-pg-simple",
|
||||
"cors",
|
||||
"date-fns",
|
||||
"drizzle-orm",
|
||||
"drizzle-zod",
|
||||
"express",
|
||||
"express-rate-limit",
|
||||
"express-session",
|
||||
"jsonwebtoken",
|
||||
"memorystore",
|
||||
"multer",
|
||||
"nanoid",
|
||||
"nodemailer",
|
||||
"openai",
|
||||
"passport",
|
||||
"passport-local",
|
||||
"pg",
|
||||
"stripe",
|
||||
"uuid",
|
||||
"ws",
|
||||
"xlsx",
|
||||
"zod",
|
||||
"zod-validation-error",
|
||||
];
|
||||
|
||||
async function buildAll() {
|
||||
const distDir = path.resolve(__dirname, "dist");
|
||||
await rm(distDir, { recursive: true, force: true });
|
||||
|
||||
console.log("building server...");
|
||||
const pkgPath = path.resolve(__dirname, "package.json");
|
||||
const pkg = JSON.parse(await readFile(pkgPath, "utf-8"));
|
||||
const allDeps = [
|
||||
...Object.keys(pkg.dependencies || {}),
|
||||
...Object.keys(pkg.devDependencies || {}),
|
||||
];
|
||||
const externals = allDeps.filter(
|
||||
(dep) =>
|
||||
!allowlist.includes(dep) &&
|
||||
!(pkg.dependencies?.[dep]?.startsWith("workspace:")),
|
||||
);
|
||||
|
||||
await esbuild({
|
||||
entryPoints: [path.resolve(__dirname, "src/index.ts")],
|
||||
platform: "node",
|
||||
bundle: true,
|
||||
format: "cjs",
|
||||
outfile: path.resolve(distDir, "index.cjs"),
|
||||
define: {
|
||||
"process.env.NODE_ENV": '"production"',
|
||||
},
|
||||
minify: true,
|
||||
external: externals,
|
||||
logLevel: "info",
|
||||
});
|
||||
}
|
||||
|
||||
buildAll().catch((err) => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user