Loads .env files in order based on process.env.NODE_ENV value.
- shell
- .env.{environment}.local
- .env.{environment}
- .env.local
- .env
If environment variable is set, any file loaded after will not override it.
Import and use asap in your build process or app
const loadStageEnv = require('env-stage-loader')
// Load env variables
const values = loadStageEnv()
console.log('resolved values', values)
// Debug load order & value setting
loadStageEnv({ debug: true })
// Set env dynamically
loadStageEnv({
env: 'development'
})
// Force override of any env variable
loadStageEnv({
forceSet: {
FOO: 'this value will win'
}
})
// Force override of any env variable
loadStageEnv({
env: 'development'
// Force unsetting of all previously found ENV vars found in shell
unloadEnv: true
})[stage].local takes presidence
/*
.env.dev.local contains FOO=BAR
.env.dev contains FOO=ZAZ
*/
const values = loadStageEnv({ env: 'dev' })
console.log(values.FOO === process.env.FOO)
console.log(process.env.FOO)
// value "BAR" from .env.dev.localshell takes presidence
/*
process.env.XYZ === '123'
.env.dev.local contains XYZ=345
.env.dev contains XYZ=987
*/
const values = loadStageEnv({ env: 'dev' })
console.log(process.env.XYZ)
// value "123" from original shell processAnother shell example
# Shell value set
export FOO=1FOO is set in shell session...
/*
.env file contains FOO=ZAZ
*/
const values = loadStageEnv({ env: 'dev' })
console.log(process.env.FOO)
// process.env.FOO === "1" because shell takes precedenceRun tests for more examples.
.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.local,.env.development,.env
These variables will act as the defaults if the machine does not explicitly set them.
Please refer to the dotenv documentation for more details.