@roninjin10/typesafe-env
v0.0.1
Published
A light wrapper around zod for validating environment variables
Downloads
2
Readme
typesafe-env
Simple package for creating typesafe envs. It is a very light wrapper around zod
Getting started
- Install typesafe-env
npm i -D @roninjin10/typesafe-env
- Install peer dependencies if not already installed
npm i -D @roninjin10/typesafe-env
- Create a config for your env variables
const validators = {
// Provide a description if you want to automatically generate documentation
SERVICE_URI: z.string().url().describe('The URI to connect to ')
HOST: z.string().default('localhost').describe(`HOST server should connect to
Must be set to 0.0.0.0 in a docker container`),
PORT: z
.string()
.transform((val) => Number.parseInt(val))
.default('7300')
.describe('PORT server should connect to'),
}
- Parse process.env (or any other object)
import { typesafeEnv } from '@roninjin10/typesafe-env'
export const env = typesafeEnv(validators, process.env)
env.PORT // type number
env.HOST // type string
// @ts-expect-error
env.NOT_ON_ENV
You now have an env object that will be 100% typesafe with autocompletion in your editor! This will defend against misconfigurations.
Automatically generate documentation
typesafe-env provides an easy way of turning your env validators into documentation
envSchema.ts
import { validators } from './env'
import { generateEnvDocs } from '@roninjin10/typesafe-env'
console.log(generateEnvDocs)
Then if you run ts-node envSchema
you will get this printed to console
Environment Variables schema
SERVICE_URI
The URI to connect to
HOST
HOST server should connect to
PORT
PORT server should ocnnect to
Contributing
All of @roninjin10 is open to contributions! To get started follow these steps
- Clone the repo
- Install pnpm
npm install -g pnpm
- Install node modules
pnpm install
- Cd to typesafe-env
cd packages/typesafe-env
- Run the tests
pnpm test
- Run the build
pnpm build