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,27 +1,27 @@
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 JsonpHotUpdateChunkTemplatePlugin {
10
- apply(hotUpdateChunkTemplate) {
11
- hotUpdateChunkTemplate.plugin("render", function(modulesSource, modules, removedModules, hash, id) {
12
- const source = new ConcatSource();
13
- source.add(`${this.outputOptions.hotUpdateFunction}(${JSON.stringify(id)},`);
14
- source.add(modulesSource);
15
- source.add(")");
16
- return source;
17
- });
18
- hotUpdateChunkTemplate.plugin("hash", function(hash) {
19
- hash.update("JsonpHotUpdateChunkTemplatePlugin");
20
- hash.update("3");
21
- hash.update(`${this.outputOptions.hotUpdateFunction}`);
22
- hash.update(`${this.outputOptions.library}`);
23
- });
24
- }
25
- }
26
-
27
- module.exports = JsonpHotUpdateChunkTemplatePlugin;
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 JsonpHotUpdateChunkTemplatePlugin {
10
+ apply(hotUpdateChunkTemplate) {
11
+ hotUpdateChunkTemplate.plugin("render", function(modulesSource, modules, removedModules, hash, id) {
12
+ const source = new ConcatSource();
13
+ source.add(`${this.outputOptions.hotUpdateFunction}(${JSON.stringify(id)},`);
14
+ source.add(modulesSource);
15
+ source.add(")");
16
+ return source;
17
+ });
18
+ hotUpdateChunkTemplate.plugin("hash", function(hash) {
19
+ hash.update("JsonpHotUpdateChunkTemplatePlugin");
20
+ hash.update("3");
21
+ hash.update(`${this.outputOptions.hotUpdateFunction}`);
22
+ hash.update(`${this.outputOptions.library}`);
23
+ });
24
+ }
25
+ }
26
+
27
+ module.exports = JsonpHotUpdateChunkTemplatePlugin;
@@ -29,6 +29,7 @@ class JsonpMainTemplatePlugin {
29
29
  const chunkMaps = chunk.getChunkMaps();
30
30
  const crossOriginLoading = this.outputOptions.crossOriginLoading;
31
31
  const chunkLoadTimeout = this.outputOptions.chunkLoadTimeout;
32
+ const jsonpScriptType = this.outputOptions.jsonpScriptType;
32
33
  const scriptSrcPath = this.applyPluginsWaterfall("asset-path", JSON.stringify(chunkFilename), {
33
34
  hash: `" + ${this.renderCurrentHashCode(hash)} + "`,
34
35
  hashWithLength: length => `" + ${this.renderCurrentHashCode(hash, length)} + "`,
@@ -48,7 +49,7 @@ class JsonpMainTemplatePlugin {
48
49
  });
49
50
  return this.asString([
50
51
  "var script = document.createElement('script');",
51
- "script.type = 'text/javascript';",
52
+ `script.type = ${JSON.stringify(jsonpScriptType)};`,
52
53
  "script.charset = 'utf-8';",
53
54
  "script.async = true;",
54
55
  `script.timeout = ${chunkLoadTimeout};`,
@@ -195,8 +196,8 @@ class JsonpMainTemplatePlugin {
195
196
  function hotDisposeChunk(chunkId) {
196
197
  delete installedChunks[chunkId];
197
198
  }
198
- var parentHotUpdateCallback = this[${JSON.stringify(hotUpdateFunction)}];
199
- this[${JSON.stringify(hotUpdateFunction)}] = ${runtimeSource}`;
199
+ var parentHotUpdateCallback = window[${JSON.stringify(hotUpdateFunction)}];
200
+ window[${JSON.stringify(hotUpdateFunction)}] = ${runtimeSource}`;
200
201
  });
201
202
  mainTemplate.plugin("hash", function(hash) {
202
203
  hash.update("jsonp");
@@ -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
- const JsonpMainTemplatePlugin = require("./JsonpMainTemplatePlugin");
8
- const JsonpChunkTemplatePlugin = require("./JsonpChunkTemplatePlugin");
9
- const JsonpHotUpdateChunkTemplatePlugin = require("./JsonpHotUpdateChunkTemplatePlugin");
10
-
11
- class JsonpTemplatePlugin {
12
- apply(compiler) {
13
- compiler.plugin("this-compilation", (compilation) => {
14
- compilation.mainTemplate.apply(new JsonpMainTemplatePlugin());
15
- compilation.chunkTemplate.apply(new JsonpChunkTemplatePlugin());
16
- compilation.hotUpdateChunkTemplate.apply(new JsonpHotUpdateChunkTemplatePlugin());
17
- });
18
- }
19
- }
20
-
21
- module.exports = JsonpTemplatePlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const JsonpMainTemplatePlugin = require("./JsonpMainTemplatePlugin");
8
+ const JsonpChunkTemplatePlugin = require("./JsonpChunkTemplatePlugin");
9
+ const JsonpHotUpdateChunkTemplatePlugin = require("./JsonpHotUpdateChunkTemplatePlugin");
10
+
11
+ class JsonpTemplatePlugin {
12
+ apply(compiler) {
13
+ compiler.plugin("this-compilation", (compilation) => {
14
+ compilation.mainTemplate.apply(new JsonpMainTemplatePlugin());
15
+ compilation.chunkTemplate.apply(new JsonpChunkTemplatePlugin());
16
+ compilation.hotUpdateChunkTemplate.apply(new JsonpHotUpdateChunkTemplatePlugin());
17
+ });
18
+ }
19
+ }
20
+
21
+ module.exports = JsonpTemplatePlugin;
@@ -1,63 +1,63 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const path = require("path");
8
- const asyncLib = require("async");
9
-
10
- class LibManifestPlugin {
11
- constructor(options) {
12
- this.options = options;
13
- }
14
-
15
- apply(compiler) {
16
- compiler.plugin("emit", (compilation, callback) => {
17
- asyncLib.forEach(compilation.chunks, (chunk, callback) => {
18
- if(!chunk.isInitial()) {
19
- callback();
20
- return;
21
- }
22
- const targetPath = compilation.getPath(this.options.path, {
23
- hash: compilation.hash,
24
- chunk
25
- });
26
- const name = this.options.name && compilation.getPath(this.options.name, {
27
- hash: compilation.hash,
28
- chunk
29
- });
30
- const manifest = {
31
- name,
32
- type: this.options.type,
33
- content: chunk.mapModules(module => {
34
- if(module.libIdent) {
35
- const ident = module.libIdent({
36
- context: this.options.context || compiler.options.context
37
- });
38
- if(ident) {
39
- return {
40
- ident,
41
- data: {
42
- id: module.id,
43
- meta: module.meta,
44
- exports: Array.isArray(module.providedExports) ? module.providedExports : undefined
45
- }
46
- };
47
- }
48
- }
49
- }).filter(Boolean).reduce((obj, item) => {
50
- obj[item.ident] = item.data;
51
- return obj;
52
- }, Object.create(null))
53
- };
54
- const content = new Buffer(JSON.stringify(manifest), "utf8"); //eslint-disable-line
55
- compiler.outputFileSystem.mkdirp(path.dirname(targetPath), err => {
56
- if(err) return callback(err);
57
- compiler.outputFileSystem.writeFile(targetPath, content, callback);
58
- });
59
- }, callback);
60
- });
61
- }
62
- }
63
- module.exports = LibManifestPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const path = require("path");
8
+ const asyncLib = require("async");
9
+
10
+ class LibManifestPlugin {
11
+ constructor(options) {
12
+ this.options = options;
13
+ }
14
+
15
+ apply(compiler) {
16
+ compiler.plugin("emit", (compilation, callback) => {
17
+ asyncLib.forEach(compilation.chunks, (chunk, callback) => {
18
+ if(!chunk.isInitial()) {
19
+ callback();
20
+ return;
21
+ }
22
+ const targetPath = compilation.getPath(this.options.path, {
23
+ hash: compilation.hash,
24
+ chunk
25
+ });
26
+ const name = this.options.name && compilation.getPath(this.options.name, {
27
+ hash: compilation.hash,
28
+ chunk
29
+ });
30
+ const manifest = {
31
+ name,
32
+ type: this.options.type,
33
+ content: chunk.mapModules(module => {
34
+ if(module.libIdent) {
35
+ const ident = module.libIdent({
36
+ context: this.options.context || compiler.options.context
37
+ });
38
+ if(ident) {
39
+ return {
40
+ ident,
41
+ data: {
42
+ id: module.id,
43
+ meta: module.meta,
44
+ exports: Array.isArray(module.providedExports) ? module.providedExports : undefined
45
+ }
46
+ };
47
+ }
48
+ }
49
+ }).filter(Boolean).reduce((obj, item) => {
50
+ obj[item.ident] = item.data;
51
+ return obj;
52
+ }, Object.create(null))
53
+ };
54
+ const content = new Buffer(JSON.stringify(manifest), "utf8"); //eslint-disable-line
55
+ compiler.outputFileSystem.mkdirp(path.dirname(targetPath), err => {
56
+ if(err) return callback(err);
57
+ compiler.outputFileSystem.writeFile(targetPath, content, callback);
58
+ });
59
+ }, callback);
60
+ });
61
+ }
62
+ }
63
+ module.exports = LibManifestPlugin;
@@ -1,92 +1,92 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const SetVarMainTemplatePlugin = require("./SetVarMainTemplatePlugin");
8
-
9
- function accessorToObjectAccess(accessor) {
10
- return accessor.map((a) => {
11
- return `[${JSON.stringify(a)}]`;
12
- }).join("");
13
- }
14
-
15
- function accessorAccess(base, accessor, joinWith) {
16
- accessor = [].concat(accessor);
17
- return accessor.map((a, idx) => {
18
- a = base ?
19
- base + accessorToObjectAccess(accessor.slice(0, idx + 1)) :
20
- accessor[0] + accessorToObjectAccess(accessor.slice(1, idx + 1));
21
- if(idx === accessor.length - 1) return a;
22
- if(idx === 0 && typeof base === "undefined") return `${a} = typeof ${a} === "object" ? ${a} : {}`;
23
- return `${a} = ${a} || {}`;
24
- }).join(joinWith || "; ");
25
- }
26
-
27
- class LibraryTemplatePlugin {
28
-
29
- constructor(name, target, umdNamedDefine, auxiliaryComment, exportProperty) {
30
- this.name = name;
31
- this.target = target;
32
- this.umdNamedDefine = umdNamedDefine;
33
- this.auxiliaryComment = auxiliaryComment;
34
- this.exportProperty = exportProperty;
35
- }
36
-
37
- apply(compiler) {
38
- compiler.plugin("this-compilation", (compilation) => {
39
- if(this.exportProperty) {
40
- var ExportPropertyMainTemplatePlugin = require("./ExportPropertyMainTemplatePlugin");
41
- compilation.apply(new ExportPropertyMainTemplatePlugin(this.exportProperty));
42
- }
43
- switch(this.target) {
44
- case "var":
45
- compilation.apply(new SetVarMainTemplatePlugin(`var ${accessorAccess(false, this.name)}`));
46
- break;
47
- case "assign":
48
- compilation.apply(new SetVarMainTemplatePlugin(accessorAccess(undefined, this.name)));
49
- break;
50
- case "this":
51
- case "window":
52
- case "global":
53
- if(this.name)
54
- compilation.apply(new SetVarMainTemplatePlugin(accessorAccess(this.target, this.name)));
55
- else
56
- compilation.apply(new SetVarMainTemplatePlugin(this.target, true));
57
- break;
58
- case "commonjs":
59
- if(this.name)
60
- compilation.apply(new SetVarMainTemplatePlugin(accessorAccess("exports", this.name)));
61
- else
62
- compilation.apply(new SetVarMainTemplatePlugin("exports", true));
63
- break;
64
- case "commonjs2":
65
- case "commonjs-module":
66
- compilation.apply(new SetVarMainTemplatePlugin("module.exports"));
67
- break;
68
- case "amd":
69
- var AmdMainTemplatePlugin = require("./AmdMainTemplatePlugin");
70
- compilation.apply(new AmdMainTemplatePlugin(this.name));
71
- break;
72
- case "umd":
73
- case "umd2":
74
- var UmdMainTemplatePlugin = require("./UmdMainTemplatePlugin");
75
- compilation.apply(new UmdMainTemplatePlugin(this.name, {
76
- optionalAmdExternalAsGlobal: this.target === "umd2",
77
- namedDefine: this.umdNamedDefine,
78
- auxiliaryComment: this.auxiliaryComment
79
- }));
80
- break;
81
- case "jsonp":
82
- var JsonpExportMainTemplatePlugin = require("./JsonpExportMainTemplatePlugin");
83
- compilation.apply(new JsonpExportMainTemplatePlugin(this.name));
84
- break;
85
- default:
86
- throw new Error(`${this.target} is not a valid Library target`);
87
- }
88
- });
89
- }
90
- }
91
-
92
- module.exports = LibraryTemplatePlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const SetVarMainTemplatePlugin = require("./SetVarMainTemplatePlugin");
8
+
9
+ function accessorToObjectAccess(accessor) {
10
+ return accessor.map((a) => {
11
+ return `[${JSON.stringify(a)}]`;
12
+ }).join("");
13
+ }
14
+
15
+ function accessorAccess(base, accessor, joinWith) {
16
+ accessor = [].concat(accessor);
17
+ return accessor.map((a, idx) => {
18
+ a = base ?
19
+ base + accessorToObjectAccess(accessor.slice(0, idx + 1)) :
20
+ accessor[0] + accessorToObjectAccess(accessor.slice(1, idx + 1));
21
+ if(idx === accessor.length - 1) return a;
22
+ if(idx === 0 && typeof base === "undefined") return `${a} = typeof ${a} === "object" ? ${a} : {}`;
23
+ return `${a} = ${a} || {}`;
24
+ }).join(joinWith || "; ");
25
+ }
26
+
27
+ class LibraryTemplatePlugin {
28
+
29
+ constructor(name, target, umdNamedDefine, auxiliaryComment, exportProperty) {
30
+ this.name = name;
31
+ this.target = target;
32
+ this.umdNamedDefine = umdNamedDefine;
33
+ this.auxiliaryComment = auxiliaryComment;
34
+ this.exportProperty = exportProperty;
35
+ }
36
+
37
+ apply(compiler) {
38
+ compiler.plugin("this-compilation", (compilation) => {
39
+ if(this.exportProperty) {
40
+ var ExportPropertyMainTemplatePlugin = require("./ExportPropertyMainTemplatePlugin");
41
+ compilation.apply(new ExportPropertyMainTemplatePlugin(this.exportProperty));
42
+ }
43
+ switch(this.target) {
44
+ case "var":
45
+ compilation.apply(new SetVarMainTemplatePlugin(`var ${accessorAccess(false, this.name)}`));
46
+ break;
47
+ case "assign":
48
+ compilation.apply(new SetVarMainTemplatePlugin(accessorAccess(undefined, this.name)));
49
+ break;
50
+ case "this":
51
+ case "window":
52
+ case "global":
53
+ if(this.name)
54
+ compilation.apply(new SetVarMainTemplatePlugin(accessorAccess(this.target, this.name)));
55
+ else
56
+ compilation.apply(new SetVarMainTemplatePlugin(this.target, true));
57
+ break;
58
+ case "commonjs":
59
+ if(this.name)
60
+ compilation.apply(new SetVarMainTemplatePlugin(accessorAccess("exports", this.name)));
61
+ else
62
+ compilation.apply(new SetVarMainTemplatePlugin("exports", true));
63
+ break;
64
+ case "commonjs2":
65
+ case "commonjs-module":
66
+ compilation.apply(new SetVarMainTemplatePlugin("module.exports"));
67
+ break;
68
+ case "amd":
69
+ var AmdMainTemplatePlugin = require("./AmdMainTemplatePlugin");
70
+ compilation.apply(new AmdMainTemplatePlugin(this.name));
71
+ break;
72
+ case "umd":
73
+ case "umd2":
74
+ var UmdMainTemplatePlugin = require("./UmdMainTemplatePlugin");
75
+ compilation.apply(new UmdMainTemplatePlugin(this.name, {
76
+ optionalAmdExternalAsGlobal: this.target === "umd2",
77
+ namedDefine: this.umdNamedDefine,
78
+ auxiliaryComment: this.auxiliaryComment
79
+ }));
80
+ break;
81
+ case "jsonp":
82
+ var JsonpExportMainTemplatePlugin = require("./JsonpExportMainTemplatePlugin");
83
+ compilation.apply(new JsonpExportMainTemplatePlugin(this.name));
84
+ break;
85
+ default:
86
+ throw new Error(`${this.target} is not a valid Library target`);
87
+ }
88
+ });
89
+ }
90
+ }
91
+
92
+ module.exports = LibraryTemplatePlugin;
@@ -1,36 +1,36 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
8
-
9
- class LoaderOptionsPlugin {
10
- constructor(options) {
11
- if(typeof options !== "object") options = {};
12
- if(!options.test) options.test = {
13
- test: () => true
14
- };
15
- this.options = options;
16
- }
17
-
18
- apply(compiler) {
19
- const options = this.options;
20
- compiler.plugin("compilation", (compilation) => {
21
- compilation.plugin("normal-module-loader", (context, module) => {
22
- const resource = module.resource;
23
- if(!resource) return;
24
- const i = resource.indexOf("?");
25
- if(ModuleFilenameHelpers.matchObject(options, i < 0 ? resource : resource.substr(0, i))) {
26
- const filterSet = new Set(["include", "exclude", "test"]);
27
- Object.keys(options)
28
- .filter((key) => !filterSet.has(key))
29
- .forEach((key) => context[key] = options[key]);
30
- }
31
- });
32
- });
33
- }
34
- }
35
-
36
- module.exports = LoaderOptionsPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
8
+
9
+ class LoaderOptionsPlugin {
10
+ constructor(options) {
11
+ if(typeof options !== "object") options = {};
12
+ if(!options.test) options.test = {
13
+ test: () => true
14
+ };
15
+ this.options = options;
16
+ }
17
+
18
+ apply(compiler) {
19
+ const options = this.options;
20
+ compiler.plugin("compilation", (compilation) => {
21
+ compilation.plugin("normal-module-loader", (context, module) => {
22
+ const resource = module.resource;
23
+ if(!resource) return;
24
+ const i = resource.indexOf("?");
25
+ if(ModuleFilenameHelpers.matchObject(options, i < 0 ? resource : resource.substr(0, i))) {
26
+ const filterSet = new Set(["include", "exclude", "test"]);
27
+ Object.keys(options)
28
+ .filter((key) => !filterSet.has(key))
29
+ .forEach((key) => context[key] = options[key]);
30
+ }
31
+ });
32
+ });
33
+ }
34
+ }
35
+
36
+ module.exports = LoaderOptionsPlugin;
@@ -1,19 +1,19 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class LoaderTargetPlugin {
8
- constructor(target) {
9
- this.target = target;
10
- }
11
-
12
- apply(compiler) {
13
- compiler.plugin("compilation", (compilation) => {
14
- compilation.plugin("normal-module-loader", (loaderContext) => loaderContext.target = this.target);
15
- });
16
- }
17
- }
18
-
19
- module.exports = LoaderTargetPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class LoaderTargetPlugin {
8
+ constructor(target) {
9
+ this.target = target;
10
+ }
11
+
12
+ apply(compiler) {
13
+ compiler.plugin("compilation", (compilation) => {
14
+ compilation.plugin("normal-module-loader", (loaderContext) => loaderContext.target = this.target);
15
+ });
16
+ }
17
+ }
18
+
19
+ module.exports = LoaderTargetPlugin;
@@ -99,7 +99,9 @@ module.exports = class MainTemplate extends Template {
99
99
  });
100
100
  this.plugin("require-extensions", (source, chunk, hash) => {
101
101
  const buf = [];
102
- if(chunk.chunks.length > 0) {
102
+ const chunkMaps = chunk.getChunkMaps();
103
+ // Check if there are non initial chunks which need to be imported using require-ensure
104
+ if(Object.keys(chunkMaps.hash).length) {
103
105
  buf.push("// This file contains only the entry chunk.");
104
106
  buf.push("// The chunk loading function for additional chunks");
105
107
  buf.push(`${this.requireFn}.e = function requireEnsure(chunkId) {`);
@@ -1,5 +1,5 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- module.exports = require("memory-fs");
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ module.exports = require("memory-fs");
@@ -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
-
7
- const WebpackError = require("./WebpackError");
8
- const cutOffLoaderExecution = require("./ErrorHelpers").cutOffLoaderExecution;
9
-
10
- class ModuleBuildError extends WebpackError {
11
- constructor(module, err) {
12
- super();
13
-
14
- this.name = "ModuleBuildError";
15
- this.message = "Module build failed: ";
16
- if(err !== null && typeof err === "object") {
17
- if(typeof err.stack === "string" && err.stack) {
18
- var stack = cutOffLoaderExecution(err.stack);
19
- if(!err.hideStack) {
20
- this.message += stack;
21
- } else {
22
- this.details = stack;
23
- if(typeof err.message === "string" && err.message) {
24
- this.message += err.message;
25
- } else {
26
- this.message += err;
27
- }
28
- }
29
- } else if(typeof err.message === "string" && err.message) {
30
- this.message += err.message;
31
- } else {
32
- this.message += err;
33
- }
34
- }
35
- this.module = module;
36
- this.error = err;
37
-
38
- Error.captureStackTrace(this, this.constructor);
39
- }
40
- }
41
-
42
- module.exports = ModuleBuildError;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const WebpackError = require("./WebpackError");
8
+ const cutOffLoaderExecution = require("./ErrorHelpers").cutOffLoaderExecution;
9
+
10
+ class ModuleBuildError extends WebpackError {
11
+ constructor(module, err) {
12
+ super();
13
+
14
+ this.name = "ModuleBuildError";
15
+ this.message = "Module build failed: ";
16
+ if(err !== null && typeof err === "object") {
17
+ if(typeof err.stack === "string" && err.stack) {
18
+ var stack = cutOffLoaderExecution(err.stack);
19
+ if(!err.hideStack) {
20
+ this.message += stack;
21
+ } else {
22
+ this.details = stack;
23
+ if(typeof err.message === "string" && err.message) {
24
+ this.message += err.message;
25
+ } else {
26
+ this.message += err;
27
+ }
28
+ }
29
+ } else if(typeof err.message === "string" && err.message) {
30
+ this.message += err.message;
31
+ } else {
32
+ this.message += err;
33
+ }
34
+ }
35
+ this.module = module;
36
+ this.error = err;
37
+
38
+ Error.captureStackTrace(this, this.constructor);
39
+ }
40
+ }
41
+
42
+ module.exports = ModuleBuildError;