Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

This package has been deprecated

Author message:

Use @hello/config instead

hello-config

3.0.1 • Public • Published

hello-config

Simple environment-specific configuration for your node apps

Build Status Coverage Status

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 = 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.js

Sample 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');
// => 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 = 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'
})

Keywords

none

Install

npm i hello-config

DownloadsWeekly Downloads

28

Version

3.0.1

License

MIT

Unpacked Size

12.3 kB

Total Files

9

Last publish

Collaborators

  • avatar