Read, merge, and create configurations files in YAML or JSON format.
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",
// },
// }
Whether or not to add properties that are not in the default configuration to the resulting merged configuration.
Whether to automatically create configuration files that do not exist in the file system
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.
Whether to populate newly created configuration files with the currently loaded configuration data.
The tab width you would like to use for configuration files created by this class.