webpack 3.8.1 → 3.11.0

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 (219) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +721 -716
  3. package/bin/webpack.js +12 -8
  4. package/buildin/.eslintrc +7 -7
  5. package/buildin/amd-define.js +3 -3
  6. package/buildin/amd-options.js +2 -2
  7. package/buildin/global.js +21 -21
  8. package/buildin/harmony-module.js +24 -24
  9. package/buildin/module.js +22 -22
  10. package/buildin/system.js +7 -7
  11. package/hot/.eslintrc +9 -9
  12. package/hot/dev-server.js +53 -53
  13. package/hot/emitter.js +2 -2
  14. package/hot/log-apply-result.js +38 -38
  15. package/hot/log.js +44 -44
  16. package/hot/only-dev-server.js +71 -71
  17. package/hot/poll.js +34 -34
  18. package/hot/signal.js +52 -51
  19. package/lib/APIPlugin.js +45 -45
  20. package/lib/AsyncDependenciesBlock.js +43 -43
  21. package/lib/AutomaticPrefetchPlugin.js +36 -36
  22. package/lib/BannerPlugin.js +4 -2
  23. package/lib/BasicEvaluatedExpression.js +203 -203
  24. package/lib/CaseSensitiveModulesWarning.js +49 -49
  25. package/lib/Chunk.js +2 -2
  26. package/lib/ChunkRenderError.js +24 -24
  27. package/lib/ChunkTemplate.js +36 -36
  28. package/lib/CompatibilityPlugin.js +57 -57
  29. package/lib/Compilation.js +81 -92
  30. package/lib/Compiler.js +519 -523
  31. package/lib/ConstPlugin.js +60 -60
  32. package/lib/ContextModule.js +431 -431
  33. package/lib/ContextReplacementPlugin.js +111 -111
  34. package/lib/DefinePlugin.js +123 -123
  35. package/lib/DelegatedModule.js +98 -98
  36. package/lib/DelegatedModuleFactoryPlugin.js +59 -59
  37. package/lib/DelegatedPlugin.js +30 -30
  38. package/lib/DependenciesBlockVariable.js +51 -51
  39. package/lib/DllEntryPlugin.js +37 -37
  40. package/lib/DllModule.js +58 -58
  41. package/lib/DllModuleFactory.js +20 -20
  42. package/lib/DllPlugin.js +38 -38
  43. package/lib/DllReferencePlugin.js +62 -62
  44. package/lib/DynamicEntryPlugin.js +59 -59
  45. package/lib/EntryModuleNotFoundError.js +22 -22
  46. package/lib/EntryOptionPlugin.js +31 -31
  47. package/lib/EnvironmentPlugin.js +60 -50
  48. package/lib/ErrorHelpers.js +31 -31
  49. package/lib/EvalDevToolModulePlugin.js +22 -22
  50. package/lib/EvalDevToolModuleTemplatePlugin.js +33 -33
  51. package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +75 -75
  52. package/lib/EvalSourceMapDevToolPlugin.js +32 -32
  53. package/lib/ExportPropertyMainTemplatePlugin.js +31 -31
  54. package/lib/ExtendedAPIPlugin.js +47 -47
  55. package/lib/ExternalModuleFactoryPlugin.js +91 -91
  56. package/lib/ExternalsPlugin.js +21 -21
  57. package/lib/FlagDependencyExportsPlugin.js +101 -101
  58. package/lib/FlagDependencyUsagePlugin.js +1 -1
  59. package/lib/FunctionModulePlugin.js +24 -24
  60. package/lib/HashedModuleIdsPlugin.js +42 -42
  61. package/lib/HotModuleReplacementPlugin.js +5 -5
  62. package/lib/HotUpdateChunkTemplate.js +31 -31
  63. package/lib/IgnorePlugin.js +69 -69
  64. package/lib/JsonpExportMainTemplatePlugin.js +37 -37
  65. package/lib/JsonpHotUpdateChunkTemplatePlugin.js +27 -27
  66. package/lib/JsonpMainTemplatePlugin.js +4 -3
  67. package/lib/JsonpTemplatePlugin.js +21 -21
  68. package/lib/LibManifestPlugin.js +63 -63
  69. package/lib/LibraryTemplatePlugin.js +92 -92
  70. package/lib/LoaderOptionsPlugin.js +36 -36
  71. package/lib/LoaderTargetPlugin.js +19 -19
  72. package/lib/MainTemplate.js +3 -1
  73. package/lib/MemoryOutputFileSystem.js +5 -5
  74. package/lib/ModuleBuildError.js +42 -42
  75. package/lib/ModuleDependencyError.js +22 -22
  76. package/lib/ModuleDependencyWarning.js +22 -22
  77. package/lib/ModuleError.js +24 -24
  78. package/lib/ModuleFilenameHelpers.js +162 -162
  79. package/lib/ModuleNotFoundError.js +26 -26
  80. package/lib/ModuleReason.js +50 -50
  81. package/lib/ModuleTemplate.js +23 -23
  82. package/lib/ModuleWarning.js +24 -24
  83. package/lib/MovedToPluginWarningPlugin.js +21 -21
  84. package/lib/MultiCompiler.js +164 -164
  85. package/lib/MultiEntryPlugin.js +39 -39
  86. package/lib/MultiModuleFactory.js +19 -19
  87. package/lib/MultiStats.js +79 -79
  88. package/lib/MultiWatching.js +32 -32
  89. package/lib/NamedChunksPlugin.js +30 -30
  90. package/lib/NamedModulesPlugin.js +27 -27
  91. package/lib/NewWatchingPlugin.js +15 -15
  92. package/lib/NoEmitOnErrorsPlugin.js +22 -22
  93. package/lib/NoErrorsPlugin.js +29 -29
  94. package/lib/NodeStuffPlugin.js +97 -97
  95. package/lib/NormalModuleFactory.js +3 -1
  96. package/lib/NormalModuleReplacementPlugin.js +45 -45
  97. package/lib/NullFactory.js +12 -12
  98. package/lib/OptionsApply.js +10 -10
  99. package/lib/OptionsDefaulter.js +2 -2
  100. package/lib/Parser.js +79 -0
  101. package/lib/ParserHelpers.js +85 -85
  102. package/lib/PrefetchPlugin.js +31 -31
  103. package/lib/ProgressPlugin.js +192 -192
  104. package/lib/ProvidePlugin.js +55 -55
  105. package/lib/RawModule.js +54 -54
  106. package/lib/RequestShortener.js +63 -63
  107. package/lib/RequireJsStuffPlugin.js +31 -31
  108. package/lib/RuleSet.js +444 -444
  109. package/lib/SetVarMainTemplatePlugin.js +41 -41
  110. package/lib/SingleEntryPlugin.js +35 -35
  111. package/lib/SizeFormatHelpers.js +18 -18
  112. package/lib/SourceMapDevToolModuleOptionsPlugin.js +37 -37
  113. package/lib/SourceMapDevToolPlugin.js +3 -3
  114. package/lib/Stats.js +4 -2
  115. package/lib/TemplatedPathPlugin.js +6 -2
  116. package/lib/UmdMainTemplatePlugin.js +1 -1
  117. package/lib/UnsupportedFeatureWarning.js +21 -21
  118. package/lib/UseStrictPlugin.js +34 -34
  119. package/lib/WarnCaseSensitiveModulesPlugin.js +31 -31
  120. package/lib/WatchIgnorePlugin.js +49 -49
  121. package/lib/WebpackError.js +11 -11
  122. package/lib/WebpackOptionsDefaulter.js +130 -129
  123. package/lib/WebpackOptionsValidationError.js +219 -196
  124. package/lib/compareLocations.js +36 -36
  125. package/lib/dependencies/AMDDefineDependency.js +142 -142
  126. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +18 -6
  127. package/lib/dependencies/AMDPlugin.js +119 -119
  128. package/lib/dependencies/AMDRequireDependenciesBlock.js +33 -33
  129. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +177 -177
  130. package/lib/dependencies/AMDRequireDependency.js +67 -67
  131. package/lib/dependencies/AMDRequireItemDependency.js +22 -22
  132. package/lib/dependencies/CommonJsRequireDependency.js +22 -22
  133. package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
  134. package/lib/dependencies/ConstDependency.js +32 -32
  135. package/lib/dependencies/ContextDependencyHelpers.js +71 -71
  136. package/lib/dependencies/ContextElementDependency.js +21 -21
  137. package/lib/dependencies/CriticalDependencyWarning.js +20 -20
  138. package/lib/dependencies/DelegatedExportsDependency.js +33 -33
  139. package/lib/dependencies/DelegatedSourceDependency.js +18 -18
  140. package/lib/dependencies/DllEntryDependency.js +20 -20
  141. package/lib/dependencies/HarmonyCompatibilityDependency.js +30 -30
  142. package/lib/dependencies/HarmonyDetectionParserPlugin.js +2 -2
  143. package/lib/dependencies/HarmonyExportHeaderDependency.js +28 -28
  144. package/lib/dependencies/HarmonyImportDependency.js +1 -1
  145. package/lib/dependencies/ImportDependenciesBlock.js +17 -17
  146. package/lib/dependencies/ImportEagerContextDependency.js +22 -22
  147. package/lib/dependencies/ImportLazyContextDependency.js +22 -22
  148. package/lib/dependencies/ImportLazyOnceContextDependency.js +22 -22
  149. package/lib/dependencies/ImportParserPlugin.js +89 -89
  150. package/lib/dependencies/ImportPlugin.js +60 -60
  151. package/lib/dependencies/ImportWeakContextDependency.js +22 -22
  152. package/lib/dependencies/LoaderDependency.js +18 -18
  153. package/lib/dependencies/LoaderPlugin.js +60 -60
  154. package/lib/dependencies/LocalModule.js +23 -23
  155. package/lib/dependencies/LocalModuleDependency.js +24 -24
  156. package/lib/dependencies/LocalModulesHelpers.js +46 -46
  157. package/lib/dependencies/ModuleDependency.js +23 -23
  158. package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
  159. package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
  160. package/lib/dependencies/MultiEntryDependency.js +20 -20
  161. package/lib/dependencies/NullDependency.js +24 -24
  162. package/lib/dependencies/PrefetchDependency.js +18 -18
  163. package/lib/dependencies/RequireContextDependency.js +26 -26
  164. package/lib/dependencies/RequireContextDependencyParserPlugin.js +50 -50
  165. package/lib/dependencies/RequireContextPlugin.js +96 -96
  166. package/lib/dependencies/RequireEnsureDependenciesBlock.js +22 -22
  167. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +102 -102
  168. package/lib/dependencies/RequireEnsureDependency.js +38 -38
  169. package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
  170. package/lib/dependencies/RequireEnsurePlugin.js +40 -40
  171. package/lib/dependencies/RequireHeaderDependency.js +26 -26
  172. package/lib/dependencies/RequireIncludeDependency.js +8 -0
  173. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +21 -21
  174. package/lib/dependencies/RequireIncludePlugin.js +33 -33
  175. package/lib/dependencies/RequireResolveDependency.js +22 -22
  176. package/lib/dependencies/RequireResolveDependencyParserPlugin.js +71 -71
  177. package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
  178. package/lib/dependencies/SingleEntryDependency.js +18 -18
  179. package/lib/dependencies/SystemPlugin.js +44 -44
  180. package/lib/dependencies/UnsupportedDependency.js +23 -23
  181. package/lib/dependencies/WebpackMissingModule.js +18 -18
  182. package/lib/dependencies/getFunctionExpression.js +44 -44
  183. package/lib/formatLocation.js +54 -54
  184. package/lib/node/NodeChunkTemplatePlugin.js +27 -27
  185. package/lib/node/NodeEnvironmentPlugin.js +25 -25
  186. package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +27 -27
  187. package/lib/node/NodeMainTemplate.runtime.js +24 -24
  188. package/lib/node/NodeMainTemplateAsync.runtime.js +40 -40
  189. package/lib/node/NodeOutputFileSystem.js +22 -22
  190. package/lib/node/NodeSourcePlugin.js +88 -88
  191. package/lib/node/NodeTargetPlugin.js +17 -15
  192. package/lib/node/NodeTemplatePlugin.js +27 -27
  193. package/lib/node/NodeWatchFileSystem.js +72 -72
  194. package/lib/optimize/ChunkModuleIdRangePlugin.js +53 -53
  195. package/lib/optimize/ConcatenatedModule.js +17 -6
  196. package/lib/optimize/DedupePlugin.js +15 -15
  197. package/lib/optimize/FlagIncludedChunksPlugin.js +35 -35
  198. package/lib/optimize/LimitChunkCountPlugin.js +59 -59
  199. package/lib/optimize/MinChunkSizePlugin.js +65 -65
  200. package/lib/optimize/RemoveEmptyChunksPlugin.js +21 -21
  201. package/lib/optimize/UglifyJsPlugin.js +9 -9
  202. package/lib/performance/AssetsOverSizeLimitWarning.js +23 -23
  203. package/lib/performance/EntrypointsOverSizeLimitWarning.js +28 -28
  204. package/lib/performance/NoAsyncChunksWarning.js +20 -20
  205. package/lib/performance/SizeLimitsPlugin.js +102 -102
  206. package/lib/prepareOptions.js +29 -29
  207. package/lib/removeAndDo.js +15 -15
  208. package/lib/util/Semaphore.js +32 -32
  209. package/lib/util/identifier.js +38 -38
  210. package/lib/validateSchema.js +66 -66
  211. package/lib/web/WebEnvironmentPlugin.js +18 -18
  212. package/lib/webworker/WebWorkerChunkTemplatePlugin.js +29 -29
  213. package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +28 -28
  214. package/lib/webworker/WebWorkerMainTemplate.runtime.js +58 -58
  215. package/lib/webworker/WebWorkerMainTemplatePlugin.js +2 -2
  216. package/lib/webworker/WebWorkerTemplatePlugin.js +20 -20
  217. package/package.json +25 -16
  218. package/schemas/ajv.absolutePath.js +29 -29
  219. package/schemas/webpackOptionsSchema.json +405 -76
