UNPKG

@opengis/fastify-table

Version:

core-plugins

37 lines (36 loc) 1.59 kB
/* 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;