config-expander

Expands expressions in config files

Usage no npm install needed!

<script type="module">
  import configExpander from 'https://cdn.skypack.dev/config-expander';
</script>

README

npm License minified size downloads GitHub Issues Build Status Styled with prettier Commitizen friendly Known Vulnerabilities Coverage Status

config-expander

Expands expressions in config files

example

file.js

import { expand } from "config-expander";

// expanding hole expressions at the value position (result key is a number)
expand({ key: "${value + 1}" }, { constants: { value: 77 } }).then(r =>
  console.log(JSON.stringify(r))
);

// calculate port numbers
expand({ constants: { base: 10000 }, http: { port: "${base + 1}" } }).then(r =>
  console.log(JSON.stringify(r))
);

// load config from file
expand("${include('tests/fixtures/other.json')}").then(r =>
  console.log(JSON.stringify(r))
);

Output

{ "key" : 78 }
{ "constants": { "base": 10000 }, "http": { "port": 10001 }}
{ "key": "value from other" }

Examples

read config file (json)

const configuration await expand("${include('" + '/path/to/the/config.json' + "')}")

load key file

{
  "ca": "${document(os.home + '/ca.pem')}"
}

calculate port numbers

{
  "http-port": "${base + 0}",
  "https-port": "${base + 1}"
}

conditions

{
  "copy-cmd": "${os.platform == 'win32' ? 'copy' : 'cp'}"
}

API

Table of Contents

defaultConstants

Predefined constants

Type: Object

Properties

  • env Object environment variables from process.env
  • os Object os module
  • basedir string filesystem configuration start point

expand

Expands expressions in a configuration object

Parameters

  • config Object config source

  • options Object the options (optional, default {})

    • options.constants Object additional constants
    • options.default Object default configuration
    • options.functions Object additional functions

Returns Promise resolves to the expanded configuration

Value

Type: Object

Properties

Apply

Type: Function

Parameters

ConfigFunction

Type: Object

Properties

functions

knwon functions

include

include definition form a file

Parameters

  • file string file name to be included

Returns string content of the file

replace

Replace string

Parameters

Returns string replaced content

toUpperCase

convert string into upper case

Parameters

Returns string uppercase result

toLowerCase

convert string into lower case

Parameters

Returns string lowercase result

split

split source string on pattern boundaries

Parameters

Returns Array<string> separated source

encrypt

Encrypt a plaintext value

Parameters

Returns string encrypted value

decrypt

Decrypt a former encrypted string

Parameters

Returns string plaintext

spawn

Call programm

Parameters

Returns string stdout

merge

merge from b into a When a and b are arrays of values only the none duplaces are appendend to a

Parameters

  • a any
  • b any

Returns any merged b into a

install

With npm do:

npm install config-expander

license

BSD-2-Clause