NPM Star
Collections
  1. Home
  2. Compare
  3. dotenv vs env-cmd
NPM Compare

Compare NPM packages statistics, trends, and features

CollectionsVS Code extensionChrome extensionTermsPrivacyLinkTreeIndiehackersBig Frontendqiuyumi

Unable to load comparison data. Please try again later.

If you like dotenv, you will love dotenvx – for encrypting .env files that can travel with your code. πŸ™

dotenv NPM version downloads

<img src="https://raw.githubusercontent.com/motdotla/dotenv/master/dotenv.svg" alt="dotenv" align="right" width="200" />

Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env. Storing configuration in the environment separate from code is based on The Twelve-Factor App methodology.

Watch the tutorial

Β 

Usage

Install it.

npm install dotenv --save

Create a .env file in the root of your project:

# .env HELLO="Dotenv" OPENAI_API_KEY="your-api-key-goes-here"

As early as possible in your application, import and configure dotenv:

// index.js require('dotenv').config() // or import 'dotenv/config' // for esm console.log(`Hello ${process.env.HELLO}`)
$ node index.js β—‡ injected env (2) from .env Hello Dotenv

That's it. process.env now has the keys and values you defined in your .env file.

Β 

CLI Usage

NEW: Dotenv now has a CLI! Great for your coding agent.

// index.js console.log(`Hello ${process.env.HELLO}`)
$ npx dotenv run -- node index.js
β—‡ injected env (2) from .env
Hello Dotenv

Β 

Advanced

<details><summary>ES6</summary><br>

Import with ES6:

import 'dotenv/config'

DOTENV_ENCODING, DOTENV_PATH, DOTENV_QUIET, DOTENV_DEBUG, DOTENV_OVERRIDE, and DOTENV_FAST provide defaults for config() and dotenv run. Options/flags passed directly take precedence, followed by DOTENV_*, then the legacy DOTENV_CONFIG_* names. Empty values and false values do not fall back.

</details> <details><summary>bun</summary><br>
bun add dotenv
</details> <details><summary>yarn</summary><br>
yarn add dotenv
</details> <details><summary>pnpm</summary><br>
pnpm add dotenv
</details> <details><summary>deno</summary><br>
deno add dotenv
</details> <details><summary>Monorepos</summary><br>

For monorepos with a structure like apps/backend/app.js, put it the .env file in the root of the folder where your app.js process runs.

# app/backend/.env S3_BUCKET="YOURS3BUCKET" SECRET_KEY="YOURSECRETKEYGOESHERE"
</details> <details><summary>Multiline Values</summary><br>

If you need multiline variables, for example private keys, those are now supported (>= v15.0.0) with line breaks:

PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- ... Kh9NV... ... -----END RSA PRIVATE KEY-----"

Alternatively, you can double quote strings and use the \n character:

PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n"
</details> <details><summary>Comments</summary><br>

Comments may be added to your file on their own line or inline:

# This is a comment SECRET_KEY=YOURSECRETKEYGOESHERE # comment SECRET_HASH="something-with-a-#-hash"

Comments begin where a # exists, so if your value contains a # please wrap it in quotes. This is a breaking change from >= v15.0.0 and on.

</details> <details><summary>Parsing</summary><br>

The engine which parses the contents of your file containing environment variables is available to use. It accepts a String or Buffer and will return an Object with the parsed keys and values.

const dotenv = require('dotenv') const buf = Buffer.from('BASIC=basic') const config = dotenv.parse(buf) // will return an object console.log(typeof config, config) // object { BASIC : 'basic' }
</details> <details><summary>Run</summary><br>

Use dotenv run to run a command with environment variables from your .env file. The -- separator is optional. Put dotenv options before the command; everything after the command is passed through as its arguments.

$ dotenv run node index.js β—‡ injected env (2) from .env

Use -f or --file to select one or more .env files. Separate paths with commas or repeat either flag; files are loaded in the order given. The first value wins unless --override is set.

