1.0.1 • Published 9 months ago

node-mima v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
9 months ago

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.