Skip to content
YAML loader for webpack (converts YAML to JSON)
JavaScript
Branch: master
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
test chore: Apply Prettier styling Mar 15, 2020
.gitignore Initial commit May 20, 2014
.travis.yml ci: Add Travis CI testing Mar 15, 2020
LICENSE docs: Update LICENSE with "Copyright Eemeli Aro and other contributors" Mar 21, 2020
README.md chore: Apply Prettier styling Mar 15, 2020
index.js chore: Apply Prettier styling Mar 15, 2020
package-lock.json
package.json

README.md

yaml-loader for Webpack

YAML loader for Webpack. Allows importing YAML files as JS objects. Uses yaml internally.

Installation

npm install --save-dev yaml-loader

Usage

// 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'

Options

In addition to all yaml options, the loader supports the following additional options:

asStream

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.

namespace

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.

License

MIT

You can’t perform that action at this time.