# Neutrino Loader Merge Middleware [![NPM version][npm-image]][npm-url] [![NPM downloads][npm-downloads]][npm-url] [![Join Slack][slack-image]][slack-url] `neutrino-middleware-loader-merge` is Neutrino middleware for easily performing a deep merge of options into a named rule and named loader in a Neutrino configuration. ## Requirements - Node.js v6.9+ - Yarn or npm client - Neutrino v5 ## Installation `neutrino-middleware-loader-merge` can be installed via the Yarn or npm clients. #### Yarn ```bash ❯ yarn add neutrino-middleware-loader-merge ``` #### npm ```bash ❯ npm install --save neutrino-middleware-loader-merge ``` ## Usage `neutrino-middleware-loader-merge` can be consumed from the Neutrino API, middleware, or presets. Require this package and plug it into Neutrino: ```js const loaderMerge = require('neutrino-middleware-loader-merge'); neutrino.use(loaderMerge('compile', 'babel'), { plugins: ['object-rest-spread'] }); // Equivalent to: neutrino.config.module .rule('compile') .use('babel') .tap(options => require('deepmerge')(options, { plugins: ['object-rest-spread'] })); ``` This middleware is a factory intended to be invoked with a rule name and a loader name for which to extend the options. Upon invoking, it will return a middleware function to be provided to Neutrino's `use()` method. ```js const middleware = loaderMerge(ruleName, loaderName); neutrino.use(middleware, options); ``` ## Customization `neutrino-middleware-loader-merge` does not create any of its own conventions; it is only middleware for extending the options for a rule loader which has create its own conventions. ## Contributing This preset is part of the [neutrino-dev](https://github.com/mozilla-neutrino/neutrino-dev) repository, a monorepo containing all resources for developing Neutrino and its core presets. Follow the [contributing guide](https://neutrino.js.org/contributing) for details. [npm-image]: https://img.shields.io/npm/v/neutrino-middleware-loader-merge.svg [npm-downloads]: https://img.shields.io/npm/dt/neutrino-middleware-loader-merge.svg [npm-url]: https://npmjs.org/package/neutrino-middleware-loader-merge [slack-image]: https://neutrino-slack.herokuapp.com/badge.svg [slack-url]: https://neutrino-slack.herokuapp.com/