0.4.2 • Published 1 year ago

validate-env-vars v0.4.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

license latest last commit npm downloads \ Coverage Code Quality CodeQL

Installation

Using npm:

npm install validate-env-vars --save-dev

Usage Examples

Create an executable JS file to check an .env file against a Zod schema:

#!/usr/bin/env node

import validateEnvVars, {
	envEnum,
	envString,
	envNonEmptyString,
} from 'validate-env-vars';

const envSchema = envObject({
	NODE_ENV: envEnum(['development', 'production', 'test']),
	API_BASE: envString().url(),
	GITHUB_USERNAME: envNonEmptyString(),
});

validateEnvVars({ schema: envSchema });

You may use the predefined env* functions, or create your own using Zod


Programmatically check an .env.production file against a Zod schema:

import validateEnvVars, {
    envEnum,
    envString,
    envNonEmptyString,
} from 'validate-env-vars';

const envSchema = envObject({
	NODE_ENV: envEnum(['development', 'production', 'test']),
	API_BASE: envString().url(),
	GITHUB_USERNAME: envNonEmptyString(),
});

const prefilight() => {
    try {
        validateEnvVars({ schema: envSchema, envPath: '.env.production' })
        // ... other code
    }
    catch (error) {
        console.error(error);
        // ... other code
    }
}

Check env vars before Vite startup and build:

  1. Define a Zod schema in a .ts file at the root of your project
import validateEnvVars, {
    envEnum,
    envString,
    envNonEmptyString,
} from 'validate-env-vars';

const envSchema = envObject({
	NODE_ENV: envEnum(['development', 'production', 'test']),
	VITE_API_BASE: envString().url(),
	VITE_GITHUB_USERNAME: envNonEmptyString(),
});

// make the type of the environment variables available globally
declare global {
    type Env = z.infer<typeof envSchema>;
}

export default envSchema;
  1. Import validateEnvVars and your schema and add a plugin to your Vite config to call validateEnvVars on buildStart
import { defineConfig } from 'vitest/config';
import envConfigSchema from './env.config';
import validateEnvVars from 'validate-env-vars';

export default defineConfig({
  plugins: [
    {
      name: 'validate-env-vars',
      buildStart: () => validateEnvVars({ schema: envConfigSchema }),
    },
    // other plugins...
  ],
  // other options...
  1. Enable typehints and intellisense for the environment variables in your vite-env.d.ts
/// <reference types="vite/client" />

interface ImportMetaEnv extends globalThis.Env {}

interface ImportMeta {
	readonly env: ImportMetaEnv;
}
  1. Add your schema configuration file to your tsconfig's include

Tips:

  • If you don't have a .env file, you can pass an empty file. This is useful for testing and CI/CD environments, where environment variables may be set programmatically.

Config Options

OptionTypeDescriptionDefault
schemaEnvObjectThe schema to validate against
envPath (optional)stringThe path to the .env file.env
exitOnError (optional)booleanWhether to exit the process or throw if validation failsfalse
logVars (optional)booleanWhether to output successfully parsed variables to the consoletrue
0.4.2

1 year ago

0.4.0-alpha.14

1 year ago

0.4.0-alpha.15

1 year ago

0.4.0-alpha.16

1 year ago

0.4.0-alpha.17

1 year ago

0.4.0-alpha.13

1 year ago

0.4.1

1 year ago

0.4.0

1 year ago

0.4.0-alpha.4

1 year ago

0.4.0-alpha.3

1 year ago

0.4.0-alpha.2

1 year ago

0.4.0-alpha.1

1 year ago

0.4.0-alpha.0

1 year ago

0.4.0-alpha.9

1 year ago

0.4.0-alpha.8

1 year ago

0.4.0-alpha.7

1 year ago

0.4.0-alpha.6

1 year ago

0.4.0-alpha.5

1 year ago

0.4.0-alpha.10

1 year ago

0.4.0-alpha.11

1 year ago

0.4.0-alpha.12

1 year ago

0.3.11

1 year ago

0.3.10

1 year ago

0.3.9

1 year ago

0.3.8

1 year ago

0.3.7

1 year ago

0.2.4-dev-17

1 year ago

0.2.4-dev-16

1 year ago

0.2.4-dev-19

1 year ago

0.2.4-dev-13

1 year ago

0.2.4-dev-12

1 year ago

0.2.4-dev-15

1 year ago

0.2.4-dev-14

1 year ago

0.2.4-dev-11

1 year ago

0.2.4-dev-10

1 year ago

0.2.4-dev-4

1 year ago

0.2.4-dev-3

1 year ago

0.3.0

1 year ago

0.2.4-dev-6

1 year ago

0.2.4-dev-5

1 year ago

0.2.4-dev-8

1 year ago

0.2.4-dev-7

1 year ago

0.2.4-dev-9

1 year ago

0.3.6

1 year ago

0.2.4-dev-23

1 year ago

0.3.2

1 year ago

0.2.4-dev-20

1 year ago

0.2.4-dev-0

1 year ago

0.3.1

1 year ago

0.3.4

1 year ago

0.2.4-dev-22

1 year ago

0.2.4-dev-2

1 year ago

0.3.3

1 year ago

0.2.4-dev-21

1 year ago

0.2.4-dev-1

1 year ago

0.2.3

2 years ago

0.2.4

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.14

2 years ago