Skip to content

Universal/isomorphic javascript library for configuration file fetching.

License

Notifications You must be signed in to change notification settings

promotively/config

Repository files navigation

@promotively/config

MIT License NPM Version Coverage Status Build Status GitHub Issues GitHub Pull Requests

Universal/isomorphic javascript/typescript library for configuration file fetching.

Why?

  • You need a simple and consistent cross platform interface to handle runtime configuration file management.
  • You can't embed your configurations using solutions like like dotenv or webpack.DefinePlugin because you need to have a single set of build artifacts that can be deployed to any environment.
  • You want to use the same configuration across your browser and server apps or development tool configuration files.
  • You want the ability to quickly change configurations or environments without having to perform application builds.

Installation

With Yarn

yarn add @promotively/config

With NPM

npm install @promotively/config

Example

A working example is available inside the /example folder.

Run node example/app.js to see your current environment and config.

Documentation

The source code is documented using JSDoc syntax and documentation is generated using jsdoc.

Once you have executed yarn docs documentation is available inside the dist/docs folder.

Documentation for the most recent release is also available online.

Setup

Create a file config/ENVIRONMENT containing the word development. Create a file config/development.json containing your app config for development usage. Create a file config/production.json containing your app config for production usage.

// (optional) config/ENVIRONMENT
development
// config/development.json
{
  "APP_PROTOCOL": "http",
  "APP_DOMAIN": "localhost",
  "APP_PORT": 5000
}
// config/production.json
{
  "APP_PROTOCOL": "https",
  "APP_DOMAIN": "app.promotively.com",
  "APP_PORT": 443
}

Usage

// app.js

import { getEnvironment, getConfig } from '@promotively/config';

const fetchConfig = async () => {
  try {
    const environment = await getEnvironment();
    const config = await getConfig(environment);
    const result = { environment, config });

    console.info(result);

    return result;
  } catch (error) {
    throw error;
  }
};

export default fetchConfig;

In the above example when using getEnvironment() the NODE_ENV environment variable will be used if set otherwise an ENVIRONMENT variable/file will be used. (global > environment > file) You can also use a different environment variable or a global variable by configuring options.file with the name of the variable.

API

Function Arguments Description
getEnvironment (options) Fetches the environment using NODE_ENV or an ENVIRONMENT file.
getConfig (environment, options) Set the data loading state.

Linting

This library uses @promotively/eslint-config for its ESLint configuration.

yarn lint

Tests

This library has 100% unit test code coverage.

Code coverage is available inside the dist/coverage folder after running yarn test.

Code coverage for the most recent release is also available online.

Contact

Feel free to reach out using any of the below methods:

License

MIT

About

Universal/isomorphic javascript library for configuration file fetching.

Resources

License

Stars

Watchers

Forks

Packages

No packages published