node-mima
v1.0.1
Published
Parses and merges configurations.
Downloads
3
Readme
Readme
Read, merge, and create configurations files in YAML or JSON format.
Usage
import Mima from "mima"
/* Example configurations */
const defaultConfiguration = {
app: {
pidFile: "/tmp/app.pid",
logFile: null,
},
server: {
port: 3000,
allowedHosts: ["example.org", "www.example.org"],
},
}
const configuration1 = {
app: {
logFile: "/var/log/app.log",
},
server: {
allowedHosts: ["public.example.org"],
},
}
const configuration2 = {
app: {
pidFile: "/run/app.pid",
},
security: {
useTls: true,
tlsVersion: "1.3",
},
}
/* Example configuration files */
const configurationDir = "/tmp/mima"
const configurationFile1 = path.join(configurationDir, "conf1.yaml")
const configurationFile2 = path.join(configurationDir, "conf2.json")
/* Example options */
const options = {
saveAdditionalKeys: true,
createMissingConfigurationFiles: true,
}
/* Apply configurations */
const mima = new Mima(defaultConfiguration, options)
const conf = mima
.load(
configuration1,
configuration2,
configurationFile1,
configurationFile2
)
.get()
// If configurationFile1 and/or configurationFile2 do not exist, they will,
// respectively, be created and populated with the merged configuration from
// defaultConfiguration, configuration1, and configuration2. Otherwise they will
// be read, and their configuration data will be merged into the previous
// configurations.
console.log(conf)
// {
// app: {
// pidFile: "/run/app.pid",
// logFile: "/var/log/app.log",
// },
// server: {
// port: 3000,
// allowedHosts: ["public.example.org"],
// },
// security: {
// useTls: true,
// tlsVersion: "1.3",
// },
// }
Options
saveAdditionalKeys?: boolean = false
Whether or not to add properties that are not in the default configuration to the resulting merged configuration.
createMissingConfigurationFiles?: boolean = false
Whether to automatically create configuration files that do not exist in the file system
ignoreMissingConfigurationFiles?: boolean = true
Whether to continue without throwing an error if a configuration file is missing.
Note that this options has no effect if createMissingConfigurationFiles
is set
to true.
populate?: boolean = true
Whether to populate newly created configuration files with the currently loaded configuration data.
preferredTabWidth?: number = 2
The tab width you would like to use for configuration files created by this class.