@@ -1,22 +1,22 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const fs = require("fs");
8
- const path = require("path");
9
- const mkdirp = require("mkdirp");
10
-
11
- class NodeOutputFileSystem {
12
- constructor() {
13
- this.mkdirp = mkdirp;
14
- this.mkdir = fs.mkdir.bind(fs);
15
- this.rmdir = fs.rmdir.bind(fs);
16
- this.unlink = fs.unlink.bind(fs);
17
- this.writeFile = fs.writeFile.bind(fs);
18
- this.join = path.join.bind(path);
19
- }
20
- }
21
-
22
- module.exports = NodeOutputFileSystem;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const fs = require("fs");
8
+ const path = require("path");
9
+ const mkdirp = require("mkdirp");
10
+
11
+ class NodeOutputFileSystem {
12
+ constructor() {
13
+ this.mkdirp = mkdirp;
14
+ this.mkdir = fs.mkdir.bind(fs);
15
+ this.rmdir = fs.rmdir.bind(fs);
16
+ this.unlink = fs.unlink.bind(fs);
17
+ this.writeFile = fs.writeFile.bind(fs);
18
+ this.join = path.join.bind(path);
19
+ }
20
+ }
21
+
22
+ module.exports = NodeOutputFileSystem;
@@ -1,88 +1,88 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const AliasPlugin = require("enhanced-resolve/lib/AliasPlugin");
7
- const ParserHelpers = require("../ParserHelpers");
8
- const nodeLibsBrowser = require("node-libs-browser");
9
-
10
- module.exports = class NodeSourcePlugin {
11
- constructor(options) {
12
- this.options = options;
13
- }
14
- apply(compiler) {
15
- const options = this.options;
16
- if(options === false) // allow single kill switch to turn off this plugin
17
- return;
18
-
19
- function getPathToModule(module, type) {
20
- if(type === true || (type === undefined && nodeLibsBrowser[module])) {
21
- if(!nodeLibsBrowser[module]) throw new Error(`No browser version for node.js core module ${module} available`);
22
- return nodeLibsBrowser[module];
23
- } else if(type === "mock") {
24
- return require.resolve(`node-libs-browser/mock/${module}`);
25
- } else if(type === "empty") {
26
- return require.resolve("node-libs-browser/mock/empty");
27
- } else return module;
28
- }
29
-
30
- function addExpression(parser, name, module, type, suffix) {
31
- suffix = suffix || "";
32
- parser.plugin(`expression ${name}`, function() {
33
- if(this.state.module && this.state.module.resource === getPathToModule(module, type)) return;
34
- const mockModule = ParserHelpers.requireFileAsExpression(this.state.module.context, getPathToModule(module, type));
35
- return ParserHelpers.addParsedVariableToModule(this, name, mockModule + suffix);
36
- });
37
- }
38
-
39
- compiler.plugin("compilation", function(compilation, params) {
40
- params.normalModuleFactory.plugin("parser", function(parser, parserOptions) {
41
-
42
- if(parserOptions.node === false)
43
- return;
44
-
45
- let localOptions = options;
46
- if(parserOptions.node)
47
- localOptions = Object.assign({}, localOptions, parserOptions.node);
48
-
49
- if(localOptions.global) {
50
- parser.plugin("expression global", function() {
51
- const retrieveGlobalModule = ParserHelpers.requireFileAsExpression(this.state.module.context, require.resolve("../../buildin/global.js"));
52
- return ParserHelpers.addParsedVariableToModule(this, "global", retrieveGlobalModule);
53
- });
54
- }
55
- if(localOptions.process) {
56
- const processType = localOptions.process;
57
- addExpression(parser, "process", "process", processType);
58
- }
59
- if(localOptions.console) {
60
- const consoleType = localOptions.console;
61
- addExpression(parser, "console", "console", consoleType);
62
- }
63
- const bufferType = localOptions.Buffer;
64
- if(bufferType) {
65
- addExpression(parser, "Buffer", "buffer", bufferType, ".Buffer");
66
- }
67
- if(localOptions.setImmediate) {
68
- const setImmediateType = localOptions.setImmediate;
69
- addExpression(parser, "setImmediate", "timers", setImmediateType, ".setImmediate");
70
- addExpression(parser, "clearImmediate", "timers", setImmediateType, ".clearImmediate");
71
- }
72
- });
73
- });
74
- compiler.plugin("after-resolvers", (compiler) => {
75
- Object.keys(nodeLibsBrowser).forEach((lib) => {
76
- if(options[lib] !== false) {
77
- compiler.resolvers.normal.apply(
78
- new AliasPlugin("described-resolve", {
79
- name: lib,
80
- onlyModule: true,
81
- alias: getPathToModule(lib, options[lib])
82
- }, "resolve")
83
- );
84
- }
85
- });
86
- });
87
- }
88
- };
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const AliasPlugin = require("enhanced-resolve/lib/AliasPlugin");
7
+ const ParserHelpers = require("../ParserHelpers");
8
+ const nodeLibsBrowser = require("node-libs-browser");
9
+
10
+ module.exports = class NodeSourcePlugin {
11
+ constructor(options) {
12
+ this.options = options;
13
+ }
14
+ apply(compiler) {
15
+ const options = this.options;
16
+ if(options === false) // allow single kill switch to turn off this plugin
17
+ return;
18
+
19
+ function getPathToModule(module, type) {
20
+ if(type === true || (type === undefined && nodeLibsBrowser[module])) {
21
+ if(!nodeLibsBrowser[module]) throw new Error(`No browser version for node.js core module ${module} available`);
22
+ return nodeLibsBrowser[module];
23
+ } else if(type === "mock") {
24
+ return require.resolve(`node-libs-browser/mock/${module}`);
25
+ } else if(type === "empty") {
26
+ return require.resolve("node-libs-browser/mock/empty");
27
+ } else return module;
28
+ }
29
+
30
+ function addExpression(parser, name, module, type, suffix) {
31
+ suffix = suffix || "";
32
+ parser.plugin(`expression ${name}`, function() {
33
+ if(this.state.module && this.state.module.resource === getPathToModule(module, type)) return;
34
+ const mockModule = ParserHelpers.requireFileAsExpression(this.state.module.context, getPathToModule(module, type));
35
+ return ParserHelpers.addParsedVariableToModule(this, name, mockModule + suffix);
36
+ });
37
+ }
38
+
39
+ compiler.plugin("compilation", function(compilation, params) {
40
+ params.normalModuleFactory.plugin("parser", function(parser, parserOptions) {
41
+
42
+ if(parserOptions.node === false)
43
+ return;
44
+
45
+ let localOptions = options;
46
+ if(parserOptions.node)
47
+ localOptions = Object.assign({}, localOptions, parserOptions.node);
48
+
49
+ if(localOptions.global) {
50
+ parser.plugin("expression global", function() {
51
+ const retrieveGlobalModule = ParserHelpers.requireFileAsExpression(this.state.module.context, require.resolve("../../buildin/global.js"));
52
+ return ParserHelpers.addParsedVariableToModule(this, "global", retrieveGlobalModule);
53
+ });
54
+ }
55
+ if(localOptions.process) {
56
+ const processType = localOptions.process;
57
+ addExpression(parser, "process", "process", processType);
58
+ }
59
+ if(localOptions.console) {
60
+ const consoleType = localOptions.console;
61
+ addExpression(parser, "console", "console", consoleType);
62
+ }
63
+ const bufferType = localOptions.Buffer;
64
+ if(bufferType) {
65
+ addExpression(parser, "Buffer", "buffer", bufferType, ".Buffer");
66
+ }
67
+ if(localOptions.setImmediate) {
68
+ const setImmediateType = localOptions.setImmediate;
69
+ addExpression(parser, "setImmediate", "timers", setImmediateType, ".setImmediate");
70
+ addExpression(parser, "clearImmediate", "timers", setImmediateType, ".clearImmediate");
71
+ }
72
+ });
73
+ });
74
+ compiler.plugin("after-resolvers", (compiler) => {
75
+ Object.keys(nodeLibsBrowser).forEach((lib) => {
76
+ if(options[lib] !== false) {
77
+ compiler.resolvers.normal.apply(
78
+ new AliasPlugin("described-resolve", {
79
+ name: lib,
80
+ onlyModule: true,
81
+ alias: getPathToModule(lib, options[lib])
82
+ }, "resolve")
83
+ );
84
+ }
85
+ });
86
+ });
87
+ }
88
+ };
@@ -1,15 +1,17 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const ExternalsPlugin = require("../ExternalsPlugin");
8
-
9
- class NodeTargetPlugin {
10
- apply(compiler) {
11
- new ExternalsPlugin("commonjs", Object.keys(process.binding("natives"))).apply(compiler);
12
- }
13
- }
14
-
15
- module.exports = NodeTargetPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const ExternalsPlugin = require("../ExternalsPlugin");
8
+
9
+ const builtins = require("module").builtinModules || Object.keys(process.binding("natives"));
10
+
11
+ class NodeTargetPlugin {
12
+ apply(compiler) {
13
+ new ExternalsPlugin("commonjs", builtins).apply(compiler);
14
+ }
15
+ }
16
+
17
+ module.exports = NodeTargetPlugin;
@@ -1,27 +1,27 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
-
6
- "use strict";
7
-
8
- const NodeMainTemplatePlugin = require("./NodeMainTemplatePlugin");
9
- const NodeChunkTemplatePlugin = require("./NodeChunkTemplatePlugin");
10
- const NodeHotUpdateChunkTemplatePlugin = require("./NodeHotUpdateChunkTemplatePlugin");
11
-
12
- class NodeTemplatePlugin {
13
- constructor(options) {
14
- options = options || {};
15
- this.asyncChunkLoading = options.asyncChunkLoading;
16
- }
17
-
18
- apply(compiler) {
19
- compiler.plugin("this-compilation", (compilation) => {
20
- compilation.mainTemplate.apply(new NodeMainTemplatePlugin(this.asyncChunkLoading));
21
- compilation.chunkTemplate.apply(new NodeChunkTemplatePlugin());
22
- compilation.hotUpdateChunkTemplate.apply(new NodeHotUpdateChunkTemplatePlugin());
23
- });
24
- }
25
- }
26
-
27
- module.exports = NodeTemplatePlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const NodeMainTemplatePlugin = require("./NodeMainTemplatePlugin");
9
+ const NodeChunkTemplatePlugin = require("./NodeChunkTemplatePlugin");
10
+ const NodeHotUpdateChunkTemplatePlugin = require("./NodeHotUpdateChunkTemplatePlugin");
11
+
12
+ class NodeTemplatePlugin {
13
+ constructor(options) {
14
+ options = options || {};
15
+ this.asyncChunkLoading = options.asyncChunkLoading;
16
+ }
17
+
18
+ apply(compiler) {
19
+ compiler.plugin("this-compilation", (compilation) => {
20
+ compilation.mainTemplate.apply(new NodeMainTemplatePlugin(this.asyncChunkLoading));
21
+ compilation.chunkTemplate.apply(new NodeChunkTemplatePlugin());
22
+ compilation.hotUpdateChunkTemplate.apply(new NodeHotUpdateChunkTemplatePlugin());
23
+ });
24
+ }
25
+ }
26
+
27
+ module.exports = NodeTemplatePlugin;
@@ -1,72 +1,72 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const Watchpack = require("watchpack");
8
-
9
- class NodeWatchFileSystem {
10
- constructor(inputFileSystem) {
11
- this.inputFileSystem = inputFileSystem;
12
- this.watcherOptions = {
13
- aggregateTimeout: 0
14
- };
15
- this.watcher = new Watchpack(this.watcherOptions);
16
- }
17
-
18
- watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
19
- if(!Array.isArray(files))
20
- throw new Error("Invalid arguments: 'files'");
21
- if(!Array.isArray(dirs))
22
- throw new Error("Invalid arguments: 'dirs'");
23
- if(!Array.isArray(missing))
24
- throw new Error("Invalid arguments: 'missing'");
25
- if(typeof callback !== "function")
26
- throw new Error("Invalid arguments: 'callback'");
27
- if(typeof startTime !== "number" && startTime)
28
- throw new Error("Invalid arguments: 'startTime'");
29
- if(typeof options !== "object")
30
- throw new Error("Invalid arguments: 'options'");
31
- if(typeof callbackUndelayed !== "function" && callbackUndelayed)
32
- throw new Error("Invalid arguments: 'callbackUndelayed'");
33
- const oldWatcher = this.watcher;
34
- this.watcher = new Watchpack(options);
35
-
36
- if(callbackUndelayed)
37
- this.watcher.once("change", callbackUndelayed);
38
-
39
- this.watcher.once("aggregated", (changes, removals) => {
40
- changes = changes.concat(removals);
41
- if(this.inputFileSystem && this.inputFileSystem.purge) {
42
- this.inputFileSystem.purge(changes);
43
- }
44
- const times = this.watcher.getTimes();
45
- callback(null,
46
- changes.filter(file => files.indexOf(file) >= 0).sort(),
47
- changes.filter(file => dirs.indexOf(file) >= 0).sort(),
48
- changes.filter(file => missing.indexOf(file) >= 0).sort(), times, times);
49
- });
50
-
51
- this.watcher.watch(files.concat(missing), dirs.concat(missing), startTime);
52
-
53
- if(oldWatcher) {
54
- oldWatcher.close();
55
- }
56
- return {
57
- close: () => {
58
- if(this.watcher) {
59
- this.watcher.close();
60
- this.watcher = null;
61
- }
62
- },
63
- pause: () => {
64
- if(this.watcher) {
65
- this.watcher.pause();
66
- }
67
- }
68
- };
69
- }
70
- }
71
-
72
- module.exports = NodeWatchFileSystem;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const Watchpack = require("watchpack");
8
+
9
+ class NodeWatchFileSystem {
10
+ constructor(inputFileSystem) {
11
+ this.inputFileSystem = inputFileSystem;
12
+ this.watcherOptions = {
13
+ aggregateTimeout: 0
14
+ };
15
+ this.watcher = new Watchpack(this.watcherOptions);
16
+ }
17
+
18
+ watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
19
+ if(!Array.isArray(files))
20
+ throw new Error("Invalid arguments: 'files'");
21
+ if(!Array.isArray(dirs))
22
+ throw new Error("Invalid arguments: 'dirs'");
23
+ if(!Array.isArray(missing))
24
+ throw new Error("Invalid arguments: 'missing'");
25
+ if(typeof callback !== "function")
26
+ throw new Error("Invalid arguments: 'callback'");
27
+ if(typeof startTime !== "number" && startTime)
28
+ throw new Error("Invalid arguments: 'startTime'");
29
+ if(typeof options !== "object")
30
+ throw new Error("Invalid arguments: 'options'");
31
+ if(typeof callbackUndelayed !== "function" && callbackUndelayed)
32
+ throw new Error("Invalid arguments: 'callbackUndelayed'");
33
+ const oldWatcher = this.watcher;
34
+ this.watcher = new Watchpack(options);
35
+
36
+ if(callbackUndelayed)
37
+ this.watcher.once("change", callbackUndelayed);
38
+
39
+ this.watcher.once("aggregated", (changes, removals) => {
40
+ changes = changes.concat(removals);
41
+ if(this.inputFileSystem && this.inputFileSystem.purge) {
42
+ this.inputFileSystem.purge(changes);
43
+ }
44
+ const times = this.watcher.getTimes();
45
+ callback(null,
46
+ changes.filter(file => files.indexOf(file) >= 0).sort(),
47
+ changes.filter(file => dirs.indexOf(file) >= 0).sort(),
48
+ changes.filter(file => missing.indexOf(file) >= 0).sort(), times, times);
49
+ });
50
+
51
+ this.watcher.watch(files.concat(missing), dirs.concat(missing), startTime);
52
+
53
+ if(oldWatcher) {
54
+ oldWatcher.close();
55
+ }
56
+ return {
57
+ close: () => {
58
+ if(this.watcher) {
59
+ this.watcher.close();
60
+ this.watcher = null;
61
+ }
62
+ },
63
+ pause: () => {
64
+ if(this.watcher) {
65
+ this.watcher.pause();
66
+ }
67
+ }
68
+ };
69
+ }
70
+ }
71
+
72
+ module.exports = NodeWatchFileSystem;
@@ -1,53 +1,53 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- class ChunkModuleIdRangePlugin {
7
- constructor(options) {
8
- this.options = options;
9
- }
10
- apply(compiler) {
11
- const options = this.options;
12
- compiler.plugin("compilation", (compilation) => {
13
- compilation.plugin("module-ids", (modules) => {
14
- const chunk = this.chunks.find((chunk) => chunk.name === options.name);
15
- if(!chunk) throw new Error("ChunkModuleIdRangePlugin: Chunk with name '" + options.name + "' was not found");
16
- let currentId = options.start;
17
- let chunkModules;
18
- if(options.order) {
19
- chunkModules = chunk.modules.slice();
20
- switch(options.order) {
21
- case "index":
22
- chunkModules.sort((a, b) => {
23
- return a.index - b.index;
24
- });
25
- break;
26
- case "index2":
27
- chunkModules.sort((a, b) => {
28
- return a.index2 - b.index2;
29
- });
30
- break;
31
- default:
32
- throw new Error("ChunkModuleIdRangePlugin: unexpected value of order");
33
- }
34
-
35
- } else {
36
- chunkModules = modules.filter((m) => {
37
- return m.chunks.indexOf(chunk) >= 0;
38
- });
39
- }
40
-
41
- for(let i = 0; i < chunkModules.length; i++) {
42
- const m = chunkModules[i];
43
- if(m.id === null) {
44
- m.id = currentId++;
45
- }
46
- if(options.end && currentId > options.end)
47
- break;
48
- }
49
- });
50
- });
51
- }
52
- }
53
- module.exports = ChunkModuleIdRangePlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ class ChunkModuleIdRangePlugin {
7
+ constructor(options) {
8
+ this.options = options;
9
+ }
10
+ apply(compiler) {
11
+ const options = this.options;
12
+ compiler.plugin("compilation", (compilation) => {
13
+ compilation.plugin("module-ids", (modules) => {
14
+ const chunk = this.chunks.find((chunk) => chunk.name === options.name);
15
+ if(!chunk) throw new Error("ChunkModuleIdRangePlugin: Chunk with name '" + options.name + "' was not found");
16
+ let currentId = options.start;
17
+ let chunkModules;
18
+ if(options.order) {
19
+ chunkModules = chunk.modules.slice();
20
+ switch(options.order) {
21
+ case "index":
22
+ chunkModules.sort((a, b) => {
23
+ return a.index - b.index;
24
+ });
25
+ break;
26
+ case "index2":
27
+ chunkModules.sort((a, b) => {
28
+ return a.index2 - b.index2;
29
+ });
30
+ break;
31
+ default:
32
+ throw new Error("ChunkModuleIdRangePlugin: unexpected value of order");
33
+ }
34
+
35
+ } else {
36
+ chunkModules = modules.filter((m) => {
37
+ return m.chunks.indexOf(chunk) >= 0;
38
+ });
39
+ }
40
+
41
+ for(let i = 0; i < chunkModules.length; i++) {
42
+ const m = chunkModules[i];
43
+ if(m.id === null) {
44
+ m.id = currentId++;
45
+ }
46
+ if(options.end && currentId > options.end)
47
+ break;
48
+ }
49
+ });
50
+ });
51
+ }
52
+ }
53
+ module.exports = ChunkModuleIdRangePlugin;
@@ -7,6 +7,7 @@
7
7
  const Module = require("../Module");
