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.
Files changed (68) hide show
  1. package/README.md +39 -63
  2. package/bin/webpack.js +3 -3
  3. package/buildin/harmony-module.js +0 -6
  4. package/buildin/module.js +0 -2
  5. package/lib/APIPlugin.js +2 -8
  6. package/lib/AsyncDependenciesBlock.js +46 -55
  7. package/lib/ChunkTemplate.js +25 -26
  8. package/lib/CompatibilityPlugin.js +49 -46
  9. package/lib/Compilation.js +279 -138
  10. package/lib/Compiler.js +5 -2
  11. package/lib/ConstPlugin.js +2 -6
  12. package/lib/DefinePlugin.js +9 -27
  13. package/lib/EnvironmentPlugin.js +25 -9
  14. package/lib/EvalDevToolModulePlugin.js +15 -10
  15. package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +1 -1
  16. package/lib/EvalSourceMapDevToolPlugin.js +24 -18
  17. package/lib/ExtendedAPIPlugin.js +1 -6
  18. package/lib/FlagDependencyExportsPlugin.js +72 -79
  19. package/lib/FlagInitialModulesAsUsedPlugin.js +17 -13
  20. package/lib/FunctionModulePlugin.js +17 -11
  21. package/lib/HotModuleReplacementPlugin.js +3 -13
  22. package/lib/HotUpdateChunkTemplate.js +21 -22
  23. package/lib/JsonpTemplatePlugin.js +15 -11
  24. package/lib/LibManifestPlugin.js +1 -1
  25. package/lib/LoaderTargetPlugin.js +14 -10
  26. package/lib/MainTemplate.js +193 -191
  27. package/lib/MultiWatching.js +16 -14
  28. package/lib/NoEmitOnErrorsPlugin.js +14 -11
  29. package/lib/NodeStuffPlugin.js +6 -30
  30. package/lib/NormalModuleFactory.js +2 -2
  31. package/lib/NormalModuleReplacementPlugin.js +36 -31
  32. package/lib/Parser.js +11 -8
  33. package/lib/ParserHelpers.js +19 -5
  34. package/lib/ProvidePlugin.js +2 -6
  35. package/lib/RequestShortener.js +49 -47
  36. package/lib/RequireJsStuffPlugin.js +5 -20
  37. package/lib/RuleSet.js +28 -20
  38. package/lib/SourceMapDevToolPlugin.js +1 -1
  39. package/lib/Template.js +133 -132
  40. package/lib/compareLocations.js +9 -8
  41. package/lib/dependencies/AMDPlugin.js +111 -115
  42. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +157 -154
  43. package/lib/dependencies/CommonJsPlugin.js +81 -85
  44. package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +73 -75
  45. package/lib/dependencies/ContextDependencyTemplateAsId.js +21 -18
  46. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +23 -29
  47. package/lib/dependencies/CriticalDependencyWarning.js +13 -8
  48. package/lib/dependencies/{HarmonyCompatiblilityDependency.js → HarmonyCompatibilityDependency.js} +3 -3
  49. package/lib/dependencies/HarmonyDetectionParserPlugin.js +2 -2
  50. package/lib/dependencies/HarmonyModulesPlugin.js +51 -49
  51. package/lib/dependencies/ImportParserPlugin.js +31 -28
  52. package/lib/dependencies/ImportPlugin.js +28 -24
  53. package/lib/dependencies/LocalModule.js +17 -13
  54. package/lib/dependencies/ModuleDependencyTemplateAsId.js +15 -17
  55. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +15 -17
  56. package/lib/dependencies/RequireContextPlugin.js +59 -57
  57. package/lib/dependencies/RequireEnsurePlugin.js +22 -26
  58. package/lib/dependencies/RequireIncludePlugin.js +18 -23
  59. package/lib/dependencies/RequireResolveDependencyParserPlugin.js +59 -56
  60. package/lib/dependencies/SystemPlugin.js +34 -36
  61. package/lib/dependencies/WebpackMissingModule.js +10 -18
  62. package/lib/node/NodeTargetPlugin.js +8 -5
  63. package/lib/node/NodeWatchFileSystem.js +54 -53
  64. package/lib/optimize/CommonsChunkPlugin.js +163 -166
  65. package/lib/optimize/RemoveParentModulesPlugin.js +36 -27
  66. package/lib/validateSchema.js +18 -18
  67. package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +22 -20
  68. package/package.json +13 -7
