hello-config
Simple environment-specific configuration for your node apps
Installation
yarn add hello-config
Usage
hello-config loads environment-specific config files from a directory.
Setup
The easiest way to get set up is running the following from your command line
yarn hello-config
This will create a config
directory that is ready to be required anywhere in your app (const config = require('./config');
)
Manual Setup
You can also set up hello-config
manually.
/** * config/index.js */ const Config = default moduleexports = Config
// Or as typescript:
The above code will load config/default.js
and merge in contents from config/development.js
as overrides.
If there is a config/development.local.js
file, this will be merged in as well. You can have a .local.js
file for any environment.
You can also set local environment variables using a .env
file the root of your project if you'd like.
NOTE: *.local.js
and .env
should be added to .gitignore
-- it should only be used for developer-specific settings
Recommended directory structure
The recommended directory structure is
./config/
default.js
development.js
index.js
production.js
test.js
Sample config/index.js
file:
const Config = default moduleexports = Config
Sample default.js
file:
moduleexports = port: processenvPORT || 80 db: host: processenvDATABASE_HOST username: 'matt' // ...
Sample development.js
file:
moduleexports = port: 3000 db: host: '127.0.0.1'
At this point, you can run the following code:
config config = ; configport;// => 3000 config;// => 3000 configdbhost;// => '127.0.0.1' configget'db.host');// => '127.0.0.1' configdoesnotexist;// => TypeError: Cannot read property 'not' of undefined config;// => undefined
Custom directory structure
You can use any directory structure you prefer. For example, to have a structure like the following:
config/
index.js
environments/
all.js
development.js
production.js
test.js
You can use the following options for Config.load()
:
const path = const Config = default moduleexports = Config
By default, hello-config uses process.env.NODE_ENV
as the environment, however,
if you'd like, you can directly load an environment's configuration:
// Loads the test environment:Config