🍣 A Rollup plugin which Converts YAML files to ES6 modules.
This plugin requires an LTS Node version (v14.0.0+) and Rollup v1.20.0+.
Using npm:
npm install @rollup/plugin-yaml --save-dev
Create a rollup.config.js
configuration file and import the plugin:
import yaml from '@rollup/plugin-yaml';
export default {
input: 'src/index.js',
output: {
dir: 'output',
format: 'cjs'
},
plugins: [yaml()]
};
Then call rollup
either via the CLI or the API.
With an accompanying file src/index.js
, the local heroes.yaml
file would now be importable as seen below:
// src/index.js
import { batman } from './heroes.yaml';
console.log(`na na na na ${batman}`);
Type: String
Default: single
If single
, specifies that the target YAML documents contain only one document in the target file(s). If more than one document stream exists in the target YAML file(s), set documentMode: 'multi'
.
Type: String
| Array[...String]
Default: null
A picomatch pattern, or array of patterns, which specifies the files in the build the plugin should ignore. By default no files are ignored.
Type: String
| Array[...String]
Default: null
A picomatch pattern, or array of patterns, which specifies the files in the build the plugin should operate on. By default all files are targeted.
Type: Boolean
Default: true
If true
, specifies that the data in the target YAML file(s) contain trusted data and should be loaded normally. If false
, data is assumed to be untrusted and will be loaded using safety methods.
Type: Function
Default: undefined
A function which can optionally mutate parsed YAML. The function should return the mutated object
, or undefined
which will make no changes to the parsed YAML.
yaml({
transform(data, filePath) {
if (Array.isArray(data) && filePath === './my-file.yml') {
return data.filter((character) => !character.batman);
}
}
});