@opengis/fastify-table
Version:
core-plugins
37 lines (36 loc) • 1.59 kB
JavaScript
/* eslint-disable no-console */
import dotenv from "dotenv";
dotenv.config(); // ! load .env (workaround for node)
import { existsSync, readFileSync } from "node:fs";
import unflattenObject from "./server/plugins/util/funcs/unflattenObject.js";
const fileName = ["config.json", "/data/local/config.json"].find((el) => existsSync(el) ? el : null);
const config = fileName ? JSON.parse(readFileSync(fileName, "utf-8")) : {};
const { skipKeys = ["windir"] } = config;
Object.assign(config, {
storageList: {},
allTemplates: config?.allTemplates || {},
env: process.env.NODE_ENV,
port: config.port || process.env.PORT,
});
if (existsSync(`.env.local`)) {
dotenv.config({ path: `.env.local` }); // ! load .env.local
}
if (process.env?.NODE_ENV && existsSync(`.env.${process.env.NODE_ENV}`)) {
dotenv.config({ path: `.env.${process.env.NODE_ENV}` }); // ! load .env.{{production}} etc.
}
if (process.env?.NODE_ENV && existsSync(`.env.${process.env.NODE_ENV}.local`)) {
dotenv.config({ path: `.env.${process.env.NODE_ENV}.local` }); // ! load .env.{{production}}.local etc.
}
function loadEnvConfig() {
if (config.trace) {
console.log(Object.keys(process.env));
}
const configKeys = Object.keys(process.env)
.filter((key) => !key.startsWith("npm_") &&
!skipKeys.includes(key) &&
(key.charAt(0) === key.charAt(0)?.toLowerCase?.() || key.includes(".")))
.reduce((acc, curr) => ({ ...acc, [curr]: process.env[curr] }), {});
Object.assign(config, unflattenObject(configKeys));
}
loadEnvConfig();
export default config;