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,101 +1,101 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class FlagDependencyExportsPlugin {
8
-
9
- apply(compiler) {
10
- compiler.plugin("compilation", (compilation) => {
11
- compilation.plugin("finish-modules", (modules) => {
12
- const dependencies = Object.create(null);
13
-
14
- let module;
15
- let moduleWithExports;
16
- let moduleProvidedExports;
17
- const queue = modules.filter((m) => !m.providedExports);
18
- for(let i = 0; i < queue.length; i++) {
19
- module = queue[i];
20
-
21
- if(module.providedExports !== true) {
22
- moduleWithExports = module.meta && module.meta.harmonyModule;
23
- moduleProvidedExports = Array.isArray(module.providedExports) ? new Set(module.providedExports) : new Set();
24
- processDependenciesBlock(module);
25
- if(!moduleWithExports) {
26
- module.providedExports = true;
27
- notifyDependencies();
28
- } else if(module.providedExports !== true) {
29
- module.providedExports = Array.from(moduleProvidedExports);
30
- }
31
- }
32
- }
33
-
34
- function processDependenciesBlock(depBlock) {
35
- depBlock.dependencies.forEach((dep) => processDependency(dep));
36
- depBlock.variables.forEach((variable) => {
37
- variable.dependencies.forEach((dep) => processDependency(dep));
38
- });
39
- depBlock.blocks.forEach(processDependenciesBlock);
40
- }
41
-
42
- function processDependency(dep) {
43
- const exportDesc = dep.getExports && dep.getExports();
44
- if(!exportDesc) return;
45
- moduleWithExports = true;
46
- const exports = exportDesc.exports;
47
- const exportDeps = exportDesc.dependencies;
48
- if(exportDeps) {
49
- exportDeps.forEach((dep) => {
50
- const depIdent = dep.identifier();
51
- // if this was not yet initialized
52
- // initialize it as an array containing the module and stop
53
- const array = dependencies[depIdent];
54
- if(!array) {
55
- dependencies[depIdent] = [module];
56
- return;
57
- }
58
-
59
- // check if this module is known
60
- // if not, add it to the dependencies for this identifier
61
- if(array.indexOf(module) < 0)
62
- array.push(module);
63
- });
64
- }
65
- let changed = false;
66
- if(module.providedExports !== true) {
67
- if(exports === true) {
68
- module.providedExports = true;
69
- changed = true;
70
- } else if(Array.isArray(exports)) {
71
- changed = addToSet(moduleProvidedExports, exports);
72
- }
73
- }
74
- if(changed) {
75
- notifyDependencies();
76
- }
77
- }
78
-
79
- function notifyDependencies() {
80
- const deps = dependencies[module.identifier()];
81
- if(deps) {
82
- deps.forEach((dep) => queue.push(dep));
83
- }
84
- }
85
- });
86
-
87
- function addToSet(a, b) {
88
- let changed = false;
89
- b.forEach((item) => {
90
- if(!a.has(item)) {
91
- a.add(item);
92
- changed = true;
93
- }
94
- });
95
- return changed;
96
- }
97
- });
98
- }
99
- }
100
-
101
- module.exports = FlagDependencyExportsPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class FlagDependencyExportsPlugin {
8
+
9
+ apply(compiler) {
10
+ compiler.plugin("compilation", (compilation) => {
11
+ compilation.plugin("finish-modules", (modules) => {
12
+ const dependencies = Object.create(null);
13
+
14
+ let module;
15
+ let moduleWithExports;
16
+ let moduleProvidedExports;
17
+ const queue = modules.filter((m) => !m.providedExports);
18
+ for(let i = 0; i < queue.length; i++) {
19
+ module = queue[i];
20
+
21
+ if(module.providedExports !== true) {
22
+ moduleWithExports = module.meta && module.meta.harmonyModule;
23
+ moduleProvidedExports = Array.isArray(module.providedExports) ? new Set(module.providedExports) : new Set();
24
+ processDependenciesBlock(module);
25
+ if(!moduleWithExports) {
26
+ module.providedExports = true;
27
+ notifyDependencies();
28
+ } else if(module.providedExports !== true) {
29
+ module.providedExports = Array.from(moduleProvidedExports);
30
+ }
31
+ }
32
+ }
33
+
34
+ function processDependenciesBlock(depBlock) {
35
+ depBlock.dependencies.forEach((dep) => processDependency(dep));
36
+ depBlock.variables.forEach((variable) => {
37
+ variable.dependencies.forEach((dep) => processDependency(dep));
38
+ });
39
+ depBlock.blocks.forEach(processDependenciesBlock);
40
+ }
41
+
42
+ function processDependency(dep) {
43
+ const exportDesc = dep.getExports && dep.getExports();
44
+ if(!exportDesc) return;
45
+ moduleWithExports = true;
46
+ const exports = exportDesc.exports;
47
+ const exportDeps = exportDesc.dependencies;
48
+ if(exportDeps) {
49
+ exportDeps.forEach((dep) => {
50
+ const depIdent = dep.identifier();
51
+ // if this was not yet initialized
52
+ // initialize it as an array containing the module and stop
53
+ const array = dependencies[depIdent];
54
+ if(!array) {
55
+ dependencies[depIdent] = [module];
56
+ return;
57
+ }
58
+
59
+ // check if this module is known
60
+ // if not, add it to the dependencies for this identifier
61
+ if(array.indexOf(module) < 0)
62
+ array.push(module);
63
+ });
64
+ }
65
+ let changed = false;
66
+ if(module.providedExports !== true) {
67
+ if(exports === true) {
68
+ module.providedExports = true;
69
+ changed = true;
70
+ } else if(Array.isArray(exports)) {
71
+ changed = addToSet(moduleProvidedExports, exports);
72
+ }
73
+ }
74
+ if(changed) {
75
+ notifyDependencies();
76
+ }
77
+ }
78
+
79
+ function notifyDependencies() {
80
+ const deps = dependencies[module.identifier()];
81
+ if(deps) {
82
+ deps.forEach((dep) => queue.push(dep));
83
+ }
84
+ }
85
+ });
86
+
87
+ function addToSet(a, b) {
88
+ let changed = false;
89
+ b.forEach((item) => {
90
+ if(!a.has(item)) {
91
+ a.add(item);
92
+ changed = true;
93
+ }
94
+ });
95
+ return changed;
96
+ }
97
+ });
98
+ }
99
+ }
100
+
101
+ module.exports = FlagDependencyExportsPlugin;
@@ -30,7 +30,7 @@ class FlagDependencyUsagePlugin {
30
30
  else if(usedExports === true)
31
31
  module.usedExports = true;
32
32
  else if(Array.isArray(usedExports)) {
33
- var old = module.usedExports ? module.usedExports.length : -1;
33
+ const old = module.usedExports ? module.usedExports.length : -1;
34
34
  module.usedExports = addToSet(module.usedExports || [], usedExports);
35
35
  if(module.usedExports.length === old)
36
36
  return;
@@ -1,24 +1,24 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const FunctionModuleTemplatePlugin = require("./FunctionModuleTemplatePlugin");
8
- const RequestShortener = require("./RequestShortener");
9
-
10
- class FunctionModulePlugin {
11
- constructor(options, requestShortener) {
12
- this.options = options;
13
- this.requestShortener = requestShortener;
14
- }
15
-
16
- apply(compiler) {
17
- compiler.plugin("compilation", (compilation) => {
18
- compilation.moduleTemplate.requestShortener = this.requestShortener || new RequestShortener(compiler.context);
19
- compilation.moduleTemplate.apply(new FunctionModuleTemplatePlugin());
20
- });
21
- }
22
- }
23
-
24
- module.exports = FunctionModulePlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const FunctionModuleTemplatePlugin = require("./FunctionModuleTemplatePlugin");
8
+ const RequestShortener = require("./RequestShortener");
9
+
10
+ class FunctionModulePlugin {
11
+ constructor(options, requestShortener) {
12
+ this.options = options;
13
+ this.requestShortener = requestShortener;
14
+ }
15
+
16
+ apply(compiler) {
17
+ compiler.plugin("compilation", (compilation) => {
18
+ compilation.moduleTemplate.requestShortener = this.requestShortener || new RequestShortener(compiler.context);
19
+ compilation.moduleTemplate.apply(new FunctionModuleTemplatePlugin());
20
+ });
21
+ }
22
+ }
23
+
24
+ module.exports = FunctionModulePlugin;
@@ -1,42 +1,42 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
- const createHash = require("crypto").createHash;
7
-
8
- class HashedModuleIdsPlugin {
9
- constructor(options) {
10
- this.options = Object.assign({
11
- hashFunction: "md5",
12
- hashDigest: "base64",
13
- hashDigestLength: 4
14
- }, options);
15
- }
16
-
17
- apply(compiler) {
18
- const options = this.options;
19
- compiler.plugin("compilation", (compilation) => {
20
- const usedIds = new Set();
21
- compilation.plugin("before-module-ids", (modules) => {
22
- modules.forEach((module) => {
23
- if(module.id === null && module.libIdent) {
24
- const id = module.libIdent({
25
- context: this.options.context || compiler.options.context
26
- });
27
- const hash = createHash(options.hashFunction);
28
- hash.update(id);
29
- const hashId = hash.digest(options.hashDigest);
30
- let len = options.hashDigestLength;
31
- while(usedIds.has(hashId.substr(0, len)))
32
- len++;
33
- module.id = hashId.substr(0, len);
34
- usedIds.add(module.id);
35
- }
36
- });
37
- });
38
- });
39
- }
40
- }
41
-
42
- module.exports = HashedModuleIdsPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+ const createHash = require("crypto").createHash;
7
+
8
+ class HashedModuleIdsPlugin {
9
+ constructor(options) {
10
+ this.options = Object.assign({
11
+ hashFunction: "md5",
12
+ hashDigest: "base64",
13
+ hashDigestLength: 4
14
+ }, options);
15
+ }
16
+
17
+ apply(compiler) {
18
+ const options = this.options;
19
+ compiler.plugin("compilation", (compilation) => {
20
+ const usedIds = new Set();
21
+ compilation.plugin("before-module-ids", (modules) => {
22
+ modules.forEach((module) => {
23
+ if(module.id === null && module.libIdent) {
24
+ const id = module.libIdent({
25
+ context: this.options.context || compiler.options.context
26
+ });
27
+ const hash = createHash(options.hashFunction);
28
+ hash.update(id);
29
+ const hashId = hash.digest(options.hashDigest);
30
+ let len = options.hashDigestLength;
31
+ while(usedIds.has(hashId.substr(0, len)))
32
+ len++;
33
+ module.id = hashId.substr(0, len);
34
+ usedIds.add(module.id);
35
+ }
36
+ });
37
+ });
38
+ });
39
+ }
40
+ }
41
+
42
+ module.exports = HashedModuleIdsPlugin;
@@ -25,6 +25,11 @@ module.exports = class HotModuleReplacementPlugin {
25
25
  const requestTimeout = this.requestTimeout;
26
26
  const hotUpdateChunkFilename = compiler.options.output.hotUpdateChunkFilename;
27
27
  const hotUpdateMainFilename = compiler.options.output.hotUpdateMainFilename;
28
+ compiler.plugin("additional-pass", callback => {
29
+ if(multiStep)
30
+ return setTimeout(callback, fullBuildTimeout);
31
+ return callback();
32
+ });
28
33
  compiler.plugin("compilation", (compilation, params) => {
29
34
  const hotUpdateChunkTemplate = compilation.hotUpdateChunkTemplate;
30
35
  if(!hotUpdateChunkTemplate) return;
@@ -88,11 +93,6 @@ module.exports = class HotModuleReplacementPlugin {
88
93
  if(multiStep && !recompilation && !initialPass)
89
94
  return true;
90
95
  });
91
- compiler.plugin("additional-pass", callback => {
92
- if(multiStep)
93
- return setTimeout(callback, fullBuildTimeout);
94
- return callback();
95
- });
96
96
  compilation.plugin("additional-chunk-assets", function() {
97
97
  const records = this.records;
98
98
  if(records.hash === this.hash) return;
@@ -1,31 +1,31 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const Template = require("./Template");
8
- const Chunk = require("./Chunk");
9
-
10
- module.exports = class HotUpdateChunkTemplate extends Template {
11
- constructor(outputOptions) {
12
- super(outputOptions);
13
- }
14
-
15
- render(id, modules, removedModules, hash, moduleTemplate, dependencyTemplates) {
16
- const hotUpdateChunk = new Chunk();
17
- hotUpdateChunk.id = id;
18
- hotUpdateChunk.setModules(modules);
19
- hotUpdateChunk.removedModules = removedModules;
20
- const modulesSource = this.renderChunkModules(hotUpdateChunk, moduleTemplate, dependencyTemplates);
21
- const core = this.applyPluginsWaterfall("modules", modulesSource, modules, removedModules, moduleTemplate, dependencyTemplates);
22
- const source = this.applyPluginsWaterfall("render", core, modules, removedModules, hash, id, moduleTemplate, dependencyTemplates);
23
- return source;
24
- }
25
-
26
- updateHash(hash) {
27
- hash.update("HotUpdateChunkTemplate");
28
- hash.update("1");
29
- this.applyPlugins("hash", hash);
30
- }
31
- };
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const Template = require("./Template");
8
+ const Chunk = require("./Chunk");
9
+
10
+ module.exports = class HotUpdateChunkTemplate extends Template {
11
+ constructor(outputOptions) {
12
+ super(outputOptions);
13
+ }
14
+
15
+ render(id, modules, removedModules, hash, moduleTemplate, dependencyTemplates) {
16
+ const hotUpdateChunk = new Chunk();
17
+ hotUpdateChunk.id = id;
18
+ hotUpdateChunk.setModules(modules);
19
+ hotUpdateChunk.removedModules = removedModules;
20
+ const modulesSource = this.renderChunkModules(hotUpdateChunk, moduleTemplate, dependencyTemplates);
21
+ const core = this.applyPluginsWaterfall("modules", modulesSource, modules, removedModules, moduleTemplate, dependencyTemplates);
22
+ const source = this.applyPluginsWaterfall("render", core, modules, removedModules, hash, id, moduleTemplate, dependencyTemplates);
23
+ return source;
24
+ }
25
+
26
+ updateHash(hash) {
27
+ hash.update("HotUpdateChunkTemplate");
28
+ hash.update("1");
29
+ this.applyPlugins("hash", hash);
30
+ }
31
+ };
@@ -1,69 +1,69 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class IgnorePlugin {
8
- constructor(resourceRegExp, contextRegExp) {
9
- this.resourceRegExp = resourceRegExp;
10
- this.contextRegExp = contextRegExp;
11
-
12
- this.checkIgnore = this.checkIgnore.bind(this);
13
- }
14
-
15
- /*
16
- * Only returns true if a "resourceRegExp" exists
17
- * and the resource given matches the regexp.
18
- */
19
- checkResource(resource) {
20
- if(!this.resourceRegExp) {
21
- return false;
22
- }
23
- return this.resourceRegExp.test(resource);
24
- }
25
-
26
- /*
27
- * Returns true if contextRegExp does not exist
28
- * or if context matches the given regexp.
29
- */
30
- checkContext(context) {
31
- if(!this.contextRegExp) {
32
- return true;
33
- }
34
- return this.contextRegExp.test(context);
35
- }
36
-
37
- /*
38
- * Returns true if result should be ignored.
39
- * false if it shouldn't.
40
- *
41
- * Not that if "contextRegExp" is given, both the "resourceRegExp"
42
- * and "contextRegExp" have to match.
43
- */
44
- checkResult(result) {
45
- if(!result) {
46
- return true;
47
- }
48
- return this.checkResource(result.request) && this.checkContext(result.context);
49
- }
50
-
51
- checkIgnore(result, callback) {
52
- // check if result is ignored
53
- if(this.checkResult(result)) {
54
- return callback();
55
- }
56
- return callback(null, result);
57
- }
58
-
59
- apply(compiler) {
60
- compiler.plugin("normal-module-factory", (nmf) => {
61
- nmf.plugin("before-resolve", this.checkIgnore);
62
- });
63
- compiler.plugin("context-module-factory", (cmf) => {
64
- cmf.plugin("before-resolve", this.checkIgnore);
65
- });
66
- }
67
- }
68
-
69
- module.exports = IgnorePlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class IgnorePlugin {
8
+ constructor(resourceRegExp, contextRegExp) {
9
+ this.resourceRegExp = resourceRegExp;
10
+ this.contextRegExp = contextRegExp;
11
+
12
+ this.checkIgnore = this.checkIgnore.bind(this);
13
+ }
14
+
15
+ /*
16
+ * Only returns true if a "resourceRegExp" exists
17
+ * and the resource given matches the regexp.
18
+ */
19
+ checkResource(resource) {
20
+ if(!this.resourceRegExp) {
21
+ return false;
22
+ }
23
+ return this.resourceRegExp.test(resource);
24
+ }
25
+
26
+ /*
27
+ * Returns true if contextRegExp does not exist
28
+ * or if context matches the given regexp.
29
+ */
30
+ checkContext(context) {
31
+ if(!this.contextRegExp) {
32
+ return true;
33
+ }
34
+ return this.contextRegExp.test(context);
35
+ }
36
+
37
+ /*
38
+ * Returns true if result should be ignored.
39
+ * false if it shouldn't.
40
+ *
41
+ * Not that if "contextRegExp" is given, both the "resourceRegExp"
42
+ * and "contextRegExp" have to match.
43
+ */
44
+ checkResult(result) {
45
+ if(!result) {
46
+ return true;
47
+ }
48
+ return this.checkResource(result.request) && this.checkContext(result.context);
49
+ }
50
+
51
+ checkIgnore(result, callback) {
52
+ // check if result is ignored
53
+ if(this.checkResult(result)) {
54
+ return callback();
55
+ }
56
+ return callback(null, result);
57
+ }
58
+
59
+ apply(compiler) {
60
+ compiler.plugin("normal-module-factory", (nmf) => {
61
+ nmf.plugin("before-resolve", this.checkIgnore);
62
+ });
63
+ compiler.plugin("context-module-factory", (cmf) => {
64
+ cmf.plugin("before-resolve", this.checkIgnore);
65
+ });
66
+ }
67
+ }
68
+
69
+ module.exports = IgnorePlugin;
@@ -1,37 +1,37 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const ConcatSource = require("webpack-sources").ConcatSource;
8
-
9
- class JsonpExportMainTemplatePlugin {
10
- constructor(name) {
11
- this.name = name;
12
- }
13
-
14
- apply(compilation) {
15
- const mainTemplate = compilation.mainTemplate;
16
-
17
- compilation.templatesPlugin("render-with-entry", (source, chunk, hash) => {
18
- const name = mainTemplate.applyPluginsWaterfall("asset-path", this.name || "", {
19
- hash: hash,
20
- chunk: chunk
21
- });
22
- return new ConcatSource(`${name}(`, source, ");");
23
- });
24
-
25
- mainTemplate.plugin("global-hash-paths", paths => {
26
- if(this.name) paths.push(this.name);
27
- return paths;
28
- });
29
-
30
- mainTemplate.plugin("hash", hash => {
31
- hash.update("jsonp export");
32
- hash.update(`${this.name}`);
33
- });
34
- }
35
- }
36
-
37
- module.exports = JsonpExportMainTemplatePlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const ConcatSource = require("webpack-sources").ConcatSource;
8
+
9
+ class JsonpExportMainTemplatePlugin {
10
+ constructor(name) {
11
+ this.name = name;
12
+ }
13
+
14
+ apply(compilation) {
15
+ const mainTemplate = compilation.mainTemplate;
16
+
17
+ compilation.templatesPlugin("render-with-entry", (source, chunk, hash) => {
18
+ const name = mainTemplate.applyPluginsWaterfall("asset-path", this.name || "", {
19
+ hash: hash,
20
+ chunk: chunk
21
+ });
22
+ return new ConcatSource(`${name}(`, source, ");");
23
+ });
24
+
25
+ mainTemplate.plugin("global-hash-paths", paths => {
26
+ if(this.name) paths.push(this.name);
27
+ return paths;
28
+ });
29
+
30
+ mainTemplate.plugin("hash", hash => {
31
+ hash.update("jsonp export");
32
+ hash.update(`${this.name}`);
33
+ });
34
+ }
35
+ }
36
+
37
+ module.exports = JsonpExportMainTemplatePlugin;