Basic Yaml Loading with additional functionality, i.e. resolve file depedencies, resolve variables, deep merge hierachies.
Useful for loading improved serverless configuration. For yaml loading this package uses js-yaml.
$ npm install --save yaml-boost
Resolve content with variables at given refPath.
Load filePath with given variables.
As provided by js-yaml
through safeDump
const yaml = require('yaml-boost');
yaml.load('config.yaml');
Matching yaml.dump()
function is also available.
Works identical to how this is defined for serverless here.
Both yml
and yaml
file endings are supported.
${file(./path/to/file.yml), key1=value1&key2=value2}
You can reference packages by using
${require(PACKAGE):path.to.key.in.module}
Reference js instead of yaml files.
${file(./path/to/file.js)}
The reference file needs to export simple object containing configuration
module.exports = {};
Reference function inside js file.
${fileFn(./path/to/file.js)}
The reference file needs to export simple function returning an object. Available variables are passed in.
module.exports = (args) => ({ args });
Once can reference files relative to the current file by using ^
as a prefix like so
${file(^/subfolder/of/current/file.yml)}
Analogue to the <<
yaml syntax we can use <<<
to deep merge into the current nesting level.
This is helpful when merging files into already existing hierarchies.
Example:
data:
- list entry one
<<<:
- data:
- list entry two
- other: things
results in
data:
- list entry one
- list entry two
other: things
Define serverless.js
as
const path = require('path');
const minimist = require('minimist');
const yaml = require('yaml-boost');
module.exports = yaml.load(path.join(__dirname, 'serverless.core.yml'), minimist(process.argv.slice(2)));
Then instead of defining serverless.yml
, define your config in serverless.core.yml
.