Getting Started
Deploying your app with invalid environment variables is a hassle. This package helps you to avoid that. Inspired by t3-env which I highly recommend using if zod is already a production dependency. Otherwise, valibot may more efficient for just environment variable checking.
Installation
bun add @enalmada/env-valibot
Usage
Define your schema
import './src/env.mjs';
...
// @ts-checkimport { createEnvSchema, required, validateEnv } from 'env-valibot';import { enumType, optional, string } from 'valibot';
const serverSchema = createEnvSchema({ LOG_LEVEL: enumType(['debug', 'info', 'warn', 'error']), ANALYZE: optional(string()), DATABASE_URL: required('DATABASE_URL'),});
const clientSchema = createEnvSchema({ NEXT_PUBLIC_APP_ENV: required('NEXT_PUBLIC_APP_ENV'),});
const serverEnv = validateEnv( serverSchema, { LOG_LEVEL: process.env.LOG_LEVEL, ANALYZE: process.env.ANALYZE, DATABASE_URL: process.env.DATABASE_URL, }, process.env.SKIP_ENV_VALIDATION);
const clientEnv = validateEnv( clientSchema, { NEXT_PUBLIC_APP_ENV: process.env.NEXT_PUBLIC_APP_ENV, }, process.env.SKIP_ENV_VALIDATION);
export { serverEnv, clientEnv };
required
is a helper from this library that keeps DRY the message error returned if it doesn’t exist