webpack 2.2.0-rc.6 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -63
- package/bin/webpack.js +3 -3
- package/buildin/harmony-module.js +0 -6
- package/buildin/module.js +0 -2
- package/lib/APIPlugin.js +2 -8
- package/lib/AsyncDependenciesBlock.js +46 -55
- package/lib/ChunkTemplate.js +25 -26
- package/lib/CompatibilityPlugin.js +49 -46
- package/lib/Compilation.js +279 -138
- package/lib/Compiler.js +5 -2
- package/lib/ConstPlugin.js +2 -6
- package/lib/DefinePlugin.js +9 -27
- package/lib/EnvironmentPlugin.js +25 -9
- package/lib/EvalDevToolModulePlugin.js +15 -10
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +1 -1
- package/lib/EvalSourceMapDevToolPlugin.js +24 -18
- package/lib/ExtendedAPIPlugin.js +1 -6
- package/lib/FlagDependencyExportsPlugin.js +72 -79
- package/lib/FlagInitialModulesAsUsedPlugin.js +17 -13
- package/lib/FunctionModulePlugin.js +17 -11
- package/lib/HotModuleReplacementPlugin.js +3 -13
- package/lib/HotUpdateChunkTemplate.js +21 -22
- package/lib/JsonpTemplatePlugin.js +15 -11
- package/lib/LibManifestPlugin.js +1 -1
- package/lib/LoaderTargetPlugin.js +14 -10
- package/lib/MainTemplate.js +193 -191
- package/lib/MultiWatching.js +16 -14
- package/lib/NoEmitOnErrorsPlugin.js +14 -11
- package/lib/NodeStuffPlugin.js +6 -30
- package/lib/NormalModuleFactory.js +2 -2
- package/lib/NormalModuleReplacementPlugin.js +36 -31
- package/lib/Parser.js +11 -8
- package/lib/ParserHelpers.js +19 -5
- package/lib/ProvidePlugin.js +2 -6
- package/lib/RequestShortener.js +49 -47
- package/lib/RequireJsStuffPlugin.js +5 -20
- package/lib/RuleSet.js +28 -20
- package/lib/SourceMapDevToolPlugin.js +1 -1
- package/lib/Template.js +133 -132
- package/lib/compareLocations.js +9 -8
- package/lib/dependencies/AMDPlugin.js +111 -115
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +157 -154
- package/lib/dependencies/CommonJsPlugin.js +81 -85
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +73 -75
- package/lib/dependencies/ContextDependencyTemplateAsId.js +21 -18
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +23 -29
- package/lib/dependencies/CriticalDependencyWarning.js +13 -8
- package/lib/dependencies/{HarmonyCompatiblilityDependency.js → HarmonyCompatibilityDependency.js} +3 -3
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +2 -2
- package/lib/dependencies/HarmonyModulesPlugin.js +51 -49
- package/lib/dependencies/ImportParserPlugin.js +31 -28
- package/lib/dependencies/ImportPlugin.js +28 -24
- package/lib/dependencies/LocalModule.js +17 -13
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +15 -17
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +15 -17
- package/lib/dependencies/RequireContextPlugin.js +59 -57
- package/lib/dependencies/RequireEnsurePlugin.js +22 -26
- package/lib/dependencies/RequireIncludePlugin.js +18 -23
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +59 -56
- package/lib/dependencies/SystemPlugin.js +34 -36
- package/lib/dependencies/WebpackMissingModule.js +10 -18
- package/lib/node/NodeTargetPlugin.js +8 -5
- package/lib/node/NodeWatchFileSystem.js +54 -53
- package/lib/optimize/CommonsChunkPlugin.js +163 -166
- package/lib/optimize/RemoveParentModulesPlugin.js +36 -27
- package/lib/validateSchema.js +18 -18
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +22 -20
- package/package.json +13 -7
@@ -2,39 +2,44 @@
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
3
|
Author Tobias Koppers @sokra
|
4
4
|
*/
|
5
|
+
"use strict";
|
5
6
|
|
6
|
-
|
7
|
+
const path = require("path");
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
if(
|
21
|
-
newResource
|
22
|
-
|
23
|
-
|
9
|
+
class NormalModuleReplacementPlugin {
|
10
|
+
constructor(resourceRegExp, newResource) {
|
11
|
+
this.resourceRegExp = resourceRegExp;
|
12
|
+
this.newResource = newResource;
|
13
|
+
}
|
14
|
+
|
15
|
+
apply(compiler) {
|
16
|
+
let resourceRegExp = this.resourceRegExp;
|
17
|
+
let newResource = this.newResource;
|
18
|
+
compiler.plugin("normal-module-factory", (nmf) => {
|
19
|
+
nmf.plugin("before-resolve", (result, callback) => {
|
20
|
+
if(!result) return callback();
|
21
|
+
if(resourceRegExp.test(result.request)) {
|
22
|
+
if(typeof newResource === "function") {
|
23
|
+
newResource(result);
|
24
|
+
} else {
|
25
|
+
result.request = newResource;
|
26
|
+
}
|
24
27
|
}
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
28
|
+
return callback(null, result);
|
29
|
+
});
|
30
|
+
nmf.plugin("after-resolve", (result, callback) => {
|
31
|
+
if(!result) return callback();
|
32
|
+
if(resourceRegExp.test(result.resource)) {
|
33
|
+
if(typeof newResource === "function") {
|
34
|
+
newResource(result);
|
35
|
+
} else {
|
36
|
+
result.resource = path.resolve(path.dirname(result.resource), newResource);
|
37
|
+
}
|
35
38
|
}
|
36
|
-
|
37
|
-
|
39
|
+
return callback(null, result);
|
40
|
+
});
|
38
41
|
});
|
39
|
-
}
|
40
|
-
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
module.exports = NormalModuleReplacementPlugin;
|
package/lib/Parser.js
CHANGED
@@ -421,6 +421,8 @@ Parser.prototype.walkStatements = function walkStatements(statements) {
|
|
421
421
|
Parser.prototype.isHoistedStatement = function isHoistedStatement(statement) {
|
422
422
|
switch(statement.type) {
|
423
423
|
case "ImportDeclaration":
|
424
|
+
case "ExportAllDeclaration":
|
425
|
+
case "ExportNamedDeclaration":
|
424
426
|
return true;
|
425
427
|
}
|
426
428
|
return false;
|
@@ -621,7 +623,7 @@ Parser.prototype.walkExportDefaultDeclaration = function walkExportDefaultDeclar
|
|
621
623
|
Parser.prototype.walkExportAllDeclaration = function walkExportAllDeclaration(statement) {
|
622
624
|
var source = statement.source.value;
|
623
625
|
this.applyPluginsBailResult("export import", statement, source);
|
624
|
-
this.applyPluginsBailResult("export import specifier", statement, source, null, null);
|
626
|
+
this.applyPluginsBailResult("export import specifier", statement, source, null, null, 0);
|
625
627
|
};
|
626
628
|
|
627
629
|
Parser.prototype.walkVariableDeclaration = function walkVariableDeclaration(statement) {
|
@@ -842,9 +844,9 @@ Parser.prototype.walkClassExpression = function walkClassExpression(expression)
|
|
842
844
|
Parser.prototype.walkCallExpression = function walkCallExpression(expression) {
|
843
845
|
var result;
|
844
846
|
|
845
|
-
function walkIIFE(functionExpression,
|
847
|
+
function walkIIFE(functionExpression, options) {
|
846
848
|
var params = functionExpression.params;
|
847
|
-
args =
|
849
|
+
var args = options.map(function(arg) {
|
848
850
|
var renameIdentifier = this.getRenameIdentifier(arg);
|
849
851
|
if(renameIdentifier && this.applyPluginsBailResult1("can-rename " + renameIdentifier, arg)) {
|
850
852
|
if(!this.applyPluginsBailResult1("rename " + renameIdentifier, arg))
|
@@ -855,11 +857,12 @@ Parser.prototype.walkCallExpression = function walkCallExpression(expression) {
|
|
855
857
|
this.inScope(params.filter(function(identifier, idx) {
|
856
858
|
return !args[idx];
|
857
859
|
}), function() {
|
858
|
-
args.
|
859
|
-
|
860
|
-
if(!
|
861
|
-
|
862
|
-
|
860
|
+
for(var i = 0; i < args.length; i++) {
|
861
|
+
var param = args[i];
|
862
|
+
if(!param) continue;
|
863
|
+
if(!params[i] || params[i].type !== "Identifier") continue;
|
864
|
+
this.scope.renames["$" + params[i].name] = param;
|
865
|
+
}
|
863
866
|
if(functionExpression.body.type === "BlockStatement")
|
864
867
|
this.walkStatement(functionExpression.body);
|
865
868
|
else
|
package/lib/ParserHelpers.js
CHANGED
@@ -25,22 +25,28 @@ ParserHelpers.addParsedVariableToModule = function(parser, name, expression) {
|
|
25
25
|
return true;
|
26
26
|
};
|
27
27
|
|
28
|
-
ParserHelpers.toConstantDependency = function
|
29
|
-
return function
|
30
|
-
var dep = new ConstDependency(
|
28
|
+
ParserHelpers.toConstantDependency = function(value) {
|
29
|
+
return function constDependency(expr) {
|
30
|
+
var dep = new ConstDependency(value, expr.range);
|
31
31
|
dep.loc = expr.loc;
|
32
32
|
this.state.current.addDependency(dep);
|
33
33
|
return true;
|
34
34
|
};
|
35
35
|
};
|
36
36
|
|
37
|
-
ParserHelpers.evaluateToString = function
|
37
|
+
ParserHelpers.evaluateToString = function(value) {
|
38
38
|
return function stringExpression(expr) {
|
39
39
|
return new BasicEvaluatedExpression().setString(value).setRange(expr.range);
|
40
40
|
};
|
41
41
|
};
|
42
42
|
|
43
|
-
ParserHelpers.
|
43
|
+
ParserHelpers.evaluateToBoolean = function(value) {
|
44
|
+
return function booleanExpression(expr) {
|
45
|
+
return new BasicEvaluatedExpression().setBoolean(value).setRange(expr.range);
|
46
|
+
};
|
47
|
+
};
|
48
|
+
|
49
|
+
ParserHelpers.expressionIsUnsupported = function(message) {
|
44
50
|
return function unsupportedExpression(expr) {
|
45
51
|
var dep = new ConstDependency("(void 0)", expr.range);
|
46
52
|
dep.loc = expr.loc;
|
@@ -50,3 +56,11 @@ ParserHelpers.expressionIsUnsupported = function expressionIsUnsupported(message
|
|
50
56
|
return true;
|
51
57
|
};
|
52
58
|
};
|
59
|
+
|
60
|
+
ParserHelpers.skipTraversal = function skipTraversal() {
|
61
|
+
return true;
|
62
|
+
};
|
63
|
+
|
64
|
+
ParserHelpers.approve = function approve() {
|
65
|
+
return true;
|
66
|
+
};
|
package/lib/ProvidePlugin.js
CHANGED
@@ -23,9 +23,7 @@ ProvidePlugin.prototype.apply = function(compiler) {
|
|
23
23
|
if(splittedName.length > 0) {
|
24
24
|
splittedName.slice(1).forEach(function(_, i) {
|
25
25
|
var name = splittedName.slice(0, i + 1).join(".");
|
26
|
-
parser.plugin("can-rename " + name,
|
27
|
-
return true;
|
28
|
-
});
|
26
|
+
parser.plugin("can-rename " + name, ParserHelpers.approve);
|
29
27
|
});
|
30
28
|
}
|
31
29
|
parser.plugin("expression " + name, function(expr) {
|
@@ -44,9 +42,7 @@ ProvidePlugin.prototype.apply = function(compiler) {
|
|
44
42
|
return false;
|
45
43
|
}
|
46
44
|
if(scopedName) {
|
47
|
-
|
48
|
-
dep.loc = expr.loc;
|
49
|
-
this.state.current.addDependency(dep);
|
45
|
+
ParserHelpers.toConstantDependency(nameIdentifier).bind(this)(expr);
|
50
46
|
}
|
51
47
|
return true;
|
52
48
|
});
|
package/lib/RequestShortener.js
CHANGED
@@ -2,55 +2,57 @@
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
3
|
Author Tobias Koppers @sokra
|
4
4
|
*/
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const path = require("path");
|
8
|
+
|
9
|
+
class RequestShortener {
|
10
|
+
constructor(directory) {
|
11
|
+
directory = directory.replace(/\\/g, "/");
|
12
|
+
let parentDirectory = path.dirname(directory);
|
13
|
+
if(/[\/\\]$/.test(directory)) directory = directory.substr(0, directory.length - 1);
|
14
|
+
|
15
|
+
if(directory) {
|
16
|
+
let currentDirectoryRegExp = directory.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
17
|
+
currentDirectoryRegExp = new RegExp("^" + currentDirectoryRegExp + "|(!)" + currentDirectoryRegExp, "g");
|
18
|
+
this.currentDirectoryRegExp = currentDirectoryRegExp;
|
19
|
+
}
|
20
|
+
|
21
|
+
if(/[\/\\]$/.test(parentDirectory)) parentDirectory = parentDirectory.substr(0, parentDirectory.length - 1);
|
22
|
+
if(parentDirectory && parentDirectory !== directory) {
|
23
|
+
let parentDirectoryRegExp = parentDirectory.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
24
|
+
parentDirectoryRegExp = new RegExp("^" + parentDirectoryRegExp + "|(!)" + parentDirectoryRegExp, "g");
|
25
|
+
this.parentDirectoryRegExp = parentDirectoryRegExp;
|
26
|
+
}
|
27
|
+
|
28
|
+
if(__dirname.length >= 2) {
|
29
|
+
let buildins = path.join(__dirname, "..").replace(/\\/g, "/");
|
30
|
+
let buildinsAsModule = this.currentDirectoryRegExp && this.currentDirectoryRegExp.test(buildins);
|
31
|
+
let buildinsRegExp = buildins.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
32
|
+
buildinsRegExp = new RegExp("^" + buildinsRegExp + "|(!)" + buildinsRegExp, "g");
|
33
|
+
this.buildinsAsModule = buildinsAsModule;
|
34
|
+
this.buildinsRegExp = buildinsRegExp;
|
35
|
+
}
|
36
|
+
|
37
|
+
this.nodeModulesRegExp = /\/node_modules\//g;
|
38
|
+
this.indexJsRegExp = /\/index.js(!|\?|\(query\))/g;
|
16
39
|
}
|
17
40
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
this.
|
41
|
+
shorten(request) {
|
42
|
+
if(!request) return request;
|
43
|
+
request = request.replace(/\\/g, "/");
|
44
|
+
if(this.buildinsAsModule && this.buildinsRegExp)
|
45
|
+
request = request.replace(this.buildinsRegExp, "!(webpack)");
|
46
|
+
if(this.currentDirectoryRegExp)
|
47
|
+
request = request.replace(this.currentDirectoryRegExp, "!.");
|
48
|
+
if(this.parentDirectoryRegExp)
|
49
|
+
request = request.replace(this.parentDirectoryRegExp, "!..");
|
50
|
+
if(!this.buildinsAsModule && this.buildinsRegExp)
|
51
|
+
request = request.replace(this.buildinsRegExp, "!(webpack)");
|
52
|
+
request = request.replace(this.nodeModulesRegExp, "/~/");
|
53
|
+
request = request.replace(this.indexJsRegExp, "$1");
|
54
|
+
return request.replace(/^!|!$/, "");
|
24
55
|
}
|
25
|
-
|
26
|
-
if(__dirname.length >= 2) {
|
27
|
-
var buildins = path.join(__dirname, "..").replace(/\\/g, "/");
|
28
|
-
var buildinsAsModule = currentDirectoryRegExp && currentDirectoryRegExp.test(buildins);
|
29
|
-
var buildinsRegExp = buildins.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
30
|
-
buildinsRegExp = new RegExp("^" + buildinsRegExp + "|(!)" + buildinsRegExp, "g");
|
31
|
-
|
32
|
-
this.buildinsAsModule = buildinsAsModule;
|
33
|
-
this.buildinsRegExp = buildinsRegExp;
|
34
|
-
}
|
35
|
-
|
36
|
-
this.nodeModulesRegExp = /\/node_modules\//g;
|
37
|
-
this.indexJsRegExp = /\/index.js(!|\?|\(query\))/g;
|
38
56
|
}
|
39
|
-
module.exports = RequestShortener;
|
40
57
|
|
41
|
-
|
42
|
-
if(!request)
|
43
|
-
return request;
|
44
|
-
request = request.replace(/\\/g, "/");
|
45
|
-
if(this.buildinsAsModule && this.buildinsRegExp)
|
46
|
-
request = request.replace(this.buildinsRegExp, "!(webpack)");
|
47
|
-
if(this.currentDirectoryRegExp)
|
48
|
-
request = request.replace(this.currentDirectoryRegExp, "!.");
|
49
|
-
if(this.parentDirectoryRegExp)
|
50
|
-
request = request.replace(this.parentDirectoryRegExp, "!..");
|
51
|
-
if(!this.buildinsAsModule && this.buildinsRegExp)
|
52
|
-
request = request.replace(this.buildinsRegExp, "!(webpack)");
|
53
|
-
request = request.replace(this.nodeModulesRegExp, "/~/");
|
54
|
-
request = request.replace(this.indexJsRegExp, "$1");
|
55
|
-
return request.replace(/^!|!$/, "");
|
56
|
-
};
|
58
|
+
module.exports = RequestShortener;
|
@@ -4,6 +4,7 @@
|
|
4
4
|
*/
|
5
5
|
"use strict";
|
6
6
|
|
7
|
+
const ParserHelpers = require("./ParserHelpers");
|
7
8
|
const ConstDependency = require("./dependencies/ConstDependency");
|
8
9
|
const NullFactory = require("./NullFactory");
|
9
10
|
|
@@ -18,27 +19,11 @@ module.exports = class RequireJsStuffPlugin {
|
|
18
19
|
if(typeof parserOptions.requireJs !== "undefined" && !parserOptions.requireJs)
|
19
20
|
return;
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
dep.loc = expr.loc;
|
24
|
-
this.state.current.addDependency(dep);
|
25
|
-
return true;
|
26
|
-
}
|
27
|
-
parser.plugin("call require.config", remove);
|
28
|
-
parser.plugin("call requirejs.config", remove);
|
22
|
+
parser.plugin("call require.config", ParserHelpers.toConstantDependency("undefined"));
|
23
|
+
parser.plugin("call requirejs.config", ParserHelpers.toConstantDependency("undefined"));
|
29
24
|
|
30
|
-
parser.plugin("expression require.version",
|
31
|
-
|
32
|
-
dep.loc = expr.loc;
|
33
|
-
this.state.current.addDependency(dep);
|
34
|
-
return true;
|
35
|
-
});
|
36
|
-
parser.plugin("expression requirejs.onError", function(expr) {
|
37
|
-
var dep = new ConstDependency(JSON.stringify("__webpack_require__.oe"), expr.range);
|
38
|
-
dep.loc = expr.loc;
|
39
|
-
this.state.current.addDependency(dep);
|
40
|
-
return true;
|
41
|
-
});
|
25
|
+
parser.plugin("expression require.version", ParserHelpers.toConstantDependency(JSON.stringify("0.0.0")));
|
26
|
+
parser.plugin("expression requirejs.onError", ParserHelpers.toConstantDependency(JSON.stringify("__webpack_require__.oe")));
|
42
27
|
});
|
43
28
|
});
|
44
29
|
}
|
package/lib/RuleSet.js
CHANGED
@@ -69,27 +69,28 @@ normalized:
|
|
69
69
|
}
|
70
70
|
|
71
71
|
*/
|
72
|
+
"use strict";
|
72
73
|
|
73
74
|
function RuleSet(rules) {
|
74
|
-
this.references =
|
75
|
-
this.rules = RuleSet.normalizeRules(rules, this.references);
|
75
|
+
this.references = Object.create(null);
|
76
|
+
this.rules = RuleSet.normalizeRules(rules, this.references, "ref-");
|
76
77
|
}
|
77
78
|
|
78
79
|
module.exports = RuleSet;
|
79
80
|
|
80
|
-
RuleSet.normalizeRules = function(rules, refs) {
|
81
|
+
RuleSet.normalizeRules = function(rules, refs, ident) {
|
81
82
|
if(Array.isArray(rules)) {
|
82
|
-
return rules.map(function(rule) {
|
83
|
-
return RuleSet.normalizeRule(rule, refs);
|
83
|
+
return rules.map(function(rule, idx) {
|
84
|
+
return RuleSet.normalizeRule(rule, refs, `${ident}-${idx}`);
|
84
85
|
});
|
85
86
|
} else if(rules) {
|
86
|
-
return [RuleSet.normalizeRule(rules, refs)];
|
87
|
+
return [RuleSet.normalizeRule(rules, refs, ident)];
|
87
88
|
} else {
|
88
89
|
return [];
|
89
90
|
}
|
90
91
|
};
|
91
92
|
|
92
|
-
RuleSet.normalizeRule = function(rule, refs) {
|
93
|
+
RuleSet.normalizeRule = function(rule, refs, ident) {
|
93
94
|
if(typeof rule === "string")
|
94
95
|
return {
|
95
96
|
use: [{
|
@@ -151,33 +152,33 @@ RuleSet.normalizeRule = function(rule, refs) {
|
|
151
152
|
var loader = rule.loaders || rule.loader;
|
152
153
|
if(typeof loader === "string" && !rule.options && !rule.query) {
|
153
154
|
checkUseSource("loader");
|
154
|
-
newRule.use = RuleSet.normalizeUse(loader.split("!"));
|
155
|
+
newRule.use = RuleSet.normalizeUse(loader.split("!"), ident);
|
155
156
|
} else if(typeof loader === "string" && (rule.options || rule.query)) {
|
156
157
|
checkUseSource("loader + options/query");
|
157
158
|
newRule.use = RuleSet.normalizeUse({
|
158
159
|
loader: loader,
|
159
160
|
options: rule.options,
|
160
161
|
query: rule.query
|
161
|
-
});
|
162
|
+
}, ident);
|
162
163
|
} else if(loader && (rule.options || rule.query)) {
|
163
164
|
throw new Error(RuleSet.buildErrorMessage(rule, new Error("options/query cannot be used with loaders (use options for each array item)")));
|
164
165
|
} else if(loader) {
|
165
166
|
checkUseSource("loaders");
|
166
|
-
newRule.use = RuleSet.normalizeUse(loader);
|
167
|
+
newRule.use = RuleSet.normalizeUse(loader, ident);
|
167
168
|
} else if(rule.options || rule.query) {
|
168
169
|
throw new Error(RuleSet.buildErrorMessage(rule, new Error("options/query provided without loader (use loader + options)")));
|
169
170
|
}
|
170
171
|
|
171
172
|
if(rule.use) {
|
172
173
|
checkUseSource("use");
|
173
|
-
newRule.use = RuleSet.normalizeUse(rule.use);
|
174
|
+
newRule.use = RuleSet.normalizeUse(rule.use, ident);
|
174
175
|
}
|
175
176
|
|
176
177
|
if(rule.rules)
|
177
|
-
newRule.rules = RuleSet.normalizeRules(rule.rules, refs);
|
178
|
+
newRule.rules = RuleSet.normalizeRules(rule.rules, refs, `${ident}-rules`);
|
178
179
|
|
179
180
|
if(rule.oneOf)
|
180
|
-
newRule.oneOf = RuleSet.normalizeRules(rule.oneOf, refs);
|
181
|
+
newRule.oneOf = RuleSet.normalizeRules(rule.oneOf, refs, `${ident}-oneOf`);
|
181
182
|
|
182
183
|
var keys = Object.keys(rule).filter(function(key) {
|
183
184
|
return ["resource", "resourceQuery", "test", "include", "exclude", "issuer", "loader", "options", "query", "loaders", "use", "rules", "oneOf"].indexOf(key) < 0;
|
@@ -200,8 +201,8 @@ RuleSet.normalizeRule = function(rule, refs) {
|
|
200
201
|
|
201
202
|
if(Array.isArray(newRule.use)) {
|
202
203
|
newRule.use.forEach(function(item) {
|
203
|
-
if(
|
204
|
-
refs[
|
204
|
+
if(item.ident) {
|
205
|
+
refs[item.ident] = item.options;
|
205
206
|
}
|
206
207
|
});
|
207
208
|
}
|
@@ -217,13 +218,13 @@ RuleSet.buildErrorMessage = function buildErrorMessage(condition, error) {
|
|
217
218
|
return message;
|
218
219
|
};
|
219
220
|
|
220
|
-
RuleSet.normalizeUse = function normalizeUse(use) {
|
221
|
+
RuleSet.normalizeUse = function normalizeUse(use, ident) {
|
221
222
|
if(Array.isArray(use)) {
|
222
|
-
return use.map(RuleSet.normalizeUse).reduce(function(arr, items) {
|
223
|
+
return use.map((item, idx) => RuleSet.normalizeUse(item, `${ident}-${idx}`)).reduce(function(arr, items) {
|
223
224
|
return arr.concat(items);
|
224
225
|
}, []);
|
225
226
|
}
|
226
|
-
return [RuleSet.normalizeUseItem(use)];
|
227
|
+
return [RuleSet.normalizeUseItem(use, ident)];
|
227
228
|
};
|
228
229
|
|
229
230
|
RuleSet.normalizeUseItemFunction = function normalizeUseItemFunction(use, data) {
|
@@ -247,7 +248,7 @@ RuleSet.normalizeUseItemString = function normalizeUseItemString(useItemString)
|
|
247
248
|
};
|
248
249
|
};
|
249
250
|
|
250
|
-
RuleSet.normalizeUseItem = function normalizeUseItem(item) {
|
251
|
+
RuleSet.normalizeUseItem = function normalizeUseItem(item, ident) {
|
251
252
|
if(typeof item === "function")
|
252
253
|
return item;
|
253
254
|
|
@@ -265,6 +266,13 @@ RuleSet.normalizeUseItem = function normalizeUseItem(item) {
|
|
265
266
|
|
266
267
|
newItem.options = item.options || item.query;
|
267
268
|
|
269
|
+
if(typeof newItem.options === "object" && newItem.options) {
|
270
|
+
if(newItem.options.ident)
|
271
|
+
newItem.ident = newItem.options.ident;
|
272
|
+
else
|
273
|
+
newItem.ident = ident;
|
274
|
+
}
|
275
|
+
|
268
276
|
var keys = Object.keys(item).filter(function(key) {
|
269
277
|
return ["options", "query"].indexOf(key) < 0;
|
270
278
|
});
|
@@ -423,7 +431,7 @@ RuleSet.prototype._run = function _run(data, rule, result) {
|
|
423
431
|
};
|
424
432
|
|
425
433
|
RuleSet.prototype.findOptionsByIdent = function findOptionsByIdent(ident) {
|
426
|
-
var options = this.references[
|
434
|
+
var options = this.references[ident];
|
427
435
|
if(!options) throw new Error("Can't find options with ident '" + ident + "'");
|
428
436
|
return options;
|
429
437
|
};
|
@@ -155,7 +155,7 @@ SourceMapDevToolPlugin.prototype.apply = function(compiler) {
|
|
155
155
|
})
|
156
156
|
.replace(/\[url\]/g, function() {
|
157
157
|
return "data:application/json;charset=utf-8;base64," +
|
158
|
-
Buffer
|
158
|
+
new Buffer(JSON.stringify(sourceMap), "utf8").toString("base64"); //eslint-disable-line
|
159
159
|
})
|
160
160
|
);
|
161
161
|
}
|