config-variables

1.1.1 • Public • Published

Config Variables CircleCI

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',
})

Readme

Keywords

Package Sidebar

Install

npm i config-variables

Weekly Downloads

677

Version

1.1.1

License

ISC

Last publish

Collaborators

  • cheerypick
  • einarlove
  • pawelkocot
  • hjnilsson
  • unfold-oslo