eemeli/yaml-loader

YAML loader for webpack

153

stars

76

commits

JavaScript

primary language

May 22, 2026

updated

npmjs.com/package/yaml-loader

README

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$/,
        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 used by its parsing methods, the loader supports the following additional options:

asJSON

If enabled, the loader output is stringified JSON rather than stringified JavaScript. Also useful for chaining with other loaders that expect JSON input.

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$/,
        oneOf: [
          {
            resourceQuery: /stream/,
            options: { asStream: true },
            loader: 'yaml-loader'
          },
          { loader: '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

Contributors

eemeli

50 commits

okonet

16 commits

francois2metz

2 commits

hiyangguo

1 commits

eemeli/yaml-loader

YAML loader for webpack

153

stars

76

commits

JavaScript

primary language

May 22, 2026

updated

npmjs.com/package/yaml-loader

README

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$/,
        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 used by its parsing methods, the loader supports the following additional options:

asJSON

If enabled, the loader output is stringified JSON rather than stringified JavaScript. Also useful for chaining with other loaders that expect JSON input.

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$/,
        oneOf: [
          {
            resourceQuery: /stream/,
            options: { asStream: true },
            loader: 'yaml-loader'
          },
          { loader: '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

Contributors

eemeli

50 commits

okonet

16 commits

francois2metz

2 commits

hiyangguo

1 commits

Languages

JavaScript

100.0%