@@ -2,174 +2,177 @@
2
2
  MIT License http://www.opensource.org/licenses/mit-license.php
3
3
  Author Tobias Koppers @sokra
4
4
  */
5
- var AMDRequireItemDependency = require("./AMDRequireItemDependency");
6
- var AMDRequireArrayDependency = require("./AMDRequireArrayDependency");
7
- var AMDRequireContextDependency = require("./AMDRequireContextDependency");
8
- var AMDRequireDependenciesBlock = require("./AMDRequireDependenciesBlock");
9
- var UnsupportedDependency = require("./UnsupportedDependency");
10
- var LocalModuleDependency = require("./LocalModuleDependency");
11
- var ContextDependencyHelpers = require("./ContextDependencyHelpers");
12
- var LocalModulesHelpers = require("./LocalModulesHelpers");
13
- var ConstDependency = require("./ConstDependency");
14
- var getFunctionExpression = require("./getFunctionExpression");
15
- var UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
5
+ "use strict";
16
6
 
17
- function AMDRequireDependenciesBlockParserPlugin(options) {
18
- this.options = options;
19
- }
7
+ const AMDRequireItemDependency = require("./AMDRequireItemDependency");
8
+ const AMDRequireArrayDependency = require("./AMDRequireArrayDependency");
9
+ const AMDRequireContextDependency = require("./AMDRequireContextDependency");
10
+ const AMDRequireDependenciesBlock = require("./AMDRequireDependenciesBlock");
11
+ const UnsupportedDependency = require("./UnsupportedDependency");
12
+ const LocalModuleDependency = require("./LocalModuleDependency");
13
+ const ContextDependencyHelpers = require("./ContextDependencyHelpers");
14
+ const LocalModulesHelpers = require("./LocalModulesHelpers");
15
+ const ConstDependency = require("./ConstDependency");
16
+ const getFunctionExpression = require("./getFunctionExpression");
17
+ const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
20
18
 
