Skip to content
This repository was archived by the owner on Feb 18, 2024. It is now read-only.

Commit

Permalink
Merge pull request #3 from eliperelman/merge-rule-loaders
Browse files Browse the repository at this point in the history
Allowing config merge to append to existing rule loaders
  • Loading branch information
eliperelman authored Feb 26, 2017
2 parents 26e8596 + 7bc9f0b commit a479117
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 2 deletions.
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,8 @@
"src"
],
"author": "Eli Perelman <eli@eliperelman.com>",
"license": "MIT"
"license": "MIT",
"dependencies": {
"deepmerge": "^1.3.2"
}
}
17 changes: 16 additions & 1 deletion src/Rule.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const ChainedMap = require('./ChainedMap');
const Loader = require('./Loader');
const merge = require('deepmerge');

module.exports = class extends ChainedMap {
constructor(parent) {
Expand Down Expand Up @@ -92,7 +93,21 @@ module.exports = class extends ChainedMap {
case 'loader': {
return Object
.keys(value)
.forEach(name => this.loader(name, value[name].loader, value[name].options));
.forEach(name => {
if (!this.loaders.has(name)) {
return this.loader(name, value[name].loader, value[name].options);
}

const loader = this.loaders.get(name);

if (value[name].loader) {
loader.loader = value[name].loader;
}

if (value[name].options) {
loader.options = merge(loader.options, value[name].options);
}
});
}

default: {
Expand Down
7 changes: 7 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


deepmerge@^1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.3.2.tgz#1663691629d4dbfe364fa12a2a4f0aa86aa3a050"

0 comments on commit a479117

Please sign in to comment.