Skip to content

Commit f8ae245

Browse files
committed
fix: Plugin.install is not a function
clone-deep does not clone properties from the prototype chain, see #181 (comment)
1 parent 13dec00 commit f8ae245

File tree

4 files changed

+18
-100
lines changed

4 files changed

+18
-100
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"node": ">=4.3 <5.0.0 || >=5.10"
3232
},
3333
"dependencies": {
34-
"clone-deep": "^0.2.4",
34+
"clone": "^2.1.1",
3535
"loader-utils": "^1.0.2",
3636
"pify": "^2.3.0"
3737
},

src/getOptions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const loaderUtils = require('loader-utils');
2-
const cloneDeep = require('clone-deep');
2+
const clone = require('clone');
33
const createWebpackLessPlugin = require('./createWebpackLessPlugin');
44

55
/**
@@ -12,7 +12,7 @@ function getOptions(loaderContext) {
1212
plugins: [],
1313
relativeUrls: true,
1414
compress: Boolean(loaderContext.minimize),
15-
...cloneDeep(loaderUtils.getOptions(loaderContext)),
15+
...clone(loaderUtils.getOptions(loaderContext)),
1616
};
1717

1818
// We need to set the filename because otherwise our WebpackFileManager will receive an undefined path for the entry

test/index.test.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,11 +183,13 @@ test('should generate source maps', async () => {
183183

184184
test('should install plugins', async () => {
185185
let pluginInstalled = false;
186-
const testPlugin = {
186+
// Using prototype inheritance here since Less plugins are usually instances of classes
187+
// See https://github.com/webpack-contrib/less-loader/issues/181#issuecomment-288220113
188+
const testPlugin = Object.create({
187189
install() {
188190
pluginInstalled = true;
189191
},
190-
};
192+
});
191193

192194
await compile('basic', moduleRules.basic({ plugins: [testPlugin] }));
193195

yarn.lock

Lines changed: 11 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,14 @@ acorn-jsx@^3.0.0:
3535
dependencies:
3636
acorn "^3.0.4"
3737

38-
acorn@4.0.4:
38+
acorn@4.0.4, acorn@^4.0.3, acorn@^4.0.4:
3939
version "4.0.4"
4040
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
4141

4242
acorn@^3.0.4:
4343
version "3.3.0"
4444
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
4545

46-
acorn@^4.0.3, acorn@^4.0.4:
47-
version "4.0.11"
48-
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0"
49-
5046
agent-base@2:
5147
version "2.0.1"
5248
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e"
@@ -58,7 +54,7 @@ ajv-keywords@^1.0.0, ajv-keywords@^1.1.1:
5854
version "1.5.1"
5955
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
6056

61-
ajv@^4.11.2, ajv@^4.7.0:
57+
ajv@^4.7.0:
6258
version "4.11.5"
6359
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd"
6460
dependencies:
@@ -1087,15 +1083,9 @@ cliui@^3.2.0:
10871083
strip-ansi "^3.0.1"
10881084
wrap-ansi "^2.0.0"
10891085

1090-
clone-deep@^0.2.4:
1091-
version "0.2.4"
1092-
resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6"
1093-
dependencies:
1094-
for-own "^0.1.3"
1095-
is-plain-object "^2.0.1"
1096-
kind-of "^3.0.2"
1097-
lazy-cache "^1.0.3"
1098-
shallow-clone "^0.1.2"
1086+
clone@^2.1.1:
1087+
version "2.1.1"
1088+
resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb"
10991089

11001090
co@^4.6.0:
11011091
version "4.6.0"
@@ -1131,12 +1121,6 @@ commander@^2.8.1, commander@^2.9.0:
11311121
dependencies:
11321122
graceful-readlink ">= 1.0.0"
11331123

1134-
comment-parser@^0.4.0:
1135-
version "0.4.0"
1136-
resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.4.0.tgz#b274a3c924b6b2e55768f712acd3e3003cb55f57"
1137-
dependencies:
1138-
readable-stream "^2.0.4"
1139-
11401124
compare-func@^1.3.1:
11411125
version "1.3.2"
11421126
resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648"
@@ -1760,10 +1744,6 @@ escope@^3.6.0:
17601744
esrecurse "^4.1.0"
17611745
estraverse "^4.1.1"
17621746

1763-
eslint-config-peerigon@^9.0.0:
1764-
version "9.0.0"
1765-
resolved "https://registry.yarnpkg.com/eslint-config-peerigon/-/eslint-config-peerigon-9.0.0.tgz#f664ffe3ddc5e80a653b488abc14b1b3b7865d20"
1766-
17671747
eslint-config-webpack@^1.1.0:
17681748
version "1.1.0"
17691749
resolved "https://registry.yarnpkg.com/eslint-config-webpack/-/eslint-config-webpack-1.1.0.tgz#ef50597c4e249c70a3a787c5c16e9f82ed7e92e3"
@@ -1798,13 +1778,6 @@ eslint-plugin-import@^2.2.0:
17981778
minimatch "^3.0.3"
17991779
pkg-up "^1.0.0"
18001780

1801-
eslint-plugin-jsdoc@^2.4.0:
1802-
version "2.4.0"
1803-
resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-2.4.0.tgz#7c1eaa8e88fab04c807472c17b6ff9a1ac7e564d"
1804-
dependencies:
1805-
comment-parser "^0.4.0"
1806-
lodash "^4.5.1"
1807-
18081781
eslint@^3.17.1:
18091782
version "3.17.1"
18101783
resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.17.1.tgz#b80ae12d9c406d858406fccda627afce33ea10ea"
@@ -1955,15 +1928,6 @@ extglob@^0.3.1:
19551928
dependencies:
19561929
is-extglob "^1.0.0"
19571930

1958-
extract-text-webpack-plugin@^2.1.0:
1959-
version "2.1.0"
1960-
resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.0.tgz#69315b885f876dbf96d3819f6a9f1cca7aebf159"
1961-
dependencies:
1962-
ajv "^4.11.2"
1963-
async "^2.1.2"
1964-
loader-utils "^1.0.2"
1965-
webpack-sources "^0.1.0"
1966-
19671931
extsprintf@1.0.2:
19681932
version "1.0.2"
19691933
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
@@ -2045,15 +2009,11 @@ flat-cache@^1.2.1:
20452009
graceful-fs "^4.1.2"
20462010
write "^0.2.1"
20472011

2048-
for-in@^0.1.3:
2049-
version "0.1.8"
2050-
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
2051-
20522012
for-in@^1.0.1:
20532013
version "1.0.2"
20542014
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
20552015

2056-
for-own@^0.1.3, for-own@^0.1.4:
2016+
for-own@^0.1.4:
20572017
version "0.1.5"
20582018
resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
20592019
dependencies:
@@ -2602,12 +2562,6 @@ is-path-inside@^1.0.0:
26022562
dependencies:
26032563
path-is-inside "^1.0.1"
26042564

2605-
is-plain-object@^2.0.1:
2606-
version "2.0.1"
2607-
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.1.tgz#4d7ca539bc9db9b737b8acb612f2318ef92f294f"
2608-
dependencies:
2609-
isobject "^1.0.0"
2610-
26112565
is-posix-bracket@^0.1.0:
26122566
version "0.1.1"
26132567
resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
@@ -2676,10 +2630,6 @@ isexe@^1.1.1:
26762630
version "1.1.2"
26772631
resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0"
26782632

2679-
isobject@^1.0.0:
2680-
version "1.0.2"
2681-
resolved "https://registry.yarnpkg.com/isobject/-/isobject-1.0.2.tgz#f0f9b8ce92dd540fa0740882e3835a2e022ec78a"
2682-
26832633
isobject@^2.0.0:
26842634
version "2.1.0"
26852635
resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
@@ -3067,12 +3017,6 @@ jsprim@^1.2.2:
30673017
json-schema "0.2.3"
30683018
verror "1.3.6"
30693019

3070-
kind-of@^2.0.1:
3071-
version "2.0.1"
3072-
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5"
3073-
dependencies:
3074-
is-buffer "^1.0.2"
3075-
30763020
kind-of@^3.0.2:
30773021
version "3.1.0"
30783022
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
@@ -3091,10 +3035,6 @@ latest-version@^2.0.0:
30913035
dependencies:
30923036
package-json "^2.0.0"
30933037

3094-
lazy-cache@^0.2.3:
3095-
version "0.2.7"
3096-
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65"
3097-
30983038
lazy-cache@^1.0.3:
30993039
version "1.0.4"
31003040
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
@@ -3109,7 +3049,7 @@ lcid@^1.0.0:
31093049
dependencies:
31103050
invert-kv "^1.0.0"
31113051

3112-
less@^2.6.1:
3052+
less@^2.3.1:
31133053
version "2.7.2"
31143054
resolved "https://registry.yarnpkg.com/less/-/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df"
31153055
optionalDependencies:
@@ -3324,7 +3264,7 @@ lodash.templatesettings@^4.0.0:
33243264
dependencies:
33253265
lodash._reinterpolate "~3.0.0"
33263266

3327-
lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1:
3267+
lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0:
33283268
version "4.17.4"
33293269
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
33303270

@@ -3470,13 +3410,6 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
34703410
version "1.2.0"
34713411
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
34723412

3473-
mixin-object@^2.0.1:
3474-
version "2.0.1"
3475-
resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
3476-
dependencies:
3477-
for-in "^0.1.3"
3478-
is-extendable "^0.1.1"
3479-
34803413
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
34813414
version "0.5.1"
34823415
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
@@ -3689,10 +3622,6 @@ null-check@^1.0.0:
36893622
version "1.0.0"
36903623
resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd"
36913624

3692-
null-loader@^0.1.1:
3693-
version "0.1.1"
3694-
resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-0.1.1.tgz#17be9abfcd3ff0e1512f6fc4afcb1f5039378fae"
3695-
36963625
number-is-nan@^1.0.0:
36973626
version "1.0.1"
36983627
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
@@ -4060,10 +3989,6 @@ randombytes@^2.0.0, randombytes@^2.0.1:
40603989
version "2.0.3"
40613990
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec"
40623991

4063-
raw-loader@^0.5.1:
4064-
version "0.5.1"
4065-
resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
4066-
40673992
rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@~1.1.6:
40683993
version "1.1.7"
40693994
resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea"
@@ -4095,7 +4020,7 @@ read-pkg@^1.0.0, read-pkg@^1.1.0:
40954020
normalize-package-data "^2.3.2"
40964021
path-type "^1.0.0"
40974022

4098-
readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.1.0, readable-stream@^2.1.5, readable-stream@^2.2.2:
4023+
readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0, readable-stream@^2.1.5, readable-stream@^2.2.2:
40994024
version "2.2.3"
41004025
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729"
41014026
dependencies:
@@ -4371,15 +4296,6 @@ sha.js@^2.3.6:
43714296
dependencies:
43724297
inherits "^2.0.1"
43734298

4374-
shallow-clone@^0.1.2:
4375-
version "0.1.2"
4376-
resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060"
4377-
dependencies:
4378-
is-extendable "^0.1.1"
4379-
kind-of "^2.0.1"
4380-
lazy-cache "^0.2.3"
4381-
mixin-object "^2.0.1"
4382-
43834299
shebang-command@^1.2.0:
43844300
version "1.2.0"
43854301
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -4959,14 +4875,14 @@ webpack-merge@^4.0.0:
49594875
dependencies:
49604876
lodash "^4.17.4"
49614877

4962-
webpack-sources@^0.1.0, webpack-sources@^0.1.4:
4878+
webpack-sources@^0.1.4:
49634879
version "0.1.4"
49644880
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd"
49654881
dependencies:
49664882
source-list-map "~0.1.7"
49674883
source-map "~0.5.3"
49684884

4969-
webpack@^2.2.1:
4885+
webpack@^2.2.0:
49704886
version "2.2.1"
49714887
resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475"
49724888
dependencies:

0 commit comments

Comments
 (0)