8
8
  const Template = require("../Template");
9
9
  const Parser = require("../Parser");
10
+ const crypto = require("crypto");
10
11
  const acorn = require("acorn");
11
12
  const escope = require("escope");
12
13
  const ReplaceSource = require("webpack-sources/lib/ReplaceSource");
@@ -142,6 +143,7 @@ function getPathInAst(ast, node) {
142
143
  }
143
144
 
144
145
  function enterNode(n) {
146
+ if(!n) return undefined;
145
147
  const r = n.range;
146
148
  if(r) {
147
149
  if(r[0] <= nr[0] && r[1] >= nr[1]) {
@@ -210,6 +212,7 @@ class ConcatenatedModule extends Module {
210
212
  Object.assign(this.assets, m.assets);
211
213
  }
212
214
  }
215
+ this._identifier = this._createIdentifier();
213
216
  }
214
217
 
215
218
  get modules() {
@@ -219,12 +222,7 @@ class ConcatenatedModule extends Module {
219
222
  }
220
223
 
221
224
  identifier() {
222
- return this._orderedConcatenationList.map(info => {
223
- switch(info.type) {
224
- case "concatenated":
225
- return info.module.identifier();
226
- }
227
- }).filter(Boolean).join(" ");
225
+ return this._identifier;
228
226
  }
229
227
 
230
228
  readableIdentifier(requestShortener) {
@@ -297,6 +295,19 @@ class ConcatenatedModule extends Module {
297
295
  return list;
298
296
  }
299
297
 
298
+ _createIdentifier() {
299
+ let orderedConcatenationListIdentifiers = "";
300
+ for(let i = 0; i < this._orderedConcatenationList.length; i++) {
301
+ if(this._orderedConcatenationList[i].type === "concatenated") {
302
+ orderedConcatenationListIdentifiers += this._orderedConcatenationList[i].module.identifier();
303
+ orderedConcatenationListIdentifiers += " ";
304
+ }
305
+ }
306
+ const hash = crypto.createHash("md5");
307
+ hash.update(orderedConcatenationListIdentifiers);
308
+ return this.rootModule.identifier() + " " + hash.digest("hex");
309
+ }
310
+
300
311
  source(dependencyTemplates, outputOptions, requestShortener) {
301
312
  // Metainfo for each module
302
313
  const modulesWithInfo = this._orderedConcatenationList.map((info, idx) => {
@@ -1,15 +1,15 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class DedupePlugin {
8
- apply(compiler) {
9
- compiler.plugin("compilation", (compilation) => {
10
- compilation.warnings.push(new Error("DedupePlugin: This plugin was removed from webpack. Remove it from your configuration."));
11
- });
12
- }
13
- }
14
-
15
- module.exports = DedupePlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class DedupePlugin {
8
+ apply(compiler) {
9
+ compiler.plugin("compilation", (compilation) => {
10
+ compilation.warnings.push(new Error("DedupePlugin: This plugin was removed from webpack. Remove it from your configuration."));
11
+ });
12
+ }
13
+ }
14
+
15
+ module.exports = DedupePlugin;