Load configuration from environmental variables and files.
According to The Twelve-Factor App, configuration should come from environmental variables. But since environmental variables can leak easily, some people use secrets for sensitive information. This module is made to support either with minimal set-up.
$ yarn add env-and-files
const {loadConfig} = require('env-and-files');
loadConfig({
// A conceptual grouping of configuration properties. In this case, configuration for the logger.
logger: {
// The "logger.level" property will be equal to the "LOG_LEVEL" environmental variable, or null if it is not present.
level: 'LOG_LEVEL',
},
server: {
port: {
// Specify that this property is required. If "PORT" is not found, an error will be given.
required: true,
variableName: 'PORT',
},
},
sql: {
password: {
// The "sql.password" property will be equal to the contents of "/path/to/secret", or null if it could not be read.
filePath: '/path/to/secret',
required: true,
},
},
})
.then(config => {
// "config" will be an object map of configuration groups. In this case, the shape would be:
// { logger: { level: ?string }, server: { port: ?string }, sql: { password: ?string } }
console.log(config);
})
.catch(error => {
// If any of the required properties cannot be loaded, the Promise will reject.
console.log(error);
});
Load configuration. Returns a Promise
that will resolve to the loaded configuration, or reject if the configuration was invalid.
Type: Object
An object map of conceptual groupings of necessary configuration and where to find it. By default, all configuration properties are optional, but if one is marked required and is not found, an error will be given. See usage for examples of config maps.
Load configuration, synchronously. Returns the loaded configuration, or throws if the configuration was invalid.
Type: Object
Same as the asynchronous version.
MIT © Matthew Fernando Garcia