$ dotenv run --file .env.local,.env node index.js β—‡ injected env (2) from .env.local, .env

Use -q or --quiet to suppress the injected env message.

$ dotenv run -q node index.js

Use --override to overwrite existing environment variables, and --debug for debug logging.

$ dotenv run --override --debug -- node index.js

The legacy DOTENV_CONFIG_* environment variables formerly used by preload still work as fallbacks for DOTENV_*. CLI flags take precedence over both.

$ DOTENV_PATH=./.env.local DOTENV_QUIET=true dotenv run -- node index.js

Use --fast (or config({ fast: true })) for the faster character-scanner parser (~2x). Default remains the classic regex parser.

$ dotenv run --fast -- node index.js
require('dotenv').config({ fast: true })

Supported: DOTENV_PATH, DOTENV_ENCODING, DOTENV_QUIET, DOTENV_DEBUG, DOTENV_OVERRIDE, DOTENV_FAST, with matching DOTENV_CONFIG_* fallbacks.

</details> <details><summary>Variable Expansion</summary><br>

Use dotenvx for variable expansion.

Reference and expand variables already on your machine for use in your .env file.

# .env USERNAME="username" DATABASE_URL="postgres://${USERNAME}@localhost/my_database"
// index.js console.log('DATABASE_URL', process.env.DATABASE_URL)
$ dotenvx run --debug -- node index.js ⟐ injected env (2) from .env · dotenvx@1.59.1 DATABASE_URL postgres://username@localhost/my_database
</details> <details><summary>Command Substitution</summary><br>

Use dotenvx for command substitution.

Add the output of a command to one of your variables in your .env file.

# .env DATABASE_URL="postgres://$(whoami)@localhost/my_database"
// index.js console.log('DATABASE_URL', process.env.DATABASE_URL)
$ dotenvx run --debug -- node index.js ⟐ injected env (1) from .env · dotenvx@1.59.1 DATABASE_URL postgres://yourusername@localhost/my_database
</details> <details><summary>Encryption</summary><br>

Use dotenvx for encryption.

Add encryption to your .env files with a single command.

$ dotenvx set HELLO Production -f .env.production
$ echo "console.log('Hello ' + process.env.HELLO)" > index.js

$ DOTENV_PRIVATE_KEY_PRODUCTION="<.env.production private key>" dotenvx run -- node index.js
⟐ injected env (2) from .env.production · dotenvx@1.59.1
Hello Production

learn more

</details> <details><summary>Multiple Environments</summary><br>

Use dotenvx to manage multiple environments.

Run any environment locally. Create a .env.ENVIRONMENT file and use -f to load it. It's straightforward, yet flexible.

$ echo "HELLO=production" > .env.production $ echo "console.log('Hello ' + process.env.HELLO)" > index.js $ dotenvx run -f=.env.production -- node index.js Hello production > ^^

or with multiple .env files

$ echo "HELLO=local" > .env.local $ echo "HELLO=World" > .env $ echo "console.log('Hello ' + process.env.HELLO)" > index.js $ dotenvx run -f=.env.local -f=.env -- node index.js Hello local

more environment examples

</details> <details><summary>Production</summary><br>

Use dotenvx for production deploys.

Create a .env.production file.

$ echo "HELLO=production" > .env.production

Encrypt it.

$ dotenvx encrypt -f .env.production

Set DOTENV_PRIVATE_KEY_PRODUCTION (found in .env.keys) on your server.

$ heroku config:set DOTENV_PRIVATE_KEY_PRODUCTION=value

Commit your .env.production file to code and deploy.

$ git add .env.production
$ git commit -m "encrypted .env.production"
$ git push heroku main

Dotenvx will decrypt and inject the secrets at runtime using dotenvx run -- node index.js.

</details> <details><summary>Syncing</summary><br>

Use dotenvx to sync your .env files.

Encrypt them with dotenvx encrypt -f .env and safely include them in source control. Your secrets are securely synced with your git.

