1.0.4 • Published 4 years ago

@promotively/config v1.0.4

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

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

@promotively/config

Universal/isomorphic javascript library for configuration file fetching.

Why?

  • You need a simple and consistent cross platform interface to handle runtime configuration file management.
  • 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.
  • You don't wan't to use webpack.DefinePlugin.

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 esdoc.

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

FunctionArgumentsDescription
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

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

5 years ago

1.0.0

5 years ago