Easy user application configuration management
When requiring the library, user-config returns a function which is used to instantiate a config object that allows getting and setting of config values:
const createConfig = require("user-config");
const config = createConfig("my-app");
// items in config are stored in objects and must be serialisable
config.set("some.config.item", 123);
Configuration changes should be saved after being changed:
const config = require("user-config")("my-app");
config.set("port", 443);
config.save();
Values can easily be retrieved from the store, including entire objects:
const config = require("user-config")("my-app");
console.log(`Application running on interface ${config.get("listen.ip")}`);
Outdated configurations can be updated using a templating system. By passing a template to the creation of the config store, old configurations can be merged with the template to ensure the presence of keys and structures:
const createConfig = require("user-config");
const TEMPLATE = {
ip: "0.0.0.0",
encryption: {
mode: "aes-gcm"
}
}
const config = createConfig("my-app", TEMPLATE);
config.get("encryption.mode"); // "aes-gcm"
When being used in the context of a browser, user-config knows to use localStorage
instead of the filesystem. Storage switching is transparent.