A simple easy modular isolated module type env manager to inject env keys to process.env
npm install envfenvf β Minimal, Smart, Zero-Bullshit Environment Loader.env loader designed for real-world Node.js apps β automatic environment detection, layered env loading, optional overrides, and a clean API.
.env.development.local
.env.local
.env.development
.env
load()
process.env
override: true | false)
cwd > fallback-to-module)
see(), keys())
sh
npm install envf
`
or
`sh
pnpm add envf
`
---
π― Quick Usage
$3
(recommended β handles NODE_ENV logic)
`js
import envf from "envf";
envf.autoLoad();
console.log(process.env.PORT);
console.log(process.env.DB_URL);
`
Works immediately with zero configuration.
---
$3
`js
import envf from "envf";
envf.load(".env"); // resolves path automatically
`
---
$3
`js
envf.pathLoad("/etc/app/secrets.env");
`
---
$3
`js
envf.setKey("PORT"); // one
envf.setKeys(["PORT", "DB_URL"]); // many
`
With override:
`js
envf.setKeys(["PORT", "DB_URL"], { override: true });
`
---
$3
`js
const db = envf.getKey("DB_URL");
`
---
$3
`js
envf.keys(); // show injected keys
envf.see(); // show loaded files
`
---
π§ Environment Loading Priority
When calling autoLoad(), files are loaded in this order (first found β overrides later ones):
`
.env..local
.env.local
.env.
.env
`
For example: running with:
`sh
NODE_ENV=production
`
Load order becomes:
`
.env.production.local
.env.local
.env.production
.env
`
---
π API Summary
| Method | Purpose |
| ------------------------- | ------------------------------------ |
| load(file) | Load a specific env file |
| autoLoad(options?) | Auto load layered env files |
| pathLoad(path) | Load env from an explicit path |
| setKey(key) | Inject a single key into process.env |
| setKeys(keys, options?) | Bulk inject multiple keys |
| getKey(key) | Retrieve a value |
| keys() | Show injected keys |
| see() | Show loaded files |
---
π§ Changelog
$3
* Basic .env loading
* Basic parsing and manual injection
* No override logic
* No layering or environment detection
---
$3
* Added autoLoad() with multi-file loading support
* Added path resolution (cwd β fallback)
* Added automatic injection behavior
* Added multiple env file support (.env.local, .env.NODE_ENV, etc.)
---
$3
* Added setKeys() with optional { override: boolean }
* Added getKey(), keys(), and see()` for debugging and introspection