21
- module.exports = AMDRequireDependenciesBlockParserPlugin;
19
+ class AMDRequireDependenciesBlockParserPlugin {
20
+ constructor(options) {
21
+ this.options = options;
22
+ }
22
23
 
23
- function processFunctionArgument(parser, expression) {
24
- var bindThis = true;
25
- var fnData = getFunctionExpression(expression);
26
- if(fnData) {
27
- parser.inScope(fnData.fn.params.filter(function(i) {
28
- return ["require", "module", "exports"].indexOf(i.name) < 0;
29
- }), function() {
30
- if(fnData.fn.body.type === "BlockStatement")
31
- parser.walkStatement(fnData.fn.body);
32
- else
33
- parser.walkExpression(fnData.fn.body);
34
- });
35
- parser.walkExpressions(fnData.expressions);
36
- if(fnData.needThis === false) {
37
- bindThis = false;
24
+ processFunctionArgument(parser, expression) {
25
+ let bindThis = true;
26
+ const fnData = getFunctionExpression(expression);
27
+ if(fnData) {
28
+ parser.inScope(fnData.fn.params.filter((i) => {
29
+ return ["require", "module", "exports"].indexOf(i.name) < 0;
30
+ }), () => {
31
+ if(fnData.fn.body.type === "BlockStatement")
32
+ parser.walkStatement(fnData.fn.body);
33
+ else
34
+ parser.walkExpression(fnData.fn.body);
35
+ });
36
+ parser.walkExpressions(fnData.expressions);
37
+ if(fnData.needThis === false) {
38
+ bindThis = false;
39
+ }
40
+ } else {
41
+ parser.walkExpression(expression);
38
42
  }
39
- } else {
40
- parser.walkExpression(expression);
43
+ return bindThis;
41
44
  }
42
- return bindThis;
43
- }
44
45
 
45
- AMDRequireDependenciesBlockParserPlugin.prototype.apply = function(parser) {
46
- var options = this.options;
47
- parser.plugin("call require", function(expr) {
48
- var param;
49
- var dep;
50
- var old;
51
- var result;
46
+ apply(parser) {
47
+ const options = this.options;
48
+ parser.plugin("call require", (expr) => {
49
+ let param;
50
+ let dep;
51
+ let old;
52
+ let result;
52
53
 
53
- old = this.state.current;
54
+ old = parser.state.current;
54
55
 
55
- if(expr.arguments.length >= 1) {
56
- param = this.evaluateExpression(expr.arguments[0]);
57
- dep = new AMDRequireDependenciesBlock(
58
- expr,
59
- param.range,
60
- (expr.arguments.length > 1) ? expr.arguments[1].range : null,
61
- (expr.arguments.length > 2) ? expr.arguments[2].range : null,
62
- this.state.module,
63
- expr.loc
64
- );
65
- this.state.current = dep;
66
- }
56
+ if(expr.arguments.length >= 1) {
57
+ param = parser.evaluateExpression(expr.arguments[0]);
58
+ dep = new AMDRequireDependenciesBlock(
59
+ expr,
60
+ param.range,
61
+ (expr.arguments.length > 1) ? expr.arguments[1].range : null,
62
+ (expr.arguments.length > 2) ? expr.arguments[2].range : null,
63
+ parser.state.module,
64
+ expr.loc
65
+ );
66
+ parser.state.current = dep;
67
+ }
67
68
 
68
- if(expr.arguments.length === 1) {
69
- this.inScope([], function() {
70
- result = this.applyPluginsBailResult("call require:amd:array", expr, param);
71
- }.bind(this));
72
- this.state.current = old;
73
- if(!result) return;
74
- this.state.current.addBlock(dep);
75
- return true;
76
- }
69
+ if(expr.arguments.length === 1) {
70
+ parser.inScope([], () => {
71
+ result = parser.applyPluginsBailResult("call require:amd:array", expr, param);
72
+ });
73
+ parser.state.current = old;
74
+ if(!result) return;
75
+ parser.state.current.addBlock(dep);
76
+ return true;
77
+ }
77
78
 
78
- if(expr.arguments.length === 2 || expr.arguments.length === 3) {
79
- try {
80
- this.inScope([], function() {
81
- result = this.applyPluginsBailResult("call require:amd:array", expr, param);
82
- }.bind(this));
83
- if(!result) {
84
- dep = new UnsupportedDependency("unsupported", expr.range);
85
- old.addDependency(dep);
86
- if(this.state.module)
87
- this.state.module.errors.push(new UnsupportedFeatureWarning(this.state.module, "Cannot statically analyse 'require(..., ...)' in line " + expr.loc.start.line));
88
- dep = null;
89
- return true;
90
- }
91
- dep.functionBindThis = processFunctionArgument(this, expr.arguments[1]);
92
- if(expr.arguments.length === 3) {
93
- dep.errorCallbackBindThis = processFunctionArgument(this, expr.arguments[2]);
79
+ if(expr.arguments.length === 2 || expr.arguments.length === 3) {
80
+ try {
81
+ parser.inScope([], () => {
82
+ result = parser.applyPluginsBailResult("call require:amd:array", expr, param);
83
+ });
84
+ if(!result) {
85
+ dep = new UnsupportedDependency("unsupported", expr.range);
86
+ old.addDependency(dep);
87
+ if(parser.state.module)
88
+ parser.state.module.errors.push(new UnsupportedFeatureWarning(parser.state.module, "Cannot statically analyse 'require(..., ...)' in line " + expr.loc.start.line));
89
+ dep = null;
90
+ return true;
91
+ }
92
+ dep.functionBindThis = this.processFunctionArgument(parser, expr.arguments[1]);
93
+ if(expr.arguments.length === 3) {
94
+ dep.errorCallbackBindThis = this.processFunctionArgument(parser, expr.arguments[2]);
95
+ }
96
+ } finally {
97
+ parser.state.current = old;
98
+ if(dep)
99
+ parser.state.current.addBlock(dep);
94
100
  }
95
- } finally {
96
- this.state.current = old;
97
- if(dep)
98
- this.state.current.addBlock(dep);
101
+ return true;
99
102
  }
100
- return true;
101
- }
102
- });
103
- parser.plugin("call require:amd:array", function(expr, param) {
104
- if(param.isArray()) {
105
- param.items.forEach(function(param) {
106
- var result = this.applyPluginsBailResult("call require:amd:item", expr, param);
107
- if(result === undefined) {
108
- this.applyPluginsBailResult("call require:amd:context", expr, param);
109
- }
110
- }, this);
111
- return true;
112
- } else if(param.isConstArray()) {
113
- var deps = [];
114
- param.array.forEach(function(request) {
115
- var dep, localModule;
116
- if(request === "require") {
117
- dep = "__webpack_require__";
118
- } else if(["exports", "module"].indexOf(request) >= 0) {
119
- dep = request;
120
- } else if(localModule = LocalModulesHelpers.getLocalModule(this.state, request)) { // eslint-disable-line no-cond-assign
121
- dep = new LocalModuleDependency(localModule);
122
- dep.loc = expr.loc;
123
- this.state.current.addDependency(dep);
103
+ });
104
+ parser.plugin("call require:amd:array", (expr, param) => {
105
+ if(param.isArray()) {
106
+ param.items.forEach((param) => {
107
+ const result = parser.applyPluginsBailResult("call require:amd:item", expr, param);
108
+ if(result === undefined) {
109
+ parser.applyPluginsBailResult("call require:amd:context", expr, param);
110
+ }
111
+ });
112
+ return true;
113
+ } else if(param.isConstArray()) {
114
+ const deps = [];
115
+ param.array.forEach((request) => {
116
+ let dep, localModule;
117
+ if(request === "require") {
118
+ dep = "__webpack_require__";
119
+ } else if(["exports", "module"].indexOf(request) >= 0) {
120
+ dep = request;
121
+ } else if(localModule = LocalModulesHelpers.getLocalModule(parser.state, request)) { // eslint-disable-line no-cond-assign
122
+ dep = new LocalModuleDependency(localModule);
123
+ dep.loc = expr.loc;
124
+ parser.state.current.addDependency(dep);
125
+ } else {
126
+ dep = new AMDRequireItemDependency(request);
127
+ dep.loc = expr.loc;
128
+ dep.optional = !!parser.scope.inTry;
129
+ parser.state.current.addDependency(dep);
130
+ }
131
+ deps.push(dep);
132
+ });
133
+ const dep = new AMDRequireArrayDependency(deps, param.range);
134
+ dep.loc = expr.loc;
135
+ dep.optional = !!parser.scope.inTry;
136
+ parser.state.current.addDependency(dep);
137
+ return true;
138
+ }
139
+ });
140
+ parser.plugin("call require:amd:item", (expr, param) => {
141
+ if(param.isConditional()) {
142
+ param.options.forEach((param) => {
143
+ const result = parser.applyPluginsBailResult("call require:amd:item", expr, param);
144
+ if(result === undefined) {
145
+ parser.applyPluginsBailResult("call require:amd:context", expr, param);
146
+ }
147
+ });
148
+ return true;
149
+ } else if(param.isString()) {
150
+ let dep, localModule;
151
+ if(param.string === "require") {
152
+ dep = new ConstDependency("__webpack_require__", param.string);
153
+ } else if(param.string === "module") {
154
+ dep = new ConstDependency(parser.state.module.moduleArgument || "module", param.range);
155
+ } else if(param.string === "exports") {
156
+ dep = new ConstDependency(parser.state.module.exportsArgument || "exports", param.range);
157
+ } else if(localModule = LocalModulesHelpers.getLocalModule(parser.state, param.string)) { // eslint-disable-line no-cond-assign
158
+ dep = new LocalModuleDependency(localModule, param.range);
124
159
  } else {
125
- dep = new AMDRequireItemDependency(request);
126
- dep.loc = expr.loc;
127
- dep.optional = !!this.scope.inTry;
128
- this.state.current.addDependency(dep);
129
- }
130
- deps.push(dep);
131
- }, this);
132
- var dep = new AMDRequireArrayDependency(deps, param.range);
133
- dep.loc = expr.loc;
134
- dep.optional = !!this.scope.inTry;
135
- this.state.current.addDependency(dep);
136
- return true;
137
- }
138
- });
139
- parser.plugin("call require:amd:item", function(expr, param) {
140
- if(param.isConditional()) {
141
- param.options.forEach(function(param) {
142
- var result = this.applyPluginsBailResult("call require:amd:item", expr, param);
143
- if(result === undefined) {
144
- this.applyPluginsBailResult("call require:amd:context", expr, param);
160
+ dep = new AMDRequireItemDependency(param.string, param.range);
145
161
  }
146
- }, this);
147
- return true;
148
- } else if(param.isString()) {
149
- var dep, localModule;
150
- if(param.string === "require") {
151
- dep = new ConstDependency("__webpack_require__", param.range);
152
- } else if(param.string === "module") {
153
- dep = new ConstDependency(this.state.module.moduleArgument || "module", param.range);
154
- } else if(param.string === "exports") {
155
- dep = new ConstDependency(this.state.module.exportsArgument || "exports", param.range);
156
- } else if(localModule = LocalModulesHelpers.getLocalModule(this.state, param.string)) { // eslint-disable-line no-cond-assign
157
- dep = new LocalModuleDependency(localModule, param.range);
158
- } else {
159
- dep = new AMDRequireItemDependency(param.string, param.range);
162
+ dep.loc = expr.loc;
163
+ dep.optional = !!parser.scope.inTry;
164
+ parser.state.current.addDependency(dep);
165
+ return true;
160
166
  }
167
+ });
168
+ parser.plugin("call require:amd:context", (expr, param) => {
169
+ const dep = ContextDependencyHelpers.create(AMDRequireContextDependency, param.range, param, expr, options);
170
+ if(!dep) return;
161
171
  dep.loc = expr.loc;
162
- dep.optional = !!this.scope.inTry;
163
- this.state.current.addDependency(dep);
172
+ dep.optional = !!parser.scope.inTry;
173
+ parser.state.current.addDependency(dep);
164
174
  return true;
165
- }
166
- });
167
- parser.plugin("call require:amd:context", function(expr, param) {
168
- var dep = ContextDependencyHelpers.create(AMDRequireContextDependency, param.range, param, expr, options);
169
- if(!dep) return;
170
- dep.loc = expr.loc;
171
- dep.optional = !!this.scope.inTry;
172
- this.state.current.addDependency(dep);
173
- return true;
174
- });
175
- };
175
+ });
176
+ }
177
+ }
178
+ module.exports = AMDRequireDependenciesBlockParserPlugin;
@@ -3,90 +3,86 @@
3
3
  Author Tobias Koppers @sokra
4
4
  */
5
5
  "use strict";
6
-
7
- var ConstDependency = require("./ConstDependency");
8
- var CommonJsRequireDependency = require("./CommonJsRequireDependency");
9
- var CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency");
10
- var RequireResolveDependency = require("./RequireResolveDependency");
11
- var RequireResolveContextDependency = require("./RequireResolveContextDependency");
12
- var RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency");
13
- var RequireHeaderDependency = require("./RequireHeaderDependency");
14
-
15
- var NullFactory = require("../NullFactory");
16
-
17
- var RequireResolveDependencyParserPlugin = require("./RequireResolveDependencyParserPlugin");
18
- var CommonJsRequireDependencyParserPlugin = require("./CommonJsRequireDependencyParserPlugin");
19
-
20
- var ParserHelpers = require("../ParserHelpers");
21
-
22
- function CommonJsPlugin(options) {
23
- this.options = options;
24
- }
25
- module.exports = CommonJsPlugin;
26
-
27
- CommonJsPlugin.prototype.apply = function(compiler) {
28
- var options = this.options;
29
- compiler.plugin("compilation", function(compilation, params) {
30
- var normalModuleFactory = params.normalModuleFactory;
31
- var contextModuleFactory = params.contextModuleFactory;
32
-
33
- compilation.dependencyFactories.set(CommonJsRequireDependency, normalModuleFactory);
34
- compilation.dependencyTemplates.set(CommonJsRequireDependency, new CommonJsRequireDependency.Template());
35
-
36
- compilation.dependencyFactories.set(CommonJsRequireContextDependency, contextModuleFactory);
37
- compilation.dependencyTemplates.set(CommonJsRequireContextDependency, new CommonJsRequireContextDependency.Template());
38
-
39
- compilation.dependencyFactories.set(RequireResolveDependency, normalModuleFactory);
40
- compilation.dependencyTemplates.set(RequireResolveDependency, new RequireResolveDependency.Template());
41
-
42
- compilation.dependencyFactories.set(RequireResolveContextDependency, contextModuleFactory);
43
- compilation.dependencyTemplates.set(RequireResolveContextDependency, new RequireResolveContextDependency.Template());
44
-
45
- compilation.dependencyFactories.set(RequireResolveHeaderDependency, new NullFactory());
46
- compilation.dependencyTemplates.set(RequireResolveHeaderDependency, new RequireResolveHeaderDependency.Template());
47
-
48
- compilation.dependencyFactories.set(RequireHeaderDependency, new NullFactory());
49
- compilation.dependencyTemplates.set(RequireHeaderDependency, new RequireHeaderDependency.Template());
50
-
51
- params.normalModuleFactory.plugin("parser", function(parser, parserOptions) {
52
-
53
- if(typeof parserOptions.commonjs !== "undefined" && !parserOptions.commonjs)
54
- return;
55
-
56
- const requireExpressions = ["require", "require.resolve", "require.resolveWeak"];
57
- for(const expression of requireExpressions) {
58
- parser.plugin(`typeof ${expression}`, ParserHelpers.toConstantDependency("function"));
59
- parser.plugin(`evaluate typeof ${expression}`, ParserHelpers.evaluateToString("function"));
60
- }
61
-
62
- parser.plugin("evaluate typeof module", ParserHelpers.evaluateToString("object"));
63
- parser.plugin("assign require", function(expr) {
64
- // to not leak to global "require", we need to define a local require here.
65
- var dep = new ConstDependency("var require;", 0);
66
- dep.loc = expr.loc;
67
- this.state.current.addDependency(dep);
68
- this.scope.definitions.push("require");
69
- return true;
6
+ const ConstDependency = require("./ConstDependency");
7
+ const CommonJsRequireDependency = require("./CommonJsRequireDependency");
8
+ const CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency");
9
+ const RequireResolveDependency = require("./RequireResolveDependency");
10
+ const RequireResolveContextDependency = require("./RequireResolveContextDependency");
11
+ const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency");
12
+ const RequireHeaderDependency = require("./RequireHeaderDependency");
13
+
14
+ const NullFactory = require("../NullFactory");
15
+
16
+ const RequireResolveDependencyParserPlugin = require("./RequireResolveDependencyParserPlugin");
17
+ const CommonJsRequireDependencyParserPlugin = require("./CommonJsRequireDependencyParserPlugin");
18
+
19
+ const ParserHelpers = require("../ParserHelpers");
20
+
21
+ class CommonJsPlugin {
22
+ constructor(options) {
23
+ this.options = options;
24
+ }
25
+
26
+ apply(compiler) {
27
+ const options = this.options;
28
+ compiler.plugin("compilation", (compilation, params) => {
29
+ const normalModuleFactory = params.normalModuleFactory;
30
+ const contextModuleFactory = params.contextModuleFactory;
31
+
32
+ compilation.dependencyFactories.set(CommonJsRequireDependency, normalModuleFactory);
33
+ compilation.dependencyTemplates.set(CommonJsRequireDependency, new CommonJsRequireDependency.Template());
34
+
35
+ compilation.dependencyFactories.set(CommonJsRequireContextDependency, contextModuleFactory);
36
+ compilation.dependencyTemplates.set(CommonJsRequireContextDependency, new CommonJsRequireContextDependency.Template());
37
+
38
+ compilation.dependencyFactories.set(RequireResolveDependency, normalModuleFactory);
39
+ compilation.dependencyTemplates.set(RequireResolveDependency, new RequireResolveDependency.Template());
40
+
41
+ compilation.dependencyFactories.set(RequireResolveContextDependency, contextModuleFactory);
42
+ compilation.dependencyTemplates.set(RequireResolveContextDependency, new RequireResolveContextDependency.Template());
43
+
44
+ compilation.dependencyFactories.set(RequireResolveHeaderDependency, new NullFactory());
45
+ compilation.dependencyTemplates.set(RequireResolveHeaderDependency, new RequireResolveHeaderDependency.Template());
46
+
47
+ compilation.dependencyFactories.set(RequireHeaderDependency, new NullFactory());
48
+ compilation.dependencyTemplates.set(RequireHeaderDependency, new RequireHeaderDependency.Template());
49
+
50
+ params.normalModuleFactory.plugin("parser", (parser, parserOptions) => {
51
+
52
+ if(typeof parserOptions.commonjs !== "undefined" && !parserOptions.commonjs)
53
+ return;
54
+
55
+ const requireExpressions = ["require", "require.resolve", "require.resolveWeak"];
56
+ for(const expression of requireExpressions) {
57
+ parser.plugin(`typeof ${expression}`, ParserHelpers.toConstantDependency("function"));
58
+ parser.plugin(`evaluate typeof ${expression}`, ParserHelpers.evaluateToString("function"));
59
+ }
60
+
61
+ parser.plugin("evaluate typeof module", ParserHelpers.evaluateToString("object"));
62
+ parser.plugin("assign require", (expr) => {
63
+ // to not leak to global "require", we need to define a local require here.
64
+ const dep = new ConstDependency("var require;", 0);
65
+ dep.loc = expr.loc;
66
+ parser.state.current.addDependency(dep);
67
+ parser.scope.definitions.push("require");
68
+ return true;
69
+ });
70
+ parser.plugin("can-rename require", () => true);
71
+ parser.plugin("rename require", (expr) => {
72
+ // define the require variable. It's still undefined, but not "not defined".
73
+ const dep = new ConstDependency("var require;", 0);
74
+ dep.loc = expr.loc;
75
+ parser.state.current.addDependency(dep);
76
+ return false;
77
+ });
78
+ parser.plugin("typeof module", () => true);
79
+ parser.plugin("evaluate typeof exports", ParserHelpers.evaluateToString("object"));
80
+ parser.apply(
81
+ new CommonJsRequireDependencyParserPlugin(options),
82
+ new RequireResolveDependencyParserPlugin(options)
83
+ );
70
84
  });
71
- parser.plugin("can-rename require", function() {
72
- return true;
73
- });
74
- parser.plugin("rename require", function(expr) {
75
- // define the require variable. It's still undefined, but not "not defined".
76
- var dep = new ConstDependency("var require;", 0);
77
- dep.loc = expr.loc;
78
- this.state.current.addDependency(dep);
79
- return false;
80
- });
81
- parser.plugin("typeof module", function() {
82
- return true;
83
- });
84
- parser.plugin("evaluate typeof exports", ParserHelpers.evaluateToString("object"));
85
- parser.apply(
86
- new CommonJsRequireDependencyParserPlugin(options),
87
- new RequireResolveDependencyParserPlugin(options)
88
- );
89
85
  });
90
- });
91
-
92
- };
86
+ }
87
+ }
88
+ module.exports = CommonJsPlugin;