@omerdev/env-guard
v1.0.0
Published
Type-safe, zero-dependency environment variable validator and loader for Node.js, Bun, and browser
Downloads
183
Maintainers
Readme
🛡 @omerdev/env-guard
Type-safe, zero-dependency environment variable validator and loader for Node.js, Bun, and browser.
⚡ Why env-guard?
- Zero dependencies (No dotenv or Zod bloat!).
- Full TypeScript inference (Exact types for
string,number,boolean,enum,json,port,url). - Auto-loads
.env,.env.local,.env.[NODE_ENV]automatically. - Clear, colored error reporting when variables are missing or malformed.
- Blazing fast startup time (< 1ms).
📦 Installation
npm install @omerdev/env-guard
# or
pnpm add @omerdev/env-guard
# or
bun add @omerdev/env-guard🚀 Quick Start
import { createEnv, env } from "@omerdev/env-guard";
export const config = createEnv({
PORT: env.port({ default: 3000 }),
NODE_ENV: env.enum(["development", "production", "test"], { default: "development" }),
DATABASE_URL: env.url(),
JWT_SECRET: env.string({ min: 16 }),
DEBUG: env.boolean({ default: false }),
RATE_LIMIT: env.number({ min: 1, max: 1000, default: 100 }),
ALLOWED_ORIGINS: env.json({ default: ["http://localhost:3000"] }),
});
// config is fully typed!
console.log(`Server starting on port ${config.PORT} in ${config.NODE_ENV} mode.`);📖 Validators
| Validator | Options | Description |
|-----------|---------|-------------|
| env.string() | min, max, pattern, default, required | Validates strings |
| env.number() | min, max, default, required | Parses and validates numbers |
| env.port() | min (1), max (65535), default (3000) | Validates network ports |
| env.boolean() | default, required | Converts true, 1, yes to boolean |
| env.enum([...]) | default, required | Ensures value belongs to allowed set |
| env.url() | default, required | Validates standard URLs |
| env.json() | default, required | Parses JSON strings into objects |
👤 Author
omerdev
📄 License
MIT
