venl
v1.0.4
Published
A modern, zero-dependency environment loader for Node.js using .venl files with schema validation, auto-casting, NODE_VENL modes, and a built-in CLI.
Downloads
217
Maintainers
Readme
venl
A modern, zero-dependency environment loader for Node.js, using .venl files instead of .env.
venl automatically loads environment files, validates them, casts values, lets you control modes with NODE_VENL, and even includes a CLI for running apps with configuration pre-loaded.
🚀 Features
- 🔄 Auto-loads
.venl,.venl.local, and.venl.{development|production|test} - 🌍 Controlled by
NODE_VENL(notNODE_ENV) - 🧩 Supports schema validation (
string,number,boolean, optional fields) - 🔢 Optional automatic type casting
- 🧪 TypeScript support out of the box
- ♻ Hot reloading (
venl.reload()) - 🔥 CLI:
venl run node app.js - 📦 Zero dependencies
- 🧹 Clean, modern API
📦 Installation
npm install venl📁 File Structure Used by venl
venl automatically loads files in this priority:
.venl
.venl.development (if NODE_VENL=development)
.venl.production (if NODE_VENL=production)
.venl.test (if NODE_VENL=test)
.venl.local (always loaded last)Highest priority → .venl.local
🎉 Basic Usage
Create a .venl file:
PORT=3000
DEBUG=true
API_KEY="ABC123"Load it:
import venl from "venl";
venl.load();
console.log(venl.PORT);
console.log(venl.DEBUG);
console.log(venl.API_KEY);📦 Usage in CommonJS and ESM
venl works in both ES modules and CommonJS.
ES Modules (default)
import venl from "venl";
venl.load();
console.log(venl.PORT);
console.log(venl.DEBUG);
console.log(venl.API_KEY); CommonJS (require)
const venl = require("venl");
venl.load();
console.log(venl.PORT);
console.log(venl.DEBUG);
console.log(venl.API_KEY);🌍 Using NODE_VENL Modes
Set the mode:
NODE_VENL=production node app.jsThis loads:
.venl
.venl.production
.venl.local🧩 Schema Validation
import venl from "venl";
venl.schema = {
PORT: "number",
SECRET_KEY: "string?",
DEBUG: "boolean?"
};
venl.strict = true;
venl.load();If a required variable is missing → throws an error.
🔢 Auto-Casting
venl.autoCast = true;
venl.load();This converts:
"true" → true
"false" → false
"123" → 123📁 Custom File List
venl.envFiles = [".config.venl", ".secrets.venl"];
venl.load();♻ Reloading
venl.reload();🖥️ CLI Usage
Run any command with venl pre-loaded:
venl run node app.jsExample:
venl run nodemon server.js🛠 package.json Configuration
To enable the CLI and ESM/CommonJS support, package.json includes:
{
"type": "module",
"main": "index.cjs",
"exports": {
"import": "./src/index.js",
"require": "./index.cjs"
},
"bin": {
"venl": "bin/venl.js"
}
}"bin"
Creates the terminal command venl.
"type": "module"
Enables ES module syntax (import/export).
"exports" and "main"
Allow both:
import venl from "venl";const venl = require("venl");
📘 TypeScript Support
Included automatically:
import venl from "venl";❤️ License
MIT
