uni-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.js
-
mycustomenv.js
wheremycustomenv
is what you would set NODE_ENV to local.js
Defaults:
By default config object is supplied with the following properties:
-
environment
is the value ofNODE_ENV
environment variable or'development'
-
debug
istrue
ifenvironment
isdevelopment
-
sandbox
istrue
ifSANDBOX
environment variable is set totrue
ordebug
istrue
Options:
All options can be set in the process environment:
-
NODE_ENV
sets node environment, default:development
-
SANDBOX
sets sandbox mode, default: (empty), accepts:true
-
CONFIG_DIR
sets the name/path to config folder, relative to the project root, default:config
Usage:
const config = require('uni-config');
// use your config
There is a special UniConfigPlugin for Webpack to bundle config in your client app:
const UniConfigPlugin = require('uni-config/plugin');
// ...
plugins: [
new UniConfigPlugin(options),
],
UniConfigPlugin 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,
};