Zod powered ENV parser
ZodEnv -ZodEnv - is a utility for parsing and validating environment variables based on predefined schemas using Zod.
Installation
To use this package in your Deno project, you can import it directly from the URL:
import { parse, schema } from "https://deno.land/x/zodenv/mod.ts";
Usage
Define Schemas
You can define schemas for your environment variables using the schema
object provided by this package. Here are some examples:
const envSchema = schema.config({
PORT: schema.port().optional(),
ENABLE_FEATURE: schema.boolean().default(true),
// Add more schema definitions here...
});
Parsing Environment Variables
Use the parse
function to parse your environment variables based on the defined schema:
const [parsedEnv, env] = parse(envSchema);
NOTE: ZodEnv doesn't load ENV variables from your
.env
file. Use something like dotenv for parsing.env
files.
The parsedEnv
object contains the parsed and validated environment variables
based on the schema. You can access specific values using the env
function:
env("PORT") // number | undefined
env("ENABLE_FEATURE") // boolean
Full Example
import { load } from "https://deno.land/std@0.207.0/dotenv/mod.ts";
import { schema, parse } from "https://deno.land/x/zodenv/mod.ts";
await load({
export: true,
});
const [parsedEnv, env] = parse(
schema.config({
PORT: schema.port().optional(),
ENABLE_FEATURE: schema.boolean().default(true),
// Add more schema definitions here...
})
);
env("PORT") // number | undefined
env("ENABLE_FEATURE") // boolean
Schema Definitions
The schema
object provides various methods to define schema rules for different types of environment variables:
string()
: Schema for parsing basic string values.number()
: Schema for parsing basic number values.boolean()
: Schema for parsing boolean values.emailArray()
: Schema for parsing email arrays.stringArray()
: Schema for parsing string arrays.numberArray()
: Schema for parsing number arrays.json()
: Schema for parsing JSON values.integer()
: Schema for parsing integer values.float()
: Schema for parsing float values.url()
: Schema for parsing URL values.email()
: Schema for parsing email values.port()
: Schema for parsing port values.domain()
: Schema for parsing domain values.
Testing
This package includes test cases to ensure proper parsing and validation of environment variables. To run tests, execute:
deno test
Contributing
Contributions are welcome! Feel free to open issues or submit pull requests for any improvements or additional features.
License
This package is licensed under the MIT License.