Package Exports
- config-sets
- config-sets/package.json
Readme
Config Sets
Easy app configure in real time.
π Table of contents
- β¨ Features
- π Description
- π¦ Installation
- π Usage
- π§ͺ Testing
- π οΈ API Reference
- π License - MIT
β¨ Features
- Read and write configuration settings to a
config-sets.jsonfile. - Handle command-line arguments for configuration settings.
- Watch for changes to the configuration file and update settings in real time.
- Easy to use and integrate into Node.js applications.
- Part of the 'conextra' framework.
- Uses the 'data-context' module for data management.
- Supports metadata and comments in JSON files.
- Extended JSON parsing for incremental updates.
- MIT License.
π Description
This Node.js module manages configuration settings by reading from and writing to a config-sets.json file.
It handles command-line arguments and watches for changes to the configuration file.
It allows you to create applications that can be configured in real time.
This module is part of the 'conextra' framework,
which is a simple and easy-to-use single-page application (SPA) framework.
You have to try it! A different solution than MVC (modelβviewβcontroller).
Please note, this version is not backward compatible with version 2.x
Please note that JSON string is not 100% compatible.
It has been extended to allow for incremental updates of JSON files.
Added the ability to include metadata and comments.
Parsing of JSON files is enabled.
π¦ Installation
To install the module, use npm:
npm install config-setsπ Usage
Basic Usage
To use the module, require it in your script and call the configSets function:
const configSets = require('config-sets');
const config = configSets({
'-metadata-key1': ' key1 comment ',
key1: 'value1',
'-metadata-key2': ' key2 comment ',
key2: 'value2'
});
const moduleConfig = configSets('moduleName', { key1: 'value1', key2: 'value2' });
console.log(config);
config.on('key1', function (ev) { console.log(ev); return true; });
file: config-sets.json
/* Configuration settings for application. */
{
/* Set to true to use production settings, */
/* false for development settings. Default is true. */
"isProduction": true,
/* Settings used in production mode. */
/* These settings are saved to "config-sets.json" file. */
"production": {
/* key1 comment */
"key1": "value1",
/* key2 comment */
"key2": "value2",
"moduleName": {
"key1": "value1",
"key2": "value2"
}
},
/* Settings used in development mode. */
/* These settings are not saved to file and are created from production settings. */
/* You can override these settings using command line arguments. */
/* Set only the settings you want to change. */
"development": {}
}Command-Line Arguments
You can pass configuration settings via command-line arguments:
node index.js --key1=value1 --key2=value2
node index.js --help
Watching for Changes
The module watches the config-sets.json file for changes and updates the configuration settings accordingly.
This uses the 'data-context' module. Read more about how to use it.
config.on('key1', function (ev) { console.log(ev); return true; });π§ͺ Testing
You can test config-sets on your system using this command:
node ./node_modules/config-sets/index.testor in the config-sets project directory:
npm testπ οΈ API Reference
Main Function
configSets(configModuleName, defaultConfigSettings)
configModuleName(optional): The name of the module to set or update configuration settings for.defaultConfigSettings: The default configuration settings.
Returns the current configuration settings.
Static Properties
configSets.isProduction: Indicates if the environment is production.configSets.production: Contains production-specific configuration settings.configSets.development: Contains development-specific configuration settings.configSets.enableFileReadWrite(default: true): Determines if changes to the configuration should be saved automatically.
Helper Functions
assign(target, source, overwriteChanges)
target: The target object to merge properties into.source: The source object containing properties to merge.overwriteChanges(optional): A boolean indicating whether to overwrite existing properties in the target object.
Merges source objects into a target object.
arg_options()
Parses command-line arguments into an object.
Returns an object containing the parsed command-line arguments.
print_help()
Prints the help message.
π License
This project is licensed under the MIT License.
Copyright © Manuel LΓ΅hmus