YAML loader for Webpack. Allows importing YAML files as JS objects. Uses yaml
internally.
npm install --save-dev yaml-loader
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.ya?ml$/,
type: 'json', // Required by Webpack v4
use: 'yaml-loader'
}
]
}
}
# file.yaml
---
config:
js:
key: test
hello: world
// application.js
import file from './file.yaml'
file.hello === 'world'
In addition to all yaml
options, the loader supports the following additional options:
If enabled, parses the source file as a stream of YAML documents. With this, the output will always be an array, with entries for each document. If set, namespace
is ignored.
To use this option for only some YAML files, it's probably easiest to use a query parameter and match that using Rule.resourceQuery:
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.ya?ml$/,
type: 'json', // Required by Webpack v4
oneOf: [
{
resourceQuery: /stream/,
options: { asStream: true },
use: 'yaml-loader'
},
{ use: 'yaml-loader' }
]
}
]
}
}
Then, importing ./foo.yaml
will expect it to contain only one document, but ./bar.yaml?stream
may contain multiple documents.
Allows for exposing a sub-tree of the source document:
import jsCfg from './file.yaml?namespace=config.js'
jsCfg.key === 'test'
The namespace
should be a series of keys, dot separated. Note that any options
object in your webpack.config.js
rule will be superseded by a ?query
.