UNPKG

dotenv-local

Version:

A utility library for loading local environment variables with prioritized file loading in Node.js and Vite projects. Extends dotenv functionality for better environment management in various modes like development, production, and testing.

84 lines (82 loc) 2.8 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { loadEnv: () => loadEnv }); module.exports = __toCommonJS(src_exports); var import_dotenv = __toESM(require("dotenv"), 1); var import_path = __toESM(require("path"), 1); var getEnvFilesForMode = (mode) => { return [ `.env`, `.env.local`, `.env.${mode}`, `.env.${mode}.local` ]; }; var loadEnv = (opts = {}) => { const { mode = process.env.NODE_ENV || "production", envDir = process.cwd(), envPrefix = "APP_", envInitial = {}, removeEnvPrefix = false, encoding = "utf-8" } = opts; const envFiles = getEnvFilesForMode(mode); const prefixList = (Array.isArray(envPrefix) ? envPrefix : [envPrefix]).filter((it) => it); if (mode === "local") { throw new Error("The 'local' mode is not allowed."); } if (envPrefix.length === 0) { throw new Error("The 'envPrefix' cannot be an empty string or array."); } const envFileLoad = { ...envInitial }; envFiles.forEach((file) => { const filePath = import_path.default.join(envDir, file); import_dotenv.default.configDotenv({ path: filePath, override: true, processEnv: envFileLoad, encoding }); }); const envResult = {}; const regExp = removeEnvPrefix ? new RegExp(`^(${prefixList.join("|")})`) : false; Object.entries(envFileLoad).forEach(([key, value]) => { const hasPrefix = prefixList.some((p) => key.startsWith(p)); if (hasPrefix) { const newKey = regExp ? key.replace(regExp, "") : key; envResult[newKey] = value; } }); return envResult; }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { loadEnv });