40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
import nextEnv from "@next/env";
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
|
|
const projectDir = process.cwd();
|
|
const { loadEnvConfig } = nextEnv;
|
|
|
|
loadEnvConfig(projectDir, process.env.NODE_ENV !== "production");
|
|
|
|
const parseExtent = (value) => {
|
|
if (!value) {
|
|
return [13508849, 3608036, 13555781, 3633813];
|
|
}
|
|
|
|
const extent = value.split(",").map(Number);
|
|
return extent.length === 4 && extent.every(Number.isFinite)
|
|
? extent
|
|
: [13508849, 3608036, 13555781, 3633813];
|
|
};
|
|
|
|
const config = {
|
|
BACKEND_URL: process.env.BACKEND_URL || "http://127.0.0.1:8000",
|
|
AGENT_URL: process.env.AGENT_URL || "http://127.0.0.1:8788",
|
|
MAP_URL: process.env.MAP_URL || "http://127.0.0.1:8080/geoserver",
|
|
MAP_WORKSPACE: process.env.MAP_WORKSPACE || "tjwater",
|
|
MAP_EXTENT: parseExtent(process.env.MAP_EXTENT),
|
|
NETWORK_NAME: process.env.NETWORK_NAME || "tjwater",
|
|
MAPBOX_TOKEN: process.env.MAPBOX_TOKEN || "",
|
|
TIANDITU_TOKEN: process.env.TIANDITU_TOKEN || "",
|
|
};
|
|
|
|
const outputPath = path.join(projectDir, "public", "runtime-config.js");
|
|
|
|
fs.writeFileSync(
|
|
outputPath,
|
|
`window.__TJWATER_RUNTIME_CONFIG__ = ${JSON.stringify(config)};\n`,
|
|
);
|
|
|
|
console.log(`Generated ${path.relative(projectDir, outputPath)}`);
|