This still subscribes to the twelve-factor app rules by generating a decryption key separate from code.

</details> <details><summary>More Examples</summary><br>

See examples of using dotenv with various frameworks, languages, and configurations.

  • nodejs
  • nodejs (debug on)
  • nodejs (override on)
  • nodejs (processEnv override)
  • esm
  • typescript
  • typescript parse
  • typescript config
  • webpack
  • webpack (plugin)
  • react
  • react (typescript)
  • express
  • nestjs
  • fastify
</details>

Β 

FAQ

<details><summary>Should I commit my `.env` file?</summary><br/>

No.

Unless you encrypt it with dotenvx. Then we recommend you do.

</details> <details><summary>What about variable expansion?</summary><br/>

Use dotenvx.

</details> <details><summary>Should I have multiple `.env` files?</summary><br/>

We recommend creating one .env file per environment. Use .env for local/development, .env.production for production and so on. This still follows the twelve factor principles as each is attributed individually to its own environment. Avoid custom set ups that work in inheritance somehow (.env.production inherits values from .env for example). It is better to duplicate values if necessary across each .env.environment file.

In a twelve-factor app, env vars are granular controls, each fully orthogonal to other env vars. They are never grouped together as β€œenvironments”, but instead are independently managed for each deploy. This is a model that scales up smoothly as the app naturally expands into more deploys over its lifetime.

– The Twelve-Factor App

Additionally, we recommend using dotenvx to encrypt and manage these.

</details> <details><summary>How do I use dotenv with `import`?</summary><br/>

Import dotenv/config before modules that read environment variables.

// index.mjs (ESM) import 'dotenv/config' import express from 'express'

This loads environment variables before the rest of your application modules are initialized. You can also use the CLI to inject them before Node starts:

dotenv run -- node index.mjs
</details> <details><summary>Can I customize/write plugins for dotenv?</summary><br/>

Yes! dotenv.config() returns an object representing the parsed .env file. This gives you everything you need to continue setting values on process.env. For example:

const dotenv = require('dotenv') const variableExpansion = require('dotenv-expand') const myEnv = dotenv.config() variableExpansion(myEnv)
</details> <details><summary>What rules does the parsing engine follow?</summary><br/>

The parsing engine currently supports the following rules:

  • BASIC=basic becomes {BASIC: 'basic'}
  • empty lines are skipped
  • lines beginning with # are treated as comments
  • # marks the beginning of a comment (unless when the value is wrapped in quotes)
  • empty values become empty strings (EMPTY= becomes {EMPTY: ''})
  • inner quotes are maintained (think JSON) (JSON={"foo": "bar"} becomes {JSON:"{\"foo\": \"bar\"}")
  • whitespace is removed from both ends of unquoted values (see more on trim) (FOO= some value becomes {FOO: 'some value'})
  • single and double quoted values are escaped (SINGLE_QUOTE='quoted' becomes {SINGLE_QUOTE: "quoted"})
  • single and double quoted values maintain whitespace from both ends (FOO=" some value " becomes {FOO: ' some value '})
  • double quoted values expand new lines (MULTILINE="new\nline" becomes
{MULTILINE: 'new
line'}
  • backticks are supported (BACKTICK_KEY=`This has 'single' and "double" quotes inside of it.`)
</details> <details><summary>What about syncing and securing .env files?</summary><br/>

Use dotenvx to unlock syncing encrypted .env files over git.

</details> <details><summary>How do I specify config options with ES6 import?</summary><br/>

Pass options directly to config().

// index.mjs import dotenv from 'dotenv' dotenv.config({ path: '/custom/path/to/.env', debug: true }) import express from 'express'

If imported modules read environment variables during initialization, use a tiny wrapper file.

Create load-env.mjs:

import dotenv from 'dotenv' dotenv.config({ path: '/custom/path/to/.env', debug: true })

Then in your main file:

import './load-env.mjs' import express from 'express'
</details> <details><summary>What if I accidentally commit my `.env` file to code?</summary><br/>

Remove it, remove git history and then install the git pre-commit hook to prevent this from ever happening again.

npm i -g @dotenvx/dotenvx
dotenvx precommit --install
</details> <details><summary>What happens to environment variables that were already set?</summary><br/>

By default, we will never modify any environment variables that have already been set. In particular, if there is a variable in your .env file which collides with one that already exists in your environment, then that variable will be skipped.

If instead, you want to override process.env use the override option.

require('dotenv').config({ override: true })
</details> <details><summary>How can I prevent committing my `.env` file to a Docker build?</summary><br/>

Use the docker prebuild hook.

# Dockerfile ... RUN curl -fsS https://dotenvx.sh/ | sh ... RUN dotenvx prebuild CMD ["dotenvx", "run", "--", "node", "index.js"]
</details> <details><summary>How come my environment variables are not showing up for React?</summary><br/>

Your React code is run in Webpack, where the fs module or even the process global itself are not accessible out-of-the-box. process.env can only be injected through Webpack configuration.

If you are using react-scripts, which is distributed through create-react-app, it has dotenv built in but with a quirk. Preface your environment variables with REACT_APP_. See this stack overflow for more details.

If you are using other frameworks (e.g. Next.js, Gatsby...), you need to consult their documentation for how to inject environment variables into the client.

</details> <details><summary>Why is the `.env` file not loading my environment variables successfully?</summary><br/>

Most likely your .env file is not in the correct place. See this stack overflow.

Turn on debug mode and try again..

require('dotenv').config({ debug: true })

You will receive a helpful error outputted to your console.

</details> <details><summary>Why am I getting the error `Module not found: Error: Can't resolve 'os|path'`?</summary><br/>

You are using dotenv on the front-end and have not included a polyfill. Webpack < 5 used to include these for you. Do the following:

npm install node-polyfill-webpack-plugin

Configure your webpack.config.js to something like the following.

require('dotenv').config() const path = require('path'); const webpack = require('webpack') const NodePolyfillPlugin = require('node-polyfill-webpack-plugin') module.exports = { mode: 'development', entry: './src/index.ts', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist'), }, plugins: [ new NodePolyfillPlugin(), new webpack.DefinePlugin({ 'process.env': { HELLO: JSON.stringify(process.env.HELLO) } }), ] };

Alternatively, just use dotenv-webpack which does this and more behind the scenes for you.

</details>

Β 

Docs

Dotenv exposes four functions:

  • config
  • parse
  • populate

Config

config will read your .env file, parse the contents, assign it to process.env, and return an Object with a parsed key containing the loaded content or an error key if it failed.

const result = dotenv.config() if (result.error) { throw result.error } console.log(result.parsed)

You can additionally, pass options to config.

Options

path

Default: path.resolve(process.cwd(), '.env')

Specify a custom path if your file containing environment variables is located elsewhere.

require('dotenv').config({ path: '/custom/path/to/.env' })

You can also pass a URL object:

const fileUrl = new URL('file:///custom/path/to/.env') require('dotenv').config({ path: fileUrl })

By default, config will look for a file called .env in the current working directory.

Pass in multiple files as an array, and they will be parsed in order and combined with process.env (or option.processEnv, if set). The first value set for a variable will win, unless the options.override flag is set, in which case the last value set will win. If a value already exists in process.env and the options.override flag is NOT set, no changes will be made to that value.

require('dotenv').config({ path: ['.env.local', '.env'] })
quiet

Default: false

Suppress runtime logging message.

// index.js require('dotenv').config({ quiet: false }) // change to true to suppress console.log(`Hello ${process.env.HELLO}`)
# .env HELLO=World
$ node index.js Hello World
encoding

Default: utf8

Specify the encoding of your file containing environment variables.

require('dotenv').config({ encoding: 'latin1' })
debug

Default: false

Turn on logging to help debug why certain keys or values are not being set as you expect.

require('dotenv').config({ debug: process.env.DEBUG })
override

Default: false

Override any environment variables that have already been set on your machine with values from your .env file(s). If multiple files have been provided in option.path the override will also be used as each file is combined with the next. Without override being set, the first value wins. With override set the last value wins.

require('dotenv').config({ override: true })
fast

Default: false

Use the faster character-scanner parser (~2x). Default remains the classic regex parser.

require('dotenv').config({ fast: true })
processEnv

Default: process.env

Specify an object to write your environment variables to. Defaults to process.env environment variables.

const myObject = {} require('dotenv').config({ processEnv: myObject }) console.log(myObject) // values from .env console.log(process.env) // this was not changed or written to

Parse

The engine which parses the contents of your file containing environment variables is available to use. It accepts a String or Buffer and will return an Object with the parsed keys and values.

const dotenv = require('dotenv') const buf = Buffer.from('BASIC=basic') const config = dotenv.parse(buf) // will return an object console.log(typeof config, config) // object { BASIC : 'basic' }

Options

debug

Default: false

Turn on logging to help debug why certain keys or values are not being set as you expect.

const dotenv = require('dotenv') const buf = Buffer.from('hello world') const opt = { debug: true } const config = dotenv.parse(buf, opt) // expect a debug message because the buffer is not in KEY=VAL form

Populate

The engine which populates the contents of your .env file to process.env is available for use. It accepts a target, a source, and options. This is useful for power users who want to supply their own objects.

For example, customizing the source:

const dotenv = require('dotenv') const parsed = { HELLO: 'world' } dotenv.populate(process.env, parsed) console.log(process.env.HELLO) // world

For example, customizing the source AND target:

const dotenv = require('dotenv') const parsed = { HELLO: 'universe' } const target = { HELLO: 'world' } // empty object dotenv.populate(target, parsed, { override: true, debug: true }) console.log(target) // { HELLO: 'universe' }

options

Debug

Default: false

Turn on logging to help debug why certain keys or values are not being populated as you expect.

override

Default: false

Override any environment variables that have already been set.

Β 

CHANGELOG

See CHANGELOG.md

Β 

Who's using dotenv?

These npm modules depend on it.

Projects that expand it often use the keyword "dotenv" on npm.

Linux Tests Windows Tests Coverage Status npm npm License Typescript-ESLint

env-cmd

A simple node program for executing commands using an environment from an env file.

πŸ’Ύ Install

npm install env-cmd or npm install -g env-cmd

⌨️ Basic Usage

Environment file ./.env

# This is a comment ENV1=THANKS ENV2=FOR ALL ENV3=THE FISH

Package.json

{ "scripts": { "test": "env-cmd -- mocha -R spec" } }

Terminal

./node_modules/.bin/env-cmd -- node index.js

Using custom env file path

To use a custom env filename or path, pass the -f flag. This is a major breaking change from prior versions < 9.0.0

Terminal

./node_modules/.bin/env-cmd -f ./custom/path/.env -- node index.js

πŸ“œ Help

Usage: env-cmd [options] -- <command> [...args] Options: -v, --version output the version number -e, --environments [envs...] The rc file environment(s) to use -f, --file [path] Custom env file path or .rc file path if '-e' used (default path: ./.env or ./.env-cmdrc.(js|cjs|mjs|json)) -x, --expand-envs Replace $var and ${var} in args and command with environment variables --recursive Replace $var and ${var} in env file with the referenced environment variable --fallback Fallback to default env file path, if custom env file path not found --no-override Do not override existing environment variables --silent Ignore any env-cmd errors and only fail on executed program failure. --use-shell Execute the command in a new shell with the given environment --verbose Print helpful debugging information -h, --help display help for command

πŸ”¬ Advanced Usage

.rc file usage

For more complex projects, a .env-cmdrc file can be defined in the root directory and supports as many environments as you want. Simply use the -e flag and provide which environments you wish to use from the .env-cmdrc file. Using multiple environment names will merge the environment variables together. Later environments overwrite earlier ones in the list if conflicting environment variables are found.

.rc file ./.env-cmdrc

{ "development": { "ENV1": "Thanks", "ENV2": "For All" }, "test": { "ENV1": "No Thanks", "ENV3": "!" }, "production": { "ENV1": "The Fish" } }

Terminal

./node_modules/.bin/env-cmd -e production -- node index.js # Or for multiple environments (where `production` vars override `test` vars, # but both are included) ./node_modules/.bin/env-cmd -e test,production -- node index.js

--no-override option

Prevents overriding of existing environment variables on process.env and within the current environment.

--fallback file usage option

If the .env file does not exist at the provided custom path, then use the default fallback location ./.env env file instead.

--use-shell

Executes the command within a new shell environment. This is useful if you want to string multiple commands together that share the same environment variables.

Terminal

./node_modules/.bin/env-cmd -f ./test/.env --use-shell -- "npm run lint && npm test"

Asynchronous env file support

EnvCmd supports reading from asynchronous .env files. Instead of using a .env file, pass in a .js file that exports either an object or a Promise resolving to an object ({ ENV_VAR_NAME: value, ... }). Asynchronous .rc files are also supported using .js file extension and resolving to an object with top level environment names ({ production: { ENV_VAR_NAME: value, ... } }).

Terminal

./node_modules/.bin/env-cmd -f ./async-file.js -- node index.js

-x expands vars in arguments

EnvCmd supports expanding $var values passed in as arguments to the command. The allows a user to provide arguments to a command that are based on environment variable values at runtime.

NOTE: You must escape the $ character with \ or your terminal might try to auto expand it before passing it to env-cmd.

Terminal

# $VAR will be expanded into the env value it contains at runtime ./node_modules/.bin/env-cmd -x -- node index.js --arg=\$VAR

or in package.json (use \\ to insert a literal backslash)

{ "script": { "start": "env-cmd -x -- node index.js --arg=\\$VAR" } }

--silent suppresses env-cmd errors

EnvCmd supports the --silent flag the suppresses all errors generated by env-cmd while leaving errors generated by the child process and cli signals still usable. This flag is primarily used to allow env-cmd to run in environments where the .env file might not be present, but still execute the child process without failing due to a missing file.

πŸ’Ώ Examples

You can find examples of how to use the various options above by visiting the examples repo env-cmd-examples.

πŸ’½οΈ Environment File Formats

These are the currently accepted environment file formats. If any other formats are desired please create an issue.

  • .env as key=value
  • .env.json Key/value pairs as JSON
  • .env.js JavaScript file exporting an object or a Promise that resolves to an object
  • .env-cmdrc as valid json or .env-cmdrc.json in execution directory with at least one environment { "dev": { "key1": "val1" } }
  • .env-cmdrc.js JavaScript file exporting an object or a Promise that resolves to an object that contains at least one environment

πŸ—‚ Path Rules

This lib attempts to follow standard bash path rules. The rules are as followed:

Home Directory = /Users/test

Working Directory = /Users/test/Development/app

| Type | Input Path | Expanded Path | | -- | -- | ------------- | | Absolute | /some/absolute/path.env | /some/absolute/path.env | | Home Directory with ~ | ~/starts/on/homedir/path.env | /Users/test/starts/on/homedir/path.env | | Relative | ./some/relative/path.env or some/relative/path.env | /Users/test/Development/app/some/relative/path.env | | Relative with parent dir | ../some/relative/path.env | /Users/test/Development/some/relative/path.env |

πŸ›  API Usage

EnvCmd

A function that executes a given command in a new child process with the given environment and options

  • options { object }
    • command { string }: The command to execute (node, mocha, ...)
    • commandArgs { string[] }: List of arguments to pass to the command (['-R', 'Spec'])
    • envFile { object }
      • filePath { string }: Custom path to .env file to read from (defaults to: ./.env)
      • fallback { boolean }: Should fall back to default ./.env file if custom path does not exist
    • rc { object }
      • environments { string[] }: List of environment to read from the .rc file
      • filePath { string }: Custom path to the .rc file (defaults to: ./.env-cmdrc(|.js|.json))
    • options { object }
      • expandEnvs { boolean }: Expand $var values passed to commandArgs (default: false)
      • noOverride { boolean }: Prevent .env file vars from overriding existing process.env vars (default: false)
      • silent { boolean }: Ignore any errors thrown by env-cmd, used to ignore missing file errors (default: false)
      • useShell { boolean }: Runs command inside a new shell instance (default: false)
      • verbose { boolean }: Prints extra debug logs to console.info (default: false)
    • Returns { Promise<object> }: key is env var name and value is the env var value

GetEnvVars

A function that parses environment variables from a .env or a .rc file

  • options { object }
    • envFile { object }
      • filePath { string }: Custom path to .env file to read from (defaults to: ./.env)
      • fallback { boolean }: Should fall back to default ./.env file if custom path does not exist
    • rc { object }
      • environments { string[] }: List of environment to read from the .rc file
      • filePath { string }: Custom path to the .rc file (defaults to: ./.env-cmdrc(|.js|.json))
    • verbose { boolean }: Prints extra debug logs to console.info (default: false)
  • Returns { Promise<object> }: key is env var name and value is the env var value

πŸ§™ Why

Because sometimes it is just too cumbersome passing a lot of environment variables to scripts. It is usually just easier to have a file with all the vars in them, especially for development and testing.

🚨Do not commit sensitive environment data to a public git repo! 🚨

🧬 Related Projects

cross-env - Cross platform setting of environment scripts

πŸ“‹ Contributing Guide

I welcome all pull requests. Please make sure you add appropriate test cases for any features added. Before opening a PR please make sure to run the following scripts:

  • npm run lint checks for code errors and format according to ts-standard
  • npm test make sure all tests pass
  • npm run test-cover make sure the coverage has not decreased from current master
StarsIssuesVersionUpdatedβ“˜Last publish dateCreatedβ“˜Package creation dateSizeβ“˜Minified + Gzipped size
D
dotenv
20,538618.0.1a month ago13 years agoinstall size 4.2 KB
E
env-cmd
1,8152511.0.013 months ago10 years agoinstall size 16.2 KB

Dependencies Comparison

dotenv

Dependencies

Dev Dependencies

tap^21.7.4
sinon^14.0.1
decache^4.6.2
esbuild^0.28.1
standard^17.0.0
typescript^4.8.4
@types/node^18.11.3
standard-version^9.5.0

Peer Dependencies

env-cmd

Dependencies

commander^13.1.0
cross-spawn^7.0.6
@commander-js/extra-typings^13.1.0

Dev Dependencies

c8^10.1.2
tsx^4.19.2
chai^5.1.2
husky^9.1.7
mocha^11.0.0
sinon^21.0.0
esmock^2.6.9
globals^16.0.0
coveralls^3.0.0
@eslint/js^9.16.0
typescript^5.7.2
@types/chai^5.0.1
@types/node^24.0.10
@types/mocha^10.0.10
@types/sinon^17.0.3
@commitlint/cli^19.6.0
typescript-eslint^8.15.0
@types/cross-spawn^6.0.6
@commitlint/config-conventional^19.6.0

Peer Dependencies

Who's Using These Packages

dotenv

OverVue
OverVue

Prototyping Tool For Vue Devs ι€‚η”¨δΊŽVueηš„εŽŸεž‹ε·₯ε…·

icepick
icepick

Build agents that scale with a zero-cost abstraction.

supercli
supercli

The open source harness agent

pittcsc-website
pittcsc-website

Pitt Computer Science Club Website

env-cmd

sqlchat
sqlchat

Chat-based SQL Client and Editor for the next decade