Command line tools for config your project.
Setup.js uses help files:
- defaults.json — default config file
- presets.json — file with presets for different environments
- env-map.json — map for environment variables into config
Setup.js generates config.json file with current config from help files by commands set
, unset
, preset
, reset
, env
, extend
. config.json may bee ignored in CVS for project.
Each developer can use his own config, changing config.json manually or by cli tool.
npm install setupjs
or global
npm install -g setupjs
Initialize tools for your project:
$(npm bin)/setupjs init
For global:
setupjs init
Customize paths to help files if needed by params -c, -e, -p, -s
.
Add config.json in .gitignore.
For local installation:
npm run setup -- <params>
For global installation:
setupjs <params>
- -h, --help — show help
- -V, --version — show version
- -v, --verbose — run commands in verbose mode and print config.json
- -c, --config [file] — redefine path to config file (config.json)
- -p, --presets [file] — redefine path to presets file (presets.json)
- -e, --env-map [file] — redefine path to environment variables map file (env-map.json)
- -d, --defaults [file] — redefine path to default config file (defaults.json)
init
— init Setup.js in project;env
— config from environment variables mapped by env-map.json;extend [path]
— extend config from JSON file;preset [name]
— set (extending) config from presets;set [<key> <value>]...
— set config params by key/value pairs;unset [key]...
— unset config params by keys;reset
— reset config to default params.
Reset config.json to config from defaults.json
Set (with deep extending) from presets file (see ./examples/environments.json
).
First indent fields must be a names of presets. For example:
{
"producton": { // name of preset
"server": {
"url": "https://example.com/api"
}
},
"staging": { // name of preset
"server": {
"url": "https://staging.example.com/api"
}
}
}
Available presets: producton
and staging
.
Use example:
setupjs preset staging
Config:
{
"server": {
"url": "https://staging.example.com/api"
}
}
Update config from environment variables:
setupjs env
env-map.json example:
{
"HOST": "server.host",
"PORT": "server.port",
"FLAG_ONE": "server.flags.one"
}
Use example:
export HOST=127.0.0.11
export PORT=8080
export FLAG_ONE=false
setupjs env
Config:
{
"server": {
"url": "https://staging.example.com/api",
"host": "127.0.0.11",
"port": 8080,
"flags": {
"one": false
}
}
}
Extend config from some JSON file.
Example file extend_example.json:
{
"server": {
"port": 8888,
"flags": {
"two": true
},
"remote": [1, 2, 3]
}
}
Use exapmpe:
setupjs extend ./extend_example.json
Config:
{
"server": {
"url": "https://staging.example.com/api",
"host": "127.0.0.11",
"port": 8888,
"flags": {
"one": false,
"two": true
},
"remote": [1, 2, 3]
}
}
Set (with deep extending) config key/value pairs:
setupjs set server.url https://example.com/api server.producton true server timeout 5000 server.local.list `[1,3,4]`
Config:
{
"server": {
"url": "https://example.com/api",
"host": "127.0.0.11",
"port": 8888,
"producton": true,
"timeout": 5000,
"flags": {
"one": false,
"two": true
},
"remote": [1, 2, 3],
"local": {
"list": [1, 3, 4]
}
}
}
Tool set value type automaticly.
Next call:
setupjs set server.url https://staging.example.com/api server.flags.one true server.local null debug true
Config:
{
"server": {
"url": "https://staging.example.com/api",
"host": "127.0.0.11",
"port": 8080,
"producton": true,
"timeout": 5000,
"flags": {
"one": true,
"two": true
},
"remote": [1, 2, 3],
"local": null
},
"debug": true
}
Remove (with deep extending) params by keys.
For example (config from set
examples):
setupjs unset debug server.flags server.producton
Config:
{
"server": {
"url": "https://staging.example.com/api",
"host": "127.0.0.11",
"port": 8080,
"timeout": 5000,
"remote": [1, 2, 3],
"local": null
}
}
See releases on Releases page.
Rename settings.json to defaults.json and environments.json to presets.json. Run setupjs init
.