
Security News
New CVE Forecasting Tool Predicts 47,000 Disclosures in 2025
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
envlist is a micro-module (without dependency) for resolving the type of runtime environment between your application convention and another convention (like NODE_ENV).
Micro-module (without dependency) for resolving the type of runtime environment between your application convention and another convention (like NODE_ENV
).
Like the debug of Express and some Express middlewares, few modules of Node.js require to put NODE_ENV
to production
or development
for changing the behavior of execution.
In the real world, it is common to use several environment names like local
, staging
, testing
.
Also it is common to use shortcuts and several environment names like prod
, dev
, stage
, test
, local
.
The problem is that in defining NODE_ENV
to local
(or another alias of a development
env), we do not get the full functionality of debugging of some modules.
Also in defining NODE_ENV
to prod
, we do not get the optimizations made to the production
environment.
A simple and useful solution is to map your application environment to a conventional NODE_ENV
environment.
Then consolidate all :bulb:
npm install --save envlist
or
yarn add envlist
By default envlist
has preconfigured environments (of course you can replace it).
let EnvList = require('envlist');
let envList = new EnvList();
console.log(envList.envs);
Output:
local: {
APP_ENV: 'local',
NODE_ENV: 'development'
},
dev: {
APP_ENV: 'dev',
NODE_ENV: 'development'
},
stage: {
APP_ENV: 'stage',
NODE_ENV: 'production'
},
test: {
APP_ENV: 'test',
NODE_ENV: 'development'
},
prod: {
APP_ENV: 'prod',
NODE_ENV: 'production'
}
}
You can customize each environment. Example by default the value of
envList.envs.test.NODE_ENV
is development
. If you want to change this value:
envList.envs.test.NODE_ENV = 'production';
envList.envs
it's just an object (see above).
envList.envs = {
development: {
APP_ENV: 'development',
NODE_ENV: 'development'
},
production: {
APP_ENV: 'production',
NODE_ENV: 'production'
},
staging: {
APP_ENV: 'staging',
NODE_ENV: 'production'
},
test: {
APP_ENV: 'test',
NODE_ENV: 'production'
},
demoProd: {
APP_ENV: 'demoProd',
NODE_ENV: 'production'
},
demoDev: {
APP_ENV: 'demoDev',
NODE_ENV: 'development'
}
};
// dev
console.log(envList.envs.dev.APP_ENV);
console.log(envList.get('dev').APP_ENV);
// development
console.log(envList.envs.dev.NODE_ENV);
console.log(envList.get('dev').NODE_ENV);
// prod
console.log(envList.envs.prod.APP_ENV);
console.log(envList.get('prod').APP_ENV);
// production
console.log(envList.envs.prod.NODE_ENV);
console.log(envList.get('prod').NODE_ENV);
Considers that the process was launched with the command: node APP_ENV=dev app.js
// dev
envList.env;
// dev
envList.APP_ENV;
// development
envList.NODE_ENV;
/*
{
APP_ENV: 'dev',
NODE_ENV: 'development'
}
*/
envList.getCurrent();
It may be useful to ensure that the current environment is good and change it if it's not the desired one.
Example, ensure the dev
environment:
envList.ensure('dev');
In this example, if the current environment is not equal to dev
,
this method change and consolidate the current environment.
Does nothing if the current environment is equal to dev
.
Considers that you have installed Gulp and gulp-util
and you want to support env.type
:
let gutil = require('gulp-util');
envList.resolveAppEnv = function() {
envList.env = process.env.APP_ENV || process.env.NODE_ENV || gutil.env.type;
if(envList.env && envList.has(envList.env)) {
return this;
}
throw new ReferenceError('Environment not found.');
}
Considers that you have installed Gulp and gulp-util
and you want consolidate also env.type
:
let gutil = require('gulp-util');
envList.consolidate = function() {
let current;
if(!envList.env) {
envList.resolveAppEnv();
}
if(process && process.env) {
current = envList.getCurrent();
process.env.APP_ENV = current.APP_ENV;
process.env.NODE_ENV = current.NODE_ENV;
gutil.env.type = current.NODE_ENV;
}
return envList;
}
If you use a framework that handle the environment based on NODE_ENV
value (like Express.js),
consolidate the environment before loading Express.js.
envlist
is unit tested with Mocha and Unit.js.
Run the tests
cd node_modules/envlist && npm install && npm test
MIT (c) 2016, Nicolas Tallefourtane.
Nicolas Talle |
![]() |
FAQs
envlist is a micro-module (without dependency) for resolving the type of runtime environment between your application convention and another convention (like NODE_ENV).
The npm package envlist receives a total of 9 weekly downloads. As such, envlist popularity was classified as not popular.
We found that envlist demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.