Socket
Socket
Sign inDemoInstall

webpack-merge

Package Overview
Dependencies
Maintainers
1
Versions
91
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webpack-merge - npm Package Compare versions

Comparing version 0.6.0 to 0.7.0

6

CHANGELOG.md

@@ -0,1 +1,7 @@

0.7.0 / 2015-12-31
==================
* Bug fix: Arrays get merged within nested structures correctly now. Array items are prepended (reverse order compared to earlier). This is related to the change made in *0.6.0*. Incidentally this change affects normal merge as well.
* Smart merge: If a loader contains either `include` or `exclude`, it will generate separate entries instead of merging. Without this the configuration might change in an unpredictable manner.
0.6.0 / 2015-12-30

@@ -2,0 +8,0 @@ ==================

10

lib/index.js

@@ -21,2 +21,6 @@ 'use strict';

if (foundLoader.include || foundLoader.exclude) {
return [].concat(_toConsumableArray(mergedLoaderConfigs), [loaderConfig]);
}
foundLoader.loaders = newLoaders.reduce(function (mergedLoaders, loader) {

@@ -34,3 +38,3 @@ var loaderName = loader.match(loaderNameRe)[0];

} else if (!foundLoader) {
return [loaderConfig].concat(_toConsumableArray(mergedLoaderConfigs));
return [].concat(_toConsumableArray(mergedLoaderConfigs), [loaderConfig]);
}

@@ -49,7 +53,7 @@

return b.concat(a);
return a.concat(b);
}
if (isPlainObject(a) && isPlainObject(b)) {
return merge(a, b, joinArrays.bind(null, function () {}));
return merge(a, b, joinArrays.bind(null, customizer));
}

@@ -56,0 +60,0 @@

@@ -5,3 +5,3 @@ {

"author": "Juho Vepsalainen <bebraw@gmail.com>",
"version": "0.6.0",
"version": "0.7.0",
"scripts": {

@@ -8,0 +8,0 @@ "build": "babel src -d lib",

@@ -15,2 +15,6 @@ const isArray = Array.isArray;

if (foundLoader.include || foundLoader.exclude) {
return [...mergedLoaderConfigs, loaderConfig];
}
foundLoader.loaders = newLoaders.reduce((mergedLoaders, loader) => {

@@ -25,5 +29,4 @@ const loaderName = loader.match(loaderNameRe)[0];

}, foundLoader.loaders);
} else if (!foundLoader) {
return [loaderConfig, ...mergedLoaderConfigs];
return [...mergedLoaderConfigs, loaderConfig];
}

@@ -42,7 +45,7 @@

return b.concat(a);
return a.concat(b);
}
if (isPlainObject(a) && isPlainObject(b)) {
return merge(a, b, joinArrays.bind(null, () => {}));
return merge(a, b, joinArrays.bind(null, customizer));
}

@@ -49,0 +52,0 @@

@@ -45,6 +45,12 @@ /* eslint-env mocha */

}];
const c = {
const result = {
module: {}
};
c.module[loadersKey] = [{
result.module[loadersKey] = [{
test: /\.css$/,
loader: 'b'
}, {
test: /\.sass$/,
loader: 'b'
}, {
test: /\.js$/,

@@ -55,11 +61,5 @@ loader: 'a'

loader: 'a'
}, {
test: /\.css$/,
loader: 'b'
}, {
test: /\.sass$/,
loader: 'b'
}];
assert.deepEqual(merge(a, b), c);
assert.deepEqual(merge(a, b), result);
});

@@ -81,8 +81,5 @@

}];
const c = {};
c[loadersKey] = [{
const result = {};
result[loadersKey] = [{
test: /\.js$/,
loader: 'a'
}, {
test: /\.js$/,
loader: 'b'

@@ -92,5 +89,8 @@ }, {

loader: 'b'
}, {
test: /\.js$/,
loader: 'a'
}];
assert.deepEqual(merge(a, b), c);
assert.deepEqual(merge(a, b), result);
});

@@ -112,8 +112,5 @@

}];
const c = {};
c[loadersKey] = [{
const result = {};
result[loadersKey] = [{
test: /\.js$/,
loaders: ['a']
}, {
test: /\.js$/,
loaders: ['b']

@@ -123,5 +120,8 @@ }, {

loader: 'b'
}, {
test: /\.js$/,
loaders: ['a']
}];
assert.deepEqual(merge(a, b), c);
assert.deepEqual(merge(a, b), result);
});

@@ -140,12 +140,12 @@

}];
const c = {};
c[loadersKey] = [{
const result = {};
result[loadersKey] = [{
test: /\.js$/,
loaders: ['a']
loaders: ['a', 'b']
}, {
test: /\.js$/,
loaders: ['a', 'b']
loaders: ['a']
}];
assert.deepEqual(merge(a, b), c);
assert.deepEqual(merge(a, b), result);
});

@@ -169,6 +169,6 @@

}];
const d = {};
d[loadersKey] = [{
const result = {};
result[loadersKey] = [{
test: /\.js$/,
loaders: ['a?1']
loaders: ['a', 'b?3']
}, {

@@ -179,6 +179,6 @@ test: /\.js$/,

test: /\.js$/,
loaders: ['a', 'b?3']
loaders: ['a?1']
}];
assert.deepEqual(merge(a, b, c), d);
assert.deepEqual(merge(a, b, c), result);
});

