Skip to content
The create-react-app environment loader for consistent reuse in other projects with additions for command line usage.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
__tests__
.eslintrc.json
.gitignore
.travis.yml
README.md
cli.js
index.js
package-lock.json
package.json
spawn.js

README.md

envy

The create-react-app environment loader for consistent reuse in other projects with additions for command line usage.

Important: envy will default to NODE_ENV=development if there is no value on NODE_ENV.

Installation

npm install --save @remy/envy

Typical usage

// populates process.env
require('@remy/envy'); // do this as early as possible in the code

// Also populate and return
const { raw, stringified } = require('@remy/envy');
What `.env` files can be used?
  • .env: Default.
  • .env.local: Local overrides. This file is loaded for all environments except test.
  • .env.development, .env.test, .env.production: Environment-specific settings.
  • .env.development.local, .env.test.local, .env.production.local: Local overrides of environment-specific settings.

Files on the left have more priority than files on the right:

  • npm start: .env.development.local, .env.development, .env.local, .env
  • npm run build: .env.production.local, .env.production, .env.local, .env
  • npm test: .env.test.local, .env.test, .env (note .env.local is missing)

These variables will act as the defaults if the machine does not explicitly set them.

Please refer to the dotenv documentation for more details.

Note: If you are defining environment variables for development, your CI and/or hosting platform will most likely need these defined as well. Consult their documentation how to do this. For example, see the documentation for Travis CI or Heroku.

Features

  • Expands $VAR by default (via dotenv-expand). Important escaped \$ does not work, and is expanded to undefined. To disable env expansion, set environment value NO_EXPAND=true.
  • Supports .env.example if the file is found in the current working directory (very similar to dotenv-safe - but merges environment values first, then checks)

CLI usage

Beyond using the package as a dependency, a CLI utility is provided for testing environment values and also injecting the environment variables into a command.

Assuming the package was installed locally to your project, and using npx to run a .bin command:

$ NODE_ENV=test npx envy
> # prints entire environment loaded

$ NODE_ENV=test npx envy NODE_ENV
> test

$ NODE_ENV=test npx envy -- node -e "console.log(process.env.NODE_ENV)"
> test

-- Double dash to signify the end of the options

When passing -- to envy everything afterwards will be executed with the modified environment (a bit like the foreman command line too).

You can’t perform that action at this time.