Load environment variables from .env files. Decode secret values from AWS Secrets Manager, Google Secret Manager, and other sources.
npm install envarsenvars — environment variables loader



Loads environment variables for the target environment from .env files using dotenv; supports cloud secret providers such as Google Secret Manager.
By default it attempts to load .env files from the current working directory using the following naming convention (learn more):
``bash`
.env.
.env.
.env.local # Local overrides
.env # Default settings
Created and diligently upheld with the generous backing of these exceptional companies:
`bashwith NPM
$ npm install envars --save-dev
Usage
`dotenv
.env
Environment variables for the local development environment
NOTE: Secret values need to follow this format:
secret://[provider]/[resource]
GOOGLE_CLOUD_PROJECT=example
DB_PASSWORD=secret://google/projects/example/secrets/db-password/latest
``ts
// core/env.ts
import { cleanEnv, str } from "envalid";/**
* Sanitized and validated environment variables.
* @see https://github.com/af/envalid#readme
*/
export default cleanEnv(process.env, {
GOOGLE_CLOUD_PROJECT: str(),
DB_PASSWORD: str(),
});
``ts
import { loadEnv } from "envars";const [env] = await loadEnv("production", {
root: ".",
schema: "./core/env.ts",
mergeTo: process.env,
});
`API
$3
$3
Type:
string (optional)
Default: undefined
Example: production, development, staging, etc.$3
Type:
object (optional)#### root
Type:
string (optional)
Default: . (current working directory).The root directory where it looks for
.env files.#### schema
Type:
string (optional)
Default: undefined
Example: ./core/env.tsThe path to the TypeScript or JavaScript module exporting a sanitized environment object. Example:
`ts
import { cleanEnv, str } from "envalid";export default cleanEnv(process.env, {
GOOGLE_CLOUD_PROJECT: str(),
DB_PASSWORD: str(),
});
`Or, another example using Zod:
`ts
import { z } from "zod";export const env = z
.object({
GOOGLE_CLOUD_PROJECT: z.string(),
DB_PASSWORD: z.string(),
})
.parse(process.env);
`#### files
Type:
string[] (optional)
Default: [The list of file patterns where to look for
.env files.#### mergeTo
Type:
object (optional)
Default: undefined
Example: process.envThe object where to merge the loaded environment variables.
Usage with Vite
`ts
import { defineConfig } from "vite";
import { loadEnv } from "envars";export default defineConfig(async ({ mode }) => {
const [env] = await loadEnv(mode, {
root: "../",
schema: "./core/env.ts",
mergeTo: process.env,
});
return {
build: {
ssr: "index.ts",
target: "esnext",
sourcemap: true,
},
};
});
`$3
- https://cloud.google.com/secret-manager/docs
Backers 💰
Related Projects
- React Starter Kit — front-end boilerplate (TypeScript, React, Material UI, Vite)
- Full-stack Starter Kit — monorepo boilerplate (TypeScript, Vite, GraphQL.js, React, and Relay)
How to Contribute
Please fork the repo, create a PR, or send me a message on Discord (
@koistya).`bash
$ git clone https://github.com//envars.git
$ cd ./envars
$ corepack enable
$ yarn test
``Copyright © 2021-present Kriasoft. This source code is licensed under the MIT license found in the
LICENSE file.
---
Made with ♥ by Konstantin Tarkus (@koistya, blog)
and contributors.