@@ -194,4 +194,4 @@ }

}];
const b = {};
b[loadersKey] = [{
const result = {};
result[loadersKey] = [{
test: /\.js$/,

@@ -204,3 +204,3 @@ loader: 'b'

assert.deepEqual(merge(a, b), b);
assert.deepEqual(merge(a, result), result);
});

@@ -222,4 +222,4 @@

}];
const c = {};
c[loadersKey] = [{
const result = {};
result[loadersKey] = [{
test: /\.js$/,

@@ -236,3 +236,3 @@ // loaders are evaluated from right to left so it makes sense to

assert.deepEqual(merge(a, b), c);
assert.deepEqual(merge(a, b), result);
});

@@ -254,4 +254,4 @@

}];
const c = {};
c[loadersKey] = [{
const result = {};
result[loadersKey] = [{
test: /\.js$/,

@@ -268,3 +268,3 @@ // loaders are evaluated from right to left so it makes sense to

assert.deepEqual(merge(a, b), c);
assert.deepEqual(merge(a, b), result);
});

@@ -283,4 +283,4 @@

}];
const c = {};
c[loadersKey] = [{
const result = {};
result[loadersKey] = [{
test: /\.js$/,

@@ -290,3 +290,3 @@ loaders: ['a', 'b']

assert.deepEqual(merge(a, b), c);
assert.deepEqual(merge(a, b), result);
});

@@ -310,4 +310,4 @@

}];
const d = {};
d[loadersKey] = [{
const result = {};
result[loadersKey] = [{
test: /\.js$/,

@@ -317,4 +317,132 @@ loaders: ['a', 'b?3']

assert.deepEqual(merge(a, b, c), d);
assert.deepEqual(merge(a, b, c), result);
});
it('should merge module.loaders for ' + loadersKey, function () {
const common = {
module: {}
};
common.module[loadersKey] = [
{
test: /\.jsx?$/,
loaders: ['eslint']
}
];
const isparta = {
module: {}
};
isparta.module[loadersKey] = [
{
test: /\.jsx?$/,
loaders: ['isparta-instrumenter']
}
];
const result = {
module: {}
};
result.module[loadersKey] = [
{
test: /\.jsx?$/,
loaders: ['isparta-instrumenter', 'eslint']
}
];
assert.deepEqual(merge(common, isparta), result);
});
it('should not merge if a loader has include for ' + loadersKey, function () {
// these shouldn't be merged because `include` is defined.
// instead, it should prepend to guarantee sane evaluation order
const common = {
module: {}
};
common.module[loadersKey] = [
{
test: /\.jsx?$/,
loaders: ['eslint'],
include: [
'foo',
'bar'
]
}
];
const isparta = {
module: {}
};
isparta.module[loadersKey] = [
{
test: /\.jsx?$/,
loaders: ['isparta-instrumenter'],
include: 'baz'
}
];
const result = {
module: {}
};
result.module[loadersKey] = [
{
test: /\.jsx?$/,
loaders: ['isparta-instrumenter'],
include: 'baz'
},
{
test: /\.jsx?$/,
loaders: ['eslint'],
include: [
'foo',
'bar'
]
}
];
assert.deepEqual(merge(common, isparta), result);
});
it('should not merge if a loader has exclude for ' + loadersKey, function () {
// these shouldn't be merged because `exclude` is defined.
// instead, it should prepend to guarantee sane evaluation order
const common = {
module: {}
};
common.module[loadersKey] = [
{
test: /\.jsx?$/,
loaders: ['eslint'],
exclude: [
'foo',
'bar'
]
}
];
const isparta = {
module: {}
};
isparta.module[loadersKey] = [
{
test: /\.jsx?$/,
loaders: ['isparta-instrumenter'],
exclude: 'baz'
}
];
const result = {
module: {}
};
result.module[loadersKey] = [
{
test: /\.jsx?$/,
loaders: ['isparta-instrumenter'],
exclude: 'baz'
},
{
test: /\.jsx?$/,
loaders: ['eslint'],
exclude: [
'foo',
'bar'
]
}
];
assert.deepEqual(merge(common, isparta), result);
});
}

@@ -333,6 +461,7 @@

};
const result = {
foo: ['c', 'b', 'a']
};
assert.deepEqual(merge(a, b, c), {
foo: ['a', 'b', 'c']
});
assert.deepEqual(merge(a, b, c), result);
});

@@ -344,7 +473,7 @@

};
const b = {
const result = {
foo: 'b'
};
assert.deepEqual(merge(a, b), b);
assert.deepEqual(merge(a, result), result);
});

@@ -359,6 +488,7 @@

};
const result = {
foo: ['b', 'a']
};
assert.deepEqual(merge(a, b), {
foo: ['a', 'b']
});
assert.deepEqual(merge(a, b), result);
});

@@ -373,2 +503,5 @@

};
const result = {
foo: ['b', 'a']
};

@@ -378,5 +511,3 @@ // this should not mutate

assert.deepEqual(merge(a, b), {
foo: ['a', 'b']
});
assert.deepEqual(merge(a, b), result);
});

@@ -391,8 +522,8 @@

};
const c = {
const result = {
foo: 'c'
};
assert.deepEqual(merge(a, b, c), c);
assert.deepEqual(merge(a, b, result), result);
});
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc