webpack 3.6.0 → 3.8.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 (229) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +716 -716
  3. package/bin/convert-argv.js +1 -1
  4. package/bin/webpack.js +6 -0
  5. package/buildin/.eslintrc +7 -7
  6. package/buildin/amd-define.js +3 -3
  7. package/buildin/amd-options.js +2 -2
  8. package/buildin/global.js +21 -21
  9. package/buildin/harmony-module.js +24 -24
  10. package/buildin/module.js +22 -22
  11. package/buildin/system.js +7 -7
  12. package/hot/.eslintrc +9 -9
  13. package/hot/dev-server.js +53 -53
  14. package/hot/emitter.js +2 -2
  15. package/hot/log-apply-result.js +38 -38
  16. package/hot/log.js +44 -44
  17. package/hot/only-dev-server.js +71 -71
  18. package/hot/poll.js +34 -34
  19. package/hot/signal.js +51 -51
  20. package/lib/APIPlugin.js +45 -45
  21. package/lib/AsyncDependenciesBlock.js +43 -43
  22. package/lib/AsyncDependencyToInitialChunkWarning.js +21 -0
  23. package/lib/AutomaticPrefetchPlugin.js +36 -36
  24. package/lib/BasicEvaluatedExpression.js +203 -203
  25. package/lib/CaseSensitiveModulesWarning.js +49 -49
  26. package/lib/Chunk.js +3 -0
  27. package/lib/ChunkRenderError.js +24 -24
  28. package/lib/ChunkTemplate.js +36 -36
  29. package/lib/CompatibilityPlugin.js +57 -57
  30. package/lib/Compilation.js +158 -51
  31. package/lib/Compiler.js +523 -523
  32. package/lib/ConstPlugin.js +60 -60
  33. package/lib/ContextExclusionPlugin.js +17 -0
  34. package/lib/ContextModule.js +431 -431
  35. package/lib/ContextModuleFactory.js +14 -5
  36. package/lib/ContextReplacementPlugin.js +111 -111
  37. package/lib/DefinePlugin.js +123 -123
  38. package/lib/DelegatedModule.js +98 -92
  39. package/lib/DelegatedModuleFactoryPlugin.js +59 -59
  40. package/lib/DelegatedPlugin.js +30 -30
  41. package/lib/DependenciesBlockVariable.js +51 -51
  42. package/lib/DllEntryPlugin.js +37 -37
  43. package/lib/DllModule.js +58 -58
  44. package/lib/DllModuleFactory.js +20 -20
  45. package/lib/DllPlugin.js +38 -38
  46. package/lib/DllReferencePlugin.js +62 -62
  47. package/lib/DynamicEntryPlugin.js +59 -59
  48. package/lib/EntryModuleNotFoundError.js +22 -22
  49. package/lib/EntryOptionPlugin.js +31 -31
  50. package/lib/EnvironmentPlugin.js +50 -50
  51. package/lib/ErrorHelpers.js +31 -31
  52. package/lib/EvalDevToolModulePlugin.js +22 -22
  53. package/lib/EvalDevToolModuleTemplatePlugin.js +33 -33
  54. package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +75 -75
  55. package/lib/EvalSourceMapDevToolPlugin.js +32 -32
  56. package/lib/ExportPropertyMainTemplatePlugin.js +31 -31
  57. package/lib/ExtendedAPIPlugin.js +47 -47
  58. package/lib/ExternalModule.js +7 -0
  59. package/lib/ExternalModuleFactoryPlugin.js +91 -91
  60. package/lib/ExternalsPlugin.js +21 -21
  61. package/lib/FlagDependencyExportsPlugin.js +101 -101
  62. package/lib/FunctionModulePlugin.js +24 -24
  63. package/lib/FunctionModuleTemplatePlugin.js +7 -3
  64. package/lib/HashedModuleIdsPlugin.js +42 -42
  65. package/lib/HotUpdateChunkTemplate.js +31 -31
  66. package/lib/IgnorePlugin.js +69 -69
  67. package/lib/JsonpExportMainTemplatePlugin.js +37 -37
  68. package/lib/JsonpHotUpdateChunkTemplatePlugin.js +27 -27
  69. package/lib/JsonpMainTemplate.runtime.js +2 -1
  70. package/lib/JsonpMainTemplatePlugin.js +2 -0
  71. package/lib/JsonpTemplatePlugin.js +21 -21
  72. package/lib/LibManifestPlugin.js +63 -63
  73. package/lib/LibraryTemplatePlugin.js +92 -92
  74. package/lib/LoaderOptionsPlugin.js +36 -36
  75. package/lib/LoaderTargetPlugin.js +19 -19
  76. package/lib/MemoryOutputFileSystem.js +5 -5
  77. package/lib/ModuleBuildError.js +42 -42
  78. package/lib/ModuleDependencyError.js +22 -22
  79. package/lib/ModuleDependencyWarning.js +22 -22
  80. package/lib/ModuleError.js +24 -24
  81. package/lib/ModuleFilenameHelpers.js +162 -162
  82. package/lib/ModuleNotFoundError.js +26 -26
  83. package/lib/ModuleParseError.js +1 -1
  84. package/lib/ModuleReason.js +50 -50
  85. package/lib/ModuleTemplate.js +23 -23
  86. package/lib/ModuleWarning.js +24 -24
  87. package/lib/MovedToPluginWarningPlugin.js +21 -21
  88. package/lib/MultiCompiler.js +164 -164
  89. package/lib/MultiEntryPlugin.js +39 -39
  90. package/lib/MultiModuleFactory.js +19 -19
  91. package/lib/MultiStats.js +79 -79
  92. package/lib/MultiWatching.js +32 -32
  93. package/lib/NamedChunksPlugin.js +30 -30
  94. package/lib/NamedModulesPlugin.js +27 -27
  95. package/lib/NewWatchingPlugin.js +15 -15
  96. package/lib/NoEmitOnErrorsPlugin.js +22 -22
  97. package/lib/NoErrorsPlugin.js +29 -29
  98. package/lib/NodeStuffPlugin.js +97 -97
  99. package/lib/NormalModuleReplacementPlugin.js +45 -45
  100. package/lib/NullFactory.js +12 -12
  101. package/lib/OptionsApply.js +10 -10
  102. package/lib/Parser.js +65 -34
  103. package/lib/ParserHelpers.js +85 -85
  104. package/lib/PrefetchPlugin.js +31 -31
  105. package/lib/ProgressPlugin.js +192 -192
  106. package/lib/ProvidePlugin.js +55 -55
  107. package/lib/RawModule.js +54 -54
  108. package/lib/RequestShortener.js +63 -63
  109. package/lib/RequireJsStuffPlugin.js +31 -31
  110. package/lib/RuleSet.js +444 -444
  111. package/lib/SetVarMainTemplatePlugin.js +41 -41
  112. package/lib/SingleEntryPlugin.js +35 -35
  113. package/lib/SizeFormatHelpers.js +18 -18
  114. package/lib/SourceMapDevToolModuleOptionsPlugin.js +37 -37
  115. package/lib/Stats.js +27 -8
  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 +129 -129
  123. package/lib/WebpackOptionsValidationError.js +196 -196
  124. package/lib/compareLocations.js +36 -36
  125. package/lib/dependencies/AMDDefineDependency.js +142 -142
  126. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +5 -1
  127. package/lib/dependencies/AMDPlugin.js +119 -119
  128. package/lib/dependencies/AMDRequireArrayDependency.js +2 -0
  129. package/lib/dependencies/AMDRequireContextDependency.js +0 -9
  130. package/lib/dependencies/AMDRequireDependenciesBlock.js +33 -33
  131. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +177 -177
  132. package/lib/dependencies/AMDRequireDependency.js +67 -67
  133. package/lib/dependencies/AMDRequireItemDependency.js +22 -22
  134. package/lib/dependencies/CommonJsRequireContextDependency.js +0 -10
  135. package/lib/dependencies/CommonJsRequireDependency.js +22 -22
  136. package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
  137. package/lib/dependencies/ConstDependency.js +32 -32
  138. package/lib/dependencies/ContextDependency.js +20 -0
  139. package/lib/dependencies/ContextDependencyHelpers.js +71 -71
  140. package/lib/dependencies/ContextElementDependency.js +21 -21
  141. package/lib/dependencies/CriticalDependencyWarning.js +20 -20
  142. package/lib/dependencies/DelegatedExportsDependency.js +33 -33
  143. package/lib/dependencies/DelegatedSourceDependency.js +18 -18
  144. package/lib/dependencies/DllEntryDependency.js +20 -20
  145. package/lib/dependencies/HarmonyCompatibilityDependency.js +30 -30
  146. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +14 -2
  147. package/lib/dependencies/HarmonyExportExpressionDependency.js +0 -7
  148. package/lib/dependencies/HarmonyExportHeaderDependency.js +28 -28
  149. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +45 -45
  150. package/lib/dependencies/HarmonyExportSpecifierDependency.js +0 -13
  151. package/lib/dependencies/HarmonyModulesHelpers.js +0 -53
  152. package/lib/dependencies/ImportContextDependency.js +0 -10
  153. package/lib/dependencies/ImportDependenciesBlock.js +17 -17
  154. package/lib/dependencies/ImportEagerContextDependency.js +22 -22
  155. package/lib/dependencies/ImportLazyContextDependency.js +22 -22
  156. package/lib/dependencies/ImportLazyOnceContextDependency.js +22 -22
  157. package/lib/dependencies/ImportParserPlugin.js +89 -89
  158. package/lib/dependencies/ImportPlugin.js +60 -60
  159. package/lib/dependencies/ImportWeakContextDependency.js +22 -22
  160. package/lib/dependencies/LoaderDependency.js +18 -18
  161. package/lib/dependencies/LoaderPlugin.js +60 -60
  162. package/lib/dependencies/LocalModule.js +23 -23
  163. package/lib/dependencies/LocalModuleDependency.js +24 -24
  164. package/lib/dependencies/LocalModulesHelpers.js +46 -46
  165. package/lib/dependencies/ModuleDependency.js +23 -23
  166. package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
  167. package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
  168. package/lib/dependencies/MultiEntryDependency.js +20 -20
  169. package/lib/dependencies/NullDependency.js +24 -24
  170. package/lib/dependencies/PrefetchDependency.js +18 -18
  171. package/lib/dependencies/RequireContextDependency.js +26 -26
  172. package/lib/dependencies/RequireContextDependencyParserPlugin.js +50 -50
  173. package/lib/dependencies/RequireContextPlugin.js +96 -96
  174. package/lib/dependencies/RequireEnsureDependenciesBlock.js +22 -22
  175. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +102 -102
  176. package/lib/dependencies/RequireEnsureDependency.js +38 -38
  177. package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
  178. package/lib/dependencies/RequireEnsurePlugin.js +40 -40
  179. package/lib/dependencies/RequireHeaderDependency.js +26 -26
  180. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +21 -21
  181. package/lib/dependencies/RequireIncludePlugin.js +33 -33
  182. package/lib/dependencies/RequireResolveContextDependency.js +0 -10
  183. package/lib/dependencies/RequireResolveDependency.js +22 -22
  184. package/lib/dependencies/RequireResolveDependencyParserPlugin.js +71 -71
  185. package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
  186. package/lib/dependencies/SingleEntryDependency.js +18 -18
  187. package/lib/dependencies/SystemPlugin.js +44 -44
  188. package/lib/dependencies/UnsupportedDependency.js +23 -23
  189. package/lib/dependencies/WebpackMissingModule.js +18 -18
  190. package/lib/dependencies/getFunctionExpression.js +44 -44
  191. package/lib/formatLocation.js +54 -54
  192. package/lib/node/NodeChunkTemplatePlugin.js +27 -27
  193. package/lib/node/NodeEnvironmentPlugin.js +25 -25
  194. package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +27 -27
  195. package/lib/node/NodeMainTemplate.runtime.js +24 -24
  196. package/lib/node/NodeMainTemplateAsync.runtime.js +40 -40
  197. package/lib/node/NodeOutputFileSystem.js +22 -22
  198. package/lib/node/NodeSourcePlugin.js +88 -88
  199. package/lib/node/NodeTargetPlugin.js +15 -15
  200. package/lib/node/NodeTemplatePlugin.js +27 -27
  201. package/lib/node/NodeWatchFileSystem.js +72 -72
  202. package/lib/optimize/ChunkModuleIdRangePlugin.js +53 -53
  203. package/lib/optimize/CommonsChunkPlugin.js +40 -19
  204. package/lib/optimize/ConcatenatedModule.js +27 -24
  205. package/lib/optimize/DedupePlugin.js +15 -15
  206. package/lib/optimize/FlagIncludedChunksPlugin.js +35 -35
  207. package/lib/optimize/LimitChunkCountPlugin.js +59 -59
  208. package/lib/optimize/MinChunkSizePlugin.js +65 -65
  209. package/lib/optimize/RemoveEmptyChunksPlugin.js +21 -21
  210. package/lib/optimize/UglifyJsPlugin.js +9 -9
  211. package/lib/performance/AssetsOverSizeLimitWarning.js +23 -23
  212. package/lib/performance/EntrypointsOverSizeLimitWarning.js +28 -28
  213. package/lib/performance/NoAsyncChunksWarning.js +20 -20
  214. package/lib/performance/SizeLimitsPlugin.js +102 -102
  215. package/lib/prepareOptions.js +29 -29
  216. package/lib/removeAndDo.js +15 -15
  217. package/lib/util/Queue.js +42 -0
  218. package/lib/util/Semaphore.js +32 -32
  219. package/lib/util/identifier.js +38 -38
  220. package/lib/validateSchema.js +66 -66
  221. package/lib/web/WebEnvironmentPlugin.js +18 -18
  222. package/lib/webpack.js +1 -0
  223. package/lib/webworker/WebWorkerChunkTemplatePlugin.js +29 -29
  224. package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +28 -28
  225. package/lib/webworker/WebWorkerMainTemplate.runtime.js +58 -58
  226. package/lib/webworker/WebWorkerTemplatePlugin.js +20 -20
  227. package/package.json +1 -1
  228. package/schemas/ajv.absolutePath.js +29 -29
  229. package/schemas/webpackOptionsSchema.json +69 -0
@@ -17,7 +17,6 @@ const HarmonyExportSpecifierDependency = require("../dependencies/HarmonyExportS
17
17
  const HarmonyExportExpressionDependency = require("../dependencies/HarmonyExportExpressionDependency");
18
18
  const HarmonyExportImportedSpecifierDependency = require("../dependencies/HarmonyExportImportedSpecifierDependency");
19
19
  const HarmonyCompatibilityDependency = require("../dependencies/HarmonyCompatibilityDependency");
20
- const HarmonyModulesHelpers = require("../dependencies/HarmonyModulesHelpers");
21
20
 
22
21
  function ensureNsObjSource(info, moduleToInfoMap, requestShortener) {
23
22
  if(!info.hasNamespaceObject) {
@@ -308,35 +307,42 @@ class ConcatenatedModule extends Module {
308
307
  const reexportMap = new Map();
309
308
  info.module.dependencies.forEach(dep => {
310
309
  if(dep instanceof HarmonyExportSpecifierDependency) {
311
- exportMap.set(dep.name, dep.id);
310
+ if(!exportMap.has(dep.name))
311
+ exportMap.set(dep.name, dep.id);
312
312
  } else if(dep instanceof HarmonyExportExpressionDependency) {
313
- exportMap.set("default", "__WEBPACK_MODULE_DEFAULT_EXPORT__");
313
+ if(!exportMap.has("default"))
314
+ exportMap.set("default", "__WEBPACK_MODULE_DEFAULT_EXPORT__");
314
315
  } else if(dep instanceof HarmonyExportImportedSpecifierDependency) {
315
316
  const exportName = dep.name;
316
317
  const importName = dep.id;
317
318
  const importedModule = dep.importDependency.module;
318
319
  if(exportName && importName) {
319
- reexportMap.set(exportName, {
320
- module: importedModule,
321
- exportName: importName,
322
- dependency: dep
323
- });
320
+ if(!reexportMap.has(exportName)) {
321
+ reexportMap.set(exportName, {
322
+ module: importedModule,
323
+ exportName: importName,
324
+ dependency: dep
325
+ });
326
+ }
324
327
  } else if(exportName) {
325
- reexportMap.set(exportName, {
326
- module: importedModule,
327
- exportName: true,
328
- dependency: dep
329
- });
330
- } else {
331
- var activeExports = new Set(HarmonyModulesHelpers.getActiveExports(dep.originModule, dep));
332
- importedModule.providedExports.forEach(name => {
333
- if(activeExports.has(name) || name === "default")
334
- return;
335
- reexportMap.set(name, {
328
+ if(!reexportMap.has(exportName)) {
329
+ reexportMap.set(exportName, {
336
330
  module: importedModule,
337
- exportName: name,
331
+ exportName: true,
338
332
  dependency: dep
339
333
  });
334
+ }
335
+ } else if(importedModule) {
336
+ importedModule.providedExports.forEach(name => {
337
+ if(dep.activeExports.has(name) || name === "default")
338
+ return;
339
+ if(!reexportMap.has(name)) {
340
+ reexportMap.set(name, {
341
+ module: importedModule,
342
+ exportName: name,
343
+ dependency: dep
344
+ });
345
+ }
340
346
  });
341
347
  }
342
348
  }
@@ -741,8 +747,6 @@ class HarmonyExportImportedSpecifierDependencyConcatenatedTemplate {
741
747
  }
742
748
 
743
749
  getExports(dep) {
744
- const active = HarmonyModulesHelpers.isActive(dep.originModule, dep);
745
- if(!active) return [];
746
750
  const importModule = dep.importDependency.module;
747
751
  if(dep.id) {
748
752
  // export { named } from "module"
@@ -761,8 +765,7 @@ class HarmonyExportImportedSpecifierDependencyConcatenatedTemplate {
761
765
  }];
762
766
  }
763
767
  // export * from "module"
764
- const activeExports = new Set(HarmonyModulesHelpers.getActiveExports(dep.originModule, dep));
765
- return importModule.providedExports.filter(exp => exp !== "default" && !activeExports.has(exp)).map(exp => {
768
+ return importModule.providedExports.filter(exp => exp !== "default" && !dep.activeExports.has(exp)).map(exp => {
766
769
  return {
767
770
  name: exp,
768
771
  id: exp,
@@ -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;
@@ -1,35 +1,35 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class FlagIncludedChunksPlugin {
8
-
9
- apply(compiler) {
10
- compiler.plugin("compilation", (compilation) => {
11
- compilation.plugin("optimize-chunk-ids", (chunks) => {
12
- chunks.forEach((chunkA) => {
13
- chunks.forEach((chunkB) => {
14
- // as we iterate the same iterables twice
15
- // skip if we find ourselves
16
- if(chunkA === chunkB) return;
17
-
18
- // instead of swapping A and B just bail
19
- // as we loop twice the current A will be B and B then A
20
- if(chunkA.getNumberOfModules() < chunkB.getNumberOfModules()) return;
21
-
22
- if(chunkB.getNumberOfModules() === 0) return;
23
-
24
- // is chunkB in chunkA?
25
- for(const m of chunkB.modulesIterable) {
26
- if(!chunkA.containsModule(m)) return;
27
- }
28
- chunkA.ids.push(chunkB.id);
29
- });
30
- });
31
- });
32
- });
33
- }
34
- }
35
- module.exports = FlagIncludedChunksPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class FlagIncludedChunksPlugin {
8
+
9
+ apply(compiler) {
10
+ compiler.plugin("compilation", (compilation) => {
11
+ compilation.plugin("optimize-chunk-ids", (chunks) => {
12
+ chunks.forEach((chunkA) => {
13
+ chunks.forEach((chunkB) => {
14
+ // as we iterate the same iterables twice
15
+ // skip if we find ourselves
16
+ if(chunkA === chunkB) return;
17
+
18
+ // instead of swapping A and B just bail
19
+ // as we loop twice the current A will be B and B then A
20
+ if(chunkA.getNumberOfModules() < chunkB.getNumberOfModules()) return;
21
+
22
+ if(chunkB.getNumberOfModules() === 0) return;
23
+
24
+ // is chunkB in chunkA?
25
+ for(const m of chunkB.modulesIterable) {
26
+ if(!chunkA.containsModule(m)) return;
27
+ }
28
+ chunkA.ids.push(chunkB.id);
29
+ });
30
+ });
31
+ });
32
+ });
33
+ }
34
+ }
35
+ module.exports = FlagIncludedChunksPlugin;
@@ -1,59 +1,59 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class LimitChunkCountPlugin {
8
- constructor(options) {
9
- if(options !== undefined && typeof options !== "object" || Array.isArray(options)) {
10
- throw new Error("Argument should be an options object.\nFor more info on options, see https://webpack.js.org/plugins/");
11
- }
12
- this.options = options || {};
13
- }
14
- apply(compiler) {
15
- const options = this.options;
16
- compiler.plugin("compilation", (compilation) => {
17
- compilation.plugin("optimize-chunks-advanced", (chunks) => {
18
- const maxChunks = options.maxChunks;
19
- if(!maxChunks) return;
20
- if(maxChunks < 1) return;
21
- if(chunks.length <= maxChunks) return;
22
-
23
- if(chunks.length > maxChunks) {
24
- const sortedExtendedPairCombinations = chunks.reduce((combinations, a, idx) => {
25
- // create combination pairs
26
- for(let i = 0; i < idx; i++) {
27
- const b = chunks[i];
28
- combinations.push([b, a]);
29
- }
30
- return combinations;
31
- }, []).map((pair) => {
32
- // extend combination pairs with size and integrated size
33
- const a = pair[0].size(options);
34
- const b = pair[1].size(options);
35
- const ab = pair[0].integratedSize(pair[1], options);
36
- return [a + b - ab, ab, pair[0], pair[1], a, b];
37
- }).filter((extendedPair) => {
38
- // filter pairs that do not have an integratedSize
39
- // meaning they can NOT be integrated!
40
- return extendedPair[1] !== false;
41
- }).sort((a, b) => { // sadly javascript does an inplace sort here
42
- // sort them by size
43
- const diff = b[0] - a[0];
44
- if(diff !== 0) return diff;
45
- return a[1] - b[1];
46
- });
47
-
48
- const pair = sortedExtendedPairCombinations[0];
49
-
50
- if(pair && pair[2].integrate(pair[3], "limit")) {
51
- chunks.splice(chunks.indexOf(pair[3]), 1);
52
- return true;
53
- }
54
- }
55
- });
56
- });
57
- }
58
- }
59
- module.exports = LimitChunkCountPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class LimitChunkCountPlugin {
8
+ constructor(options) {
9
+ if(options !== undefined && typeof options !== "object" || Array.isArray(options)) {
10
+ throw new Error("Argument should be an options object.\nFor more info on options, see https://webpack.js.org/plugins/");
11
+ }
12
+ this.options = options || {};
13
+ }
14
+ apply(compiler) {
15
+ const options = this.options;
16
+ compiler.plugin("compilation", (compilation) => {
17
+ compilation.plugin("optimize-chunks-advanced", (chunks) => {
18
+ const maxChunks = options.maxChunks;
19
+ if(!maxChunks) return;
20
+ if(maxChunks < 1) return;
21
+ if(chunks.length <= maxChunks) return;
22
+
23
+ if(chunks.length > maxChunks) {
24
+ const sortedExtendedPairCombinations = chunks.reduce((combinations, a, idx) => {
25
+ // create combination pairs
26
+ for(let i = 0; i < idx; i++) {
27
+ const b = chunks[i];
28
+ combinations.push([b, a]);
29
+ }
30
+ return combinations;
31
+ }, []).map((pair) => {
32
+ // extend combination pairs with size and integrated size
33
+ const a = pair[0].size(options);
34
+ const b = pair[1].size(options);
35
+ const ab = pair[0].integratedSize(pair[1], options);
36
+ return [a + b - ab, ab, pair[0], pair[1], a, b];
37
+ }).filter((extendedPair) => {
38
+ // filter pairs that do not have an integratedSize
39
+ // meaning they can NOT be integrated!
40
+ return extendedPair[1] !== false;
41
+ }).sort((a, b) => { // sadly javascript does an inplace sort here
42
+ // sort them by size
43
+ const diff = b[0] - a[0];
44
+ if(diff !== 0) return diff;
45
+ return a[1] - b[1];
46
+ });
47
+
48
+ const pair = sortedExtendedPairCombinations[0];
49
+
50
+ if(pair && pair[2].integrate(pair[3], "limit")) {
51
+ chunks.splice(chunks.indexOf(pair[3]), 1);
52
+ return true;
53
+ }
54
+ }
55
+ });
56
+ });
57
+ }
58
+ }
59
+ module.exports = LimitChunkCountPlugin;
@@ -1,65 +1,65 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class MinChunkSizePlugin {
8
- constructor(options) {
9
- if(typeof options !== "object" || Array.isArray(options)) {
10
- throw new Error("Argument should be an options object.\nFor more info on options, see https://webpack.js.org/plugins/");
11
- }
12
- this.options = options;
13
- }
14
-
15
- apply(compiler) {
16
- const options = this.options;
17
- const minChunkSize = options.minChunkSize;
18
- compiler.plugin("compilation", (compilation) => {
19
- compilation.plugin("optimize-chunks-advanced", (chunks) => {
20
- const equalOptions = {
21
- chunkOverhead: 1,
22
- entryChunkMultiplicator: 1
23
- };
24
-
25
- const sortedSizeFilteredExtendedPairCombinations = chunks.reduce((combinations, a, idx) => {
26
- // create combination pairs
27
- for(let i = 0; i < idx; i++) {
28
- const b = chunks[i];
29
- combinations.push([b, a]);
30
- }
31
- return combinations;
32
- }, []).filter((pair) => {
33
- // check if one of the chunks sizes is smaller than the minChunkSize
34
- const p0SmallerThanMinChunkSize = pair[0].size(equalOptions) < minChunkSize;
35
- const p1SmallerThanMinChunkSize = pair[1].size(equalOptions) < minChunkSize;
36
- return p0SmallerThanMinChunkSize || p1SmallerThanMinChunkSize;
37
- }).map((pair) => {
38
- // extend combination pairs with size and integrated size
39
- const a = pair[0].size(options);
40
- const b = pair[1].size(options);
41
- const ab = pair[0].integratedSize(pair[1], options);
42
- return [a + b - ab, ab, pair[0], pair[1]];
43
- }).filter((pair) => {
44
- // filter pairs that do not have an integratedSize
45
- // meaning they can NOT be integrated!
46
- return pair[1] !== false;
47
- }).sort((a, b) => { // sadly javascript does an inplace sort here
48
- // sort by size
49
- const diff = b[0] - a[0];
50
- if(diff !== 0) return diff;
51
- return a[1] - b[1];
52
- });
53
-
54
- if(sortedSizeFilteredExtendedPairCombinations.length === 0) return;
55
-
56
- const pair = sortedSizeFilteredExtendedPairCombinations[0];
57
-
58
- pair[2].integrate(pair[3], "min-size");
59
- chunks.splice(chunks.indexOf(pair[3]), 1);
60
- return true;
61
- });
62
- });
63
- }
64
- }
65
- module.exports = MinChunkSizePlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class MinChunkSizePlugin {
8
+ constructor(options) {
9
+ if(typeof options !== "object" || Array.isArray(options)) {
10
+ throw new Error("Argument should be an options object.\nFor more info on options, see https://webpack.js.org/plugins/");
11
+ }
12
+ this.options = options;
13
+ }
14
+
15
+ apply(compiler) {
16
+ const options = this.options;
17
+ const minChunkSize = options.minChunkSize;
18
+ compiler.plugin("compilation", (compilation) => {
19
+ compilation.plugin("optimize-chunks-advanced", (chunks) => {
20
+ const equalOptions = {
21
+ chunkOverhead: 1,
22
+ entryChunkMultiplicator: 1
23
+ };
24
+
25
+ const sortedSizeFilteredExtendedPairCombinations = chunks.reduce((combinations, a, idx) => {
26
+ // create combination pairs
27
+ for(let i = 0; i < idx; i++) {
28
+ const b = chunks[i];
29
+ combinations.push([b, a]);
30
+ }
31
+ return combinations;
32
+ }, []).filter((pair) => {
33
+ // check if one of the chunks sizes is smaller than the minChunkSize
34
+ const p0SmallerThanMinChunkSize = pair[0].size(equalOptions) < minChunkSize;
35
+ const p1SmallerThanMinChunkSize = pair[1].size(equalOptions) < minChunkSize;
36
+ return p0SmallerThanMinChunkSize || p1SmallerThanMinChunkSize;
37
+ }).map((pair) => {
38
+ // extend combination pairs with size and integrated size
39
+ const a = pair[0].size(options);
40
+ const b = pair[1].size(options);
41
+ const ab = pair[0].integratedSize(pair[1], options);
42
+ return [a + b - ab, ab, pair[0], pair[1]];
43
+ }).filter((pair) => {
44
+ // filter pairs that do not have an integratedSize
45
+ // meaning they can NOT be integrated!
46
+ return pair[1] !== false;
47
+ }).sort((a, b) => { // sadly javascript does an inplace sort here
48
+ // sort by size
49
+ const diff = b[0] - a[0];
50
+ if(diff !== 0) return diff;
51
+ return a[1] - b[1];
52
+ });
53
+
54
+ if(sortedSizeFilteredExtendedPairCombinations.length === 0) return;
55
+
56
+ const pair = sortedSizeFilteredExtendedPairCombinations[0];
57
+
58
+ pair[2].integrate(pair[3], "min-size");
59
+ chunks.splice(chunks.indexOf(pair[3]), 1);
60
+ return true;
61
+ });
62
+ });
63
+ }
64
+ }
65
+ module.exports = MinChunkSizePlugin;
@@ -1,21 +1,21 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class RemoveEmptyChunksPlugin {
8
-
9
- apply(compiler) {
10
- compiler.plugin("compilation", (compilation) => {
11
- compilation.plugin(["optimize-chunks-basic", "optimize-extracted-chunks-basic"], (chunks) => {
12
- chunks.filter((chunk) => chunk.isEmpty() && !chunk.hasRuntime() && !chunk.hasEntryModule())
13
- .forEach((chunk) => {
14
- chunk.remove("empty");
15
- chunks.splice(chunks.indexOf(chunk), 1);
16
- });
17
- });
18
- });
19
- }
20
- }
21
- module.exports = RemoveEmptyChunksPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class RemoveEmptyChunksPlugin {
8
+
9
+ apply(compiler) {
10
+ compiler.plugin("compilation", (compilation) => {
11
+ compilation.plugin(["optimize-chunks-basic", "optimize-extracted-chunks-basic"], (chunks) => {
12
+ chunks.filter((chunk) => chunk.isEmpty() && !chunk.hasRuntime() && !chunk.hasEntryModule())
13
+ .forEach((chunk) => {
14
+ chunk.remove("empty");
15
+ chunks.splice(chunks.indexOf(chunk), 1);
16
+ });
17
+ });
18
+ });
19
+ }
20
+ }
21
+ module.exports = RemoveEmptyChunksPlugin;
@@ -1,9 +1,9 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
8
-
9
- module.exports = UglifyJsPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
8
+
9
+ module.exports = UglifyJsPlugin;
@@ -1,23 +1,23 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Sean Larkin @thelarkinn
4
- */
5
- "use strict";
6
-
7
- const WebpackError = require("../WebpackError");
8
- const SizeFormatHelpers = require("../SizeFormatHelpers");
9
-
10
- module.exports = class AssetsOverSizeLimitWarning extends WebpackError {
11
- constructor(assetsOverSizeLimit, assetLimit) {
12
- super();
13
-
14
- this.name = "AssetsOverSizeLimitWarning";
15
- this.assets = assetsOverSizeLimit;
16
- const assetLists = this.assets.map(asset => `\n ${asset.name} (${SizeFormatHelpers.formatSize(asset.size)})`).join("");
17
- this.message = `asset size limit: The following asset(s) exceed the recommended size limit (${SizeFormatHelpers.formatSize(assetLimit)}).
18
- This can impact web performance.
19
- Assets: ${assetLists}`;
20
-
21
- Error.captureStackTrace(this, this.constructor);
22
- }
23
- };
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Sean Larkin @thelarkinn
4
+ */
5
+ "use strict";
6
+
7
+ const WebpackError = require("../WebpackError");
8
+ const SizeFormatHelpers = require("../SizeFormatHelpers");
9
+
10
+ module.exports = class AssetsOverSizeLimitWarning extends WebpackError {
11
+ constructor(assetsOverSizeLimit, assetLimit) {
12
+ super();
13
+
14
+ this.name = "AssetsOverSizeLimitWarning";
15
+ this.assets = assetsOverSizeLimit;
16
+ const assetLists = this.assets.map(asset => `\n ${asset.name} (${SizeFormatHelpers.formatSize(asset.size)})`).join("");
17
+ this.message = `asset size limit: The following asset(s) exceed the recommended size limit (${SizeFormatHelpers.formatSize(assetLimit)}).
18
+ This can impact web performance.
19
+ Assets: ${assetLists}`;
20
+
21
+ Error.captureStackTrace(this, this.constructor);
22
+ }
23
+ };
@@ -1,28 +1,28 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Sean Larkin @thelarkinn
4
- */
5
- "use strict";
6
-
7
- const WebpackError = require("../WebpackError");
8
- const SizeFormatHelpers = require("../SizeFormatHelpers");
9
-
10
- module.exports = class EntrypointsOverSizeLimitWarning extends WebpackError {
11
- constructor(entrypoints, entrypointLimit) {
12
- super();
13
-
14
- this.name = "EntrypointsOverSizeLimitWarning";
15
- this.entrypoints = entrypoints;
16
- const entrypointList = this.entrypoints.map(entrypoint => `\n ${
17
- entrypoint.name
18
- } (${
19
- SizeFormatHelpers.formatSize(entrypoint.size)
20
- })\n${
21
- entrypoint.files.map(asset => ` ${asset}`).join("\n")
22
- }`).join("");
23
- this.message = `entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (${SizeFormatHelpers.formatSize(entrypointLimit)}). This can impact web performance.
24
- Entrypoints:${entrypointList}\n`;
25
-
26
- Error.captureStackTrace(this, this.constructor);
27
- }
28
- };
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Sean Larkin @thelarkinn
4
+ */
5
+ "use strict";
6
+
7
+ const WebpackError = require("../WebpackError");
8
+ const SizeFormatHelpers = require("../SizeFormatHelpers");
9
+
10
+ module.exports = class EntrypointsOverSizeLimitWarning extends WebpackError {
11
+ constructor(entrypoints, entrypointLimit) {
12
+ super();
13
+
14
+ this.name = "EntrypointsOverSizeLimitWarning";
15
+ this.entrypoints = entrypoints;
16
+ const entrypointList = this.entrypoints.map(entrypoint => `\n ${
17
+ entrypoint.name
18
+ } (${
19
+ SizeFormatHelpers.formatSize(entrypoint.size)
20
+ })\n${
21
+ entrypoint.files.map(asset => ` ${asset}`).join("\n")
22
+ }`).join("");
23
+ this.message = `entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (${SizeFormatHelpers.formatSize(entrypointLimit)}). This can impact web performance.
24
+ Entrypoints:${entrypointList}\n`;
25
+
26
+ Error.captureStackTrace(this, this.constructor);
27
+ }
28
+ };
@@ -1,20 +1,20 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Sean Larkin @thelarkinn
4
- */
5
- "use strict";
6
-
7
- const WebpackError = require("../WebpackError");
8
-
9
- module.exports = class NoAsyncChunksWarning extends WebpackError {
10
- constructor() {
11
- super();
12
-
13
- this.name = "NoAsyncChunksWarning";
14
- this.message = "webpack performance recommendations: \n" +
15
- "You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.\n" +
16
- "For more info visit https://webpack.js.org/guides/code-splitting/";
17
-
18
- Error.captureStackTrace(this, this.constructor);
19
- }
20
- };
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Sean Larkin @thelarkinn
4
+ */
5
+ "use strict";
6
+
7
+ const WebpackError = require("../WebpackError");
8
+
9
+ module.exports = class NoAsyncChunksWarning extends WebpackError {
10
+ constructor() {
11
+ super();
12
+
13
+ this.name = "NoAsyncChunksWarning";
14
+ this.message = "webpack performance recommendations: \n" +
15
+ "You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.\n" +
16
+ "For more info visit https://webpack.js.org/guides/code-splitting/";
17
+
18
+ Error.captureStackTrace(this, this.constructor);
19
+ }
20
+ };