Config Dug
Config loader with support for AWS Secrets Manager.
Usage
Installation
yarn | npm |
---|
yarn add config-dug | npm install config-dug |
Create your config files
config-dug
looks in several places for your config, including config files in your project, environment variables and AWS Secrets Manager. config-dug
allows you to write your config files in either TypeScript or JavaScript. You are expected to export a default object from your config file:
export default {
API_ENDPOINT: 'https://api.kanye.rest/'
};
module.exports = {
API_ENDPOINT: 'https://api.kanye.rest/'
};
Settings from these different sources are merged together into a single config object in the following order:
config.default.{ts|js}
config.${NODE_ENV}.{ts|js}
config.local.{ts|js}
- AWS Secrets Manager
- Environment variables
By default your config files need to be placed in the root directory of your project. If you want to keep config files in a different directory see Customizing Config Loading.
Import config
Import config-dug
anywhere in your code where you want to access your config. All of your settings are available on the imported object:
import config from 'config-dug';
console.log(config.API_ENDPOINT);
const config = require('config-dug');
console.log(config.API_ENDPOINT);
Using AWS Secrets Manager
In order to use AWS Secrets Manager you have to add a AWS_SECRETS_MANAGER_NAME
or awsSecretsManagerName
setting to your config that specifies the name of the secret to look up:
export default {
AWS_SECRETS_MANAGER_NAME: 'production/myapp/config',
API_ENDPOINT: 'https://api.kanye.rest/'
}
In addition to specifying the secret name you can also provide a region using the AWS_SECRETS_MANAGER_REGION
or awsSecretsManagerRegion
setting:
export default {
AWS_SECRETS_MANAGER_NAME: 'production/myapp/config',
AWS_SECRETS_MANAGER_REGION: 'us-west-2',
API_ENDPOINT: 'https://api.somecompany.com'
}
This package uses the aws-sdk internally. Refer to their documentation for information about authentication, configuring a default region and configuring access control for AWS Secrets Manager.
Advanced
Customizing Config Loading
If you want to load config files from a directory other than the project root you can import the loadConfig
function and use it directly.
import { loadConfig } from 'config-dug';
loadConfig('config');
This will import your config files from the config
directory. The path you specify must be relative to your project root.
Debugging
config-dug
uses the debug library. To print debug messages for config-dug
set DEBUG=config-dug
.
Contributing
Running Tests
- Fork this repo
- Clone the forked repo
- Install dependencies:
yarn
- Run tests:
yarn test
Credits
This project was inspired by config3 and config4.