Skip to main content
Home

Built and signed on GitHub Actions

Deploying your app with invalid environment variables is a hassle. This package helps you to avoid that.

This package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers
This package works with Cloudflare Workers
This package works with Node.js
This package works with Deno
This package works with Bun
This package works with Browsers
JSR Score
100%
Published
7 months ago (0.7.2)

Typesafe Envs made Simple

Deploying your app with invalid environment variables is a hassle. This package helps you to avoid that.

Usage

For full documentation, see https://env.t3.gg

This package supports the full power of Valibot, meaning you can use transforms and default values.

Define your schema

// src/env.mjs
import { createNextjsEnv } from "@nurliman/env-valibot";
import * as v from "@valibot/valibot";

export const env = createNextjsEnv({
  // Serverside Environment variables, not available on the client.
  // Will throw if you access these variables on the client.
  server: {
    DATABASE_URL: v.pipe(v.string(), v.url()),
    OPEN_AI_API_KEY: v.pipe(v.string(), v.minLength(1)),
  },

  // Environment variables available on the client (and server).
  // 💡 You'll get type errors if these are not prefixed with NEXT_PUBLIC_.
  client: {
    NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY: v.pipe(v.string(), v.minLength(1)),
  },

  // Due to how Next.js bundles environment variables on Edge and Client,
  // we need to manually destructure them to make sure all are included in bundle.
  // 💡 You'll get type errors if not all variables from `server` & `client` are included here.
  runtimeEnv: {
    DATABASE_URL: process.env.DATABASE_URL,
    OPEN_AI_API_KEY: process.env.OPEN_AI_API_KEY,
    NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY:
      process.env.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY,
  },
});

Use the schema in your app with autocompletion and type inference

// src/app/hello/route.ts
import { env } from "../env.mjs";

export const GET = (req: Request) => {
  const DATABASE_URL = env.DATABASE_URL;
  // use it...
};
Built and signed on
GitHub Actions

New Ticket: Report package

Please provide a reason for reporting this package. We will review your report and take appropriate action.

Please review the JSR usage policy before submitting a report.

Add Package

deno add jsr:@nurliman/env-valibot

Import symbol

import * as env_valibot from "@nurliman/env-valibot";
or

Import directly with a jsr specifier

import * as env_valibot from "jsr:@nurliman/env-valibot";

Add Package

pnpm i jsr:@nurliman/env-valibot
or (using pnpm 10.8 or older)
pnpm dlx jsr add @nurliman/env-valibot

Import symbol

import * as env_valibot from "@nurliman/env-valibot";

Add Package

yarn add jsr:@nurliman/env-valibot
or (using Yarn 4.8 or older)
yarn dlx jsr add @nurliman/env-valibot

Import symbol

import * as env_valibot from "@nurliman/env-valibot";

Add Package

vlt install jsr:@nurliman/env-valibot

Import symbol

import * as env_valibot from "@nurliman/env-valibot";

Add Package

npx jsr add @nurliman/env-valibot

Import symbol

import * as env_valibot from "@nurliman/env-valibot";

Add Package

bunx jsr add @nurliman/env-valibot

Import symbol

import * as env_valibot from "@nurliman/env-valibot";