npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

vite-plugin-validate-env

v0.1.1

Published

Vite plugin to validate environment variables against any standard schema library (Zod, Valibot, ArkType).

Readme

vite-plugin-validate-env

A Vite plugin to validate your environment variables using any standard schema library (Zod, Valibot, ArkType, etc.). It uses @standard-schema/spec under the hood to ensure full library-agnostic compatibility.

Features

  • 🛡️ Fail-Safe Validation: Validates environment variables at build & dev-time.
  • ⚙️ Agnostic: Works with Zod, Valibot, ArkType, or any Standard Schema.
  • 🛑 Fails Fast: Enforced pre-resolution execution halts the Vite process immediately with helpful error output.
  • 🪶 Zero Configuration: Seamlessly respects your existing Vite envDir and root settings.
  • 📝 Ecosystem Binding: Propagates schema defaults and data transformations directly back into import.meta.env.
  • 📦 Lightweight: Zero dependencies.

Installation

npm install vite-plugin-validate-env -D
# Ensure you have your favorite schema library installed, e.g. zod
npm install zod

Usage

First create an env schema. You can use any schema library that implements the standard @standard-schema/spec (zod, valibot, ArkType, etc).

File: src/env.ts

import { z } from "zod";

export const envSchema = z.object({
  VITE_API_URL: z.string().url(),
  VITE_APP_NAME: z.string().min(1),
  // Advanced transformations are fully supported:
  VITE_PORT: z.coerce.number().default(3000),
  VITE_FEAT_TOGGLES: z.string().transform((val) => JSON.parse(val)),
});

declare global {
  interface ImportMetaEnv extends z.infer<typeof envSchema> {}
  interface ImportMeta {
    readonly env: ImportMetaEnv;
  }
}

Then use it in your vite.config.ts:

import { defineConfig } from "vite";
import { validateEnv } from "vite-plugin-validate-env";
import { envSchema } from "./src/env";

export default defineConfig({
  plugins: [
    validateEnv(envSchema, {
      // Optional: limit extraction to specific prefixes
      // prefix: "VITE_"
    }),
  ],
});

How it works

The plugin hooks directly into Vite's config resolution step. It accurately loads the environment variables for your current mode (respecting Vite's native envDir and root configurations), and validates them against the schema you provide.

If any environment variables are mismatched or missing, the plugin will seamlessly intercept the build or dev server, print clear and pinpointed error paths directly in your console, and halt the Vite process via standard errors so your development experience remains tight and predictable.

Additionally, because we return evaluated values post-schema matching, any transformation values or default inputs automatically cascade down onto import.meta.env. Since values are injected using Vite's define, complex objects or numbers are perfectly supported without mutating process.env.

Gotchas & Behavior

  • Validation Prefix: By default, the plugin specifically looks for the VITE_ prefix (or whatever your Vite envPrefix configuration is set to) and applies schema matching exclusively to those bounds. If you want to expand schema validation to capture all OS-level environment factors, you must explicitly declare { prefix: "" } in the plugin options.

License

MIT