1.0.2 • Published 4 years ago
@flashfix/config v1.0.2
@flashfix/config
Shared config for universal JavaScript apps.
Loads configs in a certain order, next config always overriding previous one. Performs a deep merge of nested properties.
To use this module create a config folder next to your node_modules folder with one of the following files (loaded in this order):
default.jsmycustomenv.jswheremycustomenvis what you would set NODE_ENV tolocal.js
Defaults:
By default config object is supplied with the following properties:
environmentis the value ofNODE_ENVenvironment variable or'development'debugistrueifenvironmentisdevelopmentsandboxistrueifSANDBOXenvironment variable is set totrueordebugistrue
Options:
All options can be set in the process environment:
NODE_ENVsets node environment, default:developmentSANDBOXsets sandbox mode, default: (empty), accepts:trueCONFIG_DIRsets the name/path to config folder, relative to the project root, default:config
Usage:
const config = require('@flashfix/config');
// use your configThere is a special ConfigPlugin for Webpack to bundle config in your client app:
const ConfigPlugin = require('@flashfix/config/plugin');
// ...
plugins: [
new ConfigPlugin(options),
],ConfigPlugin accepts an options object:
const options = {
// An optional function to filter full config and hide secrets from the client app.
// By default entire config object will be accessible to the client.
// It's highly recommended to pass this function to filter your full config and only output
// client relevant portions preserving original object structure.
getConfig: (fullConfig) => {
const { clientSafePortion } = fullConfig;
const configWithoutSecrets = { clientSafePortion };
return configWithoutSecrets;
},
// An optional boolean flag that switches internal loader output
// between ES Module (default) and Common JS format
esModule: true,
};