@hello/config v3.0.2
@hello/config
Simple environment-specific configuration for your node apps
[](https://travis-ci.org/hello-js/ config)
Installation
yarn add @hello/configUsage
@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/configThis 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 = require('@hello/config').default
module.exports = Config.load()// Or as typescript:
import { load } from '@hello/config'
export default load()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.jsSample config/index.js file:
const Config = require('@hello/config').default
module.exports = Config.load()Sample default.js file:
module.exports = {
port: process.env.PORT || 80,
db: {
host: process.env.DATABASE_HOST,
username: 'matt'
// ...
}
}Sample development.js file:
module.exports = {
port: 3000,
db: {
host: '127.0.0.1'
}
}At this point, you can run the following code:
config config = require('./config');
config.port;
// => 3000
config.get('port');
// => 3000
config.db.host;
// => '127.0.0.1'
config.get'db.host');
// => '127.0.0.1'
config.does.not.exist;
// => TypeError: Cannot read property 'not' of undefined
config.get('does.not.exist');
// => undefinedCustom 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.jsYou can use the following options for Config.load():
const path = require('path')
const Config = require('@hello/config').default
module.exports = Config.load({
root: path.join(__dirname, 'environments'),
baseFilename: 'all'
})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.load({
env: 'test'
})7 years ago