A small set of utils for working with environment variables in node and webpack projects. Wraps the excellent getEnv
as well
import * as Env from '@4c/env';
env
wraps and reexports getEnv
as get()
.
Env.get('NODE_ENV'); // 'production'
// Fails hard on missing variables
Env.get('NOT_SET_VAR'); // Error
// Fall back to a default if needed
Env.get('NOT_SET_VAR', 'default_value'); // 'default_value'
// Parsing
Env.get.int('MAX_SUBSCRIPTIONS', 4);
process.env.BOOLISH = 1;
Env.get.boolish('BOOLISH'); // true
env
will load and parse .env
files, by environment. We use the naming convention variables-{ENV}.env
to split out variables by different environment. The default is dev
.
Env.load(); // adds variables-dev.env to process.env
Env.load('test'); // adds variables-test.env to process.env
There is also a utility for passing enviroment variables to webpack's DefinePlugin
allowing instances of process.env.FOO
in front-end code to be replaced with a specific compile-time value.
// returns variables-test.env mapped to an object keyed by process.env.[foo] for use in webpack
new webpack.DefinePlugin(Env.define('test'));