config-variables
v1.1.1
Published
Config for you project that cascades app.json, .env and process.env
Downloads
15
Readme
Config Variables
Ensures your config variables are accessible at process.env[variable]
. Leverages app.json-schema for requirements, descriptions and default values, and .env file for local overwrite in development.
Setup
Install config-variables from NPM
npm install --save config-variables
Either require the package in your entry file
// src/index.js
require('config-variables')
or use node's preload option in your package.json scripts
"scripts": {
"start": "node -r config-variables src/index.js"
}
If you have an existing .env
or app.json
file in your projects, your config variables should now be accessible within your code at process.env[variable]
.
Setting defaults and requirements
If you depend on variables for your app to run, set the requirement in app.json at your project root.
{
"name": "My Project",
"env": {
"API_ENDPOINT": "http://prod.api.io/endpoint",
"AUTH_KEY": {
"required": true,
"description": "Authentication key for OAuth"
}
}
}
AUTH_KEY
is set as required, so if you run your application it will abort with a message and variable description if you supply one. Handy if multiple people are working on a project.
If you deploy your app to Heroku, you can overwrite these variables in your Heroku dashboard/console.
Development variables
.env
is perfect for the variables that you don't want in your .git commits or for development.
PORT=5050
API_ENDPOINT=http://dev.api.io/endpoint
AUTH_KEY=okp3vopq23s2sd3es4j42k
Custom paths
If you have a multiple configs in a monorepo or don't want to store your configs at the root, you can set custom paths with config-variables/lib/setup
.
const setup = require('config-variables/setup')
const development = process.env.NODE_ENV !== 'production'
setup({
appJsonPath: 'src/server/app.json',
dotEnvPath: development ? '.development' : '.production',
})