60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
import { existsSync, readFileSync } from "node:fs";
|
|
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
const workspaceRoot = path.resolve(__dirname, "..");
|
|
|
|
// Load the single repo-root `.env` into process.env for dev/build/start.
|
|
//
|
|
// This must live in next.config (not `node --env-file=...`): Next forwards the
|
|
// original node CLI flags to its worker processes via NODE_OPTIONS, where
|
|
// `--env-file`/`--env-file-if-exists` are rejected. process.env set here is
|
|
// inherited by the server workers instead.
|
|
//
|
|
// Existing process env always wins (e.g. Coolify or `docker --env-file`), and
|
|
// unknown keys (e.g. SERVER_TLS) are loaded too so the runtime entrypoint and
|
|
// the rest of the app can read them.
|
|
const envPath = path.join(workspaceRoot, ".env");
|
|
if (existsSync(envPath)) {
|
|
for (const raw of readFileSync(envPath, "utf8").split("\n")) {
|
|
const line = raw.trim();
|
|
if (!line || line.startsWith("#")) continue;
|
|
const eq = line.indexOf("=");
|
|
if (eq === -1) continue;
|
|
const key = line.slice(0, eq).trim();
|
|
let value = line.slice(eq + 1).trim();
|
|
if (
|
|
(value.startsWith('"') && value.endsWith('"')) ||
|
|
(value.startsWith("'") && value.endsWith("'"))
|
|
) {
|
|
value = value.slice(1, -1);
|
|
}
|
|
if (key && !(key in process.env)) {
|
|
process.env[key] = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
/** @type {import('next').NextConfig} */
|
|
const nextConfig = {
|
|
reactCompiler: true,
|
|
// Keep the pure-JS Postgres driver external so Turbopack doesn't re-bundle it.
|
|
serverExternalPackages: ["pg"],
|
|
compiler: {
|
|
removeConsole: process.env.NODE_ENV === "production",
|
|
},
|
|
// Allow LAN / custom host access (e.g. http://h.lizhao.net:3000) in `next dev`.
|
|
allowedDevOrigins: ["h.lizhao.net", "tradeac-dev.h.lizhao.net"],
|
|
experimental: {
|
|
serverActions: {
|
|
allowedOrigins: ["h.lizhao.net", "tradeac-dev.h.lizhao.net", "localhost", "127.0.0.1"],
|
|
},
|
|
},
|
|
turbopack: {
|
|
root: workspaceRoot,
|
|
},
|
|
};
|
|
|
|
export default nextConfig;
|