Status: Experimental
validatenv is a typesafe library for validating environment variables.
🌟 Motivation
Create a type-safe, straightforward, and lightweight library for validating environment variables using existing validation libraries like Valibot or Zod.
Additionally, I didn't trust existing libraries, as reading environment variables is a particularly vulnerable task.
⚖️ Alternatives
📖 Usage
import {
devDefault,
numberMiddleware,
portValidator,
validateEnv,
validateEnvVar
} from 'validatenv';
import { zValidator } from 'validation-adapters/zod';
import * as z from 'zod';
import 'dotenv/config';
const env = validateEnv(process.env, {
port: {
envKey: 'SERVER_PORT',
validator: portValidator,
defaultValue: devDefault(3000)
},
MAX_CONNECTIONS: {
validator: zValidator(z.number().min(1).max(100)),
middlewares: [numberMiddleware],
defaultValue: 10
},
NODE_ENV: 'development'
});
const apiKey = validateEnvVar(
'API_KEY',
{
validator: zValidator(z.string().min(10)),
description: 'API authentication key',
example: 'abc123xyz789'
},
process.env
);
console.log(env.port);
console.log(env.MAX_CONNECTIONS);
console.log(apiKey);