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
@@ -1,192 +1,192 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- class ProgressPlugin {
8
-
9
- constructor(options) {
10
- if(typeof options === "function") {
11
- options = {
12
- handler: options
13
- };
14
- }
15
- options = options || {};
16
- this.profile = options.profile;
17
- this.handler = options.handler;
18
- }
19
-
20
- apply(compiler) {
21
- const handler = this.handler || defaultHandler;
22
- const profile = this.profile;
23
- if(compiler.compilers) {
24
- const states = new Array(compiler.compilers.length);
25
- compiler.compilers.forEach(function(compiler, idx) {
26
- compiler.apply(new ProgressPlugin(function(p, msg) {
27
- states[idx] = Array.prototype.slice.apply(arguments);
28
- handler.apply(null, [
29
- states.map(state => state && state[0] || 0).reduce((a, b) => a + b) / states.length,
30
- `[${idx}] ${msg}`
31
- ].concat(Array.prototype.slice.call(arguments, 2)));
32
- }));
33
- });
34
- } else {
35
- let lastModulesCount = 0;
36
- let moduleCount = 500;
37
- let doneModules = 0;
38
- const activeModules = [];
39
-
40
- const update = function update(module) {
41
- handler(
42
- 0.1 + (doneModules / Math.max(lastModulesCount, moduleCount)) * 0.6,
43
- "building modules",
44
- `${doneModules}/${moduleCount} modules`,
45
- `${activeModules.length} active`,
46
- activeModules[activeModules.length - 1]
47
- );
48
- };
49
-
50
- const moduleDone = function moduleDone(module) {
51
- doneModules++;
52
- const ident = module.identifier();
53
- if(ident) {
54
- const idx = activeModules.indexOf(ident);
55
- if(idx >= 0) activeModules.splice(idx, 1);
56
- }
57
- update();
58
- };
59
- compiler.plugin("compilation", function(compilation) {
60
- if(compilation.compiler.isChild()) return;
61
- lastModulesCount = moduleCount;
62
- moduleCount = 0;
63
- doneModules = 0;
64
- handler(0, "compiling");
65
- compilation.plugin("build-module", function(module) {
66
- moduleCount++;
67
- const ident = module.identifier();
68
- if(ident) {
69
- activeModules.push(ident);
70
- }
71
- update();
72
- });
73
- compilation.plugin("failed-module", moduleDone);
74
- compilation.plugin("succeed-module", moduleDone);
75
- const syncHooks = {
76
- "seal": [0.71, "sealing"],
77
- "optimize": [0.72, "optimizing"],
78
- "optimize-modules-basic": [0.73, "basic module optimization"],
79
- "optimize-modules": [0.74, "module optimization"],
80
- "optimize-modules-advanced": [0.75, "advanced module optimization"],
81
- "optimize-chunks-basic": [0.76, "basic chunk optimization"],
82
- "optimize-chunks": [0.77, "chunk optimization"],
83
- "optimize-chunks-advanced": [0.78, "advanced chunk optimization"],
84
- // optimize-tree
85
- "optimize-chunk-modules": [0.80, "chunk modules optimization"],
86
- "optimize-chunk-modules-advanced": [0.81, "advanced chunk modules optimization"],
87
- "revive-modules": [0.82, "module reviving"],
88
- "optimize-module-order": [0.83, "module order optimization"],
89
- "optimize-module-ids": [0.84, "module id optimization"],
90
- "revive-chunks": [0.85, "chunk reviving"],
91
- "optimize-chunk-order": [0.86, "chunk order optimization"],
92
- "optimize-chunk-ids": [0.87, "chunk id optimization"],
93
- "before-hash": [0.88, "hashing"],
94
- "before-module-assets": [0.89, "module assets processing"],
95
- "before-chunk-assets": [0.90, "chunk assets processing"],
96
- "additional-chunk-assets": [0.91, "additional chunk assets processing"],
97
- "record": [0.92, "recording"]
98
- };
99
- Object.keys(syncHooks).forEach(name => {
100
- let pass = 0;
101
- const settings = syncHooks[name];
102
- compilation.plugin(name, () => {
103
- if(pass++ > 0)
104
- handler(settings[0], settings[1], `pass ${pass}`);
105
- else
106
- handler(settings[0], settings[1]);
107
- });
108
- });
109
- compilation.plugin("optimize-tree", (chunks, modules, callback) => {
110
- handler(0.79, "module and chunk tree optimization");
111
- callback();
112
- });
113
- compilation.plugin("additional-assets", callback => {
114
- handler(0.91, "additional asset processing");
115
- callback();
116
- });
117
- compilation.plugin("optimize-chunk-assets", (chunks, callback) => {
118
- handler(0.92, "chunk asset optimization");
119
- callback();
120
- });
121
- compilation.plugin("optimize-assets", (assets, callback) => {
122
- handler(0.94, "asset optimization");
123
- callback();
124
- });
125
- });
126
- compiler.plugin("emit", (compilation, callback) => {
127
- handler(0.95, "emitting");
128
- callback();
129
- });
130
- compiler.plugin("done", () => {
131
- handler(1, "");
132
- });
133
- }
134
-
135
- let lineCaretPosition = 0,
136
- lastState, lastStateTime;
137
-
138
- function defaultHandler(percentage, msg) {
139
- let state = msg;
140
- const details = Array.prototype.slice.call(arguments, 2);
141
- if(percentage < 1) {
142
- percentage = Math.floor(percentage * 100);
143
- msg = `${percentage}% ${msg}`;
144
- if(percentage < 100) {
145
- msg = ` ${msg}`;
146
- }
147
- if(percentage < 10) {
148
- msg = ` ${msg}`;
149
- }
150
- details.forEach(detail => {
151
- if(!detail) return;
152
- if(detail.length > 40) {
153
- detail = `...${detail.substr(detail.length - 37)}`;
154
- }
155
- msg += ` ${detail}`;
156
- });
157
- }
158
- if(profile) {
159
- state = state.replace(/^\d+\/\d+\s+/, "");
160
- if(percentage === 0) {
161
- lastState = null;
162
- lastStateTime = Date.now();
163
- } else if(state !== lastState || percentage === 1) {
164
- const now = Date.now();
165
- if(lastState) {
166
- const stateMsg = `${now - lastStateTime}ms ${lastState}`;
167
- goToLineStart(stateMsg);
168
- process.stderr.write(stateMsg + "\n");
169
- lineCaretPosition = 0;
170
- }
171
- lastState = state;
172
- lastStateTime = now;
173
- }
174
- }
175
- goToLineStart(msg);
176
- process.stderr.write(msg);
177
- }
178
-
179
- function goToLineStart(nextMessage) {
180
- let str = "";
181
- for(; lineCaretPosition > nextMessage.length; lineCaretPosition--) {
182
- str += "\b \b";
183
- }
184
- for(var i = 0; i < lineCaretPosition; i++) {
185
- str += "\b";
186
- }
187
- lineCaretPosition = nextMessage.length;
188
- if(str) process.stderr.write(str);
189
- }
190
- }
191
- }
192
- module.exports = ProgressPlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ class ProgressPlugin {
8
+
9
+ constructor(options) {
10
+ if(typeof options === "function") {
11
+ options = {
12
+ handler: options
13
+ };
14
+ }
15
+ options = options || {};
16
+ this.profile = options.profile;
17
+ this.handler = options.handler;
18
+ }
19
+
20
+ apply(compiler) {
21
+ const handler = this.handler || defaultHandler;
22
+ const profile = this.profile;
23
+ if(compiler.compilers) {
24
+ const states = new Array(compiler.compilers.length);
25
+ compiler.compilers.forEach(function(compiler, idx) {
26
+ compiler.apply(new ProgressPlugin(function(p, msg) {
27
+ states[idx] = Array.prototype.slice.apply(arguments);
28
+ handler.apply(null, [
29
+ states.map(state => state && state[0] || 0).reduce((a, b) => a + b) / states.length,
30
+ `[${idx}] ${msg}`
31
+ ].concat(Array.prototype.slice.call(arguments, 2)));
32
+ }));
33
+ });
34
+ } else {
35
+ let lastModulesCount = 0;
36
+ let moduleCount = 500;
37
+ let doneModules = 0;
38
+ const activeModules = [];
39
+
40
+ const update = function update(module) {
41
+ handler(
42
+ 0.1 + (doneModules / Math.max(lastModulesCount, moduleCount)) * 0.6,
43
+ "building modules",
44
+ `${doneModules}/${moduleCount} modules`,
45
+ `${activeModules.length} active`,
46
+ activeModules[activeModules.length - 1]
47
+ );
48
+ };
49
+
50
+ const moduleDone = function moduleDone(module) {
51
+ doneModules++;
52
+ const ident = module.identifier();
53
+ if(ident) {
54
+ const idx = activeModules.indexOf(ident);
55
+ if(idx >= 0) activeModules.splice(idx, 1);
56
+ }
57
+ update();
58
+ };
59
+ compiler.plugin("compilation", function(compilation) {
60
+ if(compilation.compiler.isChild()) return;
61
+ lastModulesCount = moduleCount;
62
+ moduleCount = 0;
63
+ doneModules = 0;
64
+ handler(0, "compiling");
65
+ compilation.plugin("build-module", function(module) {
66
+ moduleCount++;
67
+ const ident = module.identifier();
68
+ if(ident) {
69
+ activeModules.push(ident);
70
+ }
71
+ update();
72
+ });
73
+ compilation.plugin("failed-module", moduleDone);
74
+ compilation.plugin("succeed-module", moduleDone);
75
+ const syncHooks = {
76
+ "seal": [0.71, "sealing"],
77
+ "optimize": [0.72, "optimizing"],
78
+ "optimize-modules-basic": [0.73, "basic module optimization"],
79
+ "optimize-modules": [0.74, "module optimization"],
80
+ "optimize-modules-advanced": [0.75, "advanced module optimization"],
81
+ "optimize-chunks-basic": [0.76, "basic chunk optimization"],
82
+ "optimize-chunks": [0.77, "chunk optimization"],
83
+ "optimize-chunks-advanced": [0.78, "advanced chunk optimization"],
84
+ // optimize-tree
85
+ "optimize-chunk-modules": [0.80, "chunk modules optimization"],
86
+ "optimize-chunk-modules-advanced": [0.81, "advanced chunk modules optimization"],
87
+ "revive-modules": [0.82, "module reviving"],
88
+ "optimize-module-order": [0.83, "module order optimization"],
89
+ "optimize-module-ids": [0.84, "module id optimization"],
90
+ "revive-chunks": [0.85, "chunk reviving"],
91
+ "optimize-chunk-order": [0.86, "chunk order optimization"],
92
+ "optimize-chunk-ids": [0.87, "chunk id optimization"],
93
+ "before-hash": [0.88, "hashing"],
94
+ "before-module-assets": [0.89, "module assets processing"],
95
+ "before-chunk-assets": [0.90, "chunk assets processing"],
96
+ "additional-chunk-assets": [0.91, "additional chunk assets processing"],
97
+ "record": [0.92, "recording"]
98
+ };
99
+ Object.keys(syncHooks).forEach(name => {
100
+ let pass = 0;
101
+ const settings = syncHooks[name];
102
+ compilation.plugin(name, () => {
103
+ if(pass++ > 0)
104
+ handler(settings[0], settings[1], `pass ${pass}`);
105
+ else
106
+ handler(settings[0], settings[1]);
107
+ });
108
+ });
109
+ compilation.plugin("optimize-tree", (chunks, modules, callback) => {
110
+ handler(0.79, "module and chunk tree optimization");
111
+ callback();
112
+ });
113
+ compilation.plugin("additional-assets", callback => {
114
+ handler(0.91, "additional asset processing");
115
+ callback();
116
+ });
117
+ compilation.plugin("optimize-chunk-assets", (chunks, callback) => {
118
+ handler(0.92, "chunk asset optimization");
119
+ callback();
120
+ });
121
+ compilation.plugin("optimize-assets", (assets, callback) => {
122
+ handler(0.94, "asset optimization");
123
+ callback();
124
+ });
125
+ });
126
+ compiler.plugin("emit", (compilation, callback) => {
127
+ handler(0.95, "emitting");
128
+ callback();
129
+ });
130
+ compiler.plugin("done", () => {
131
+ handler(1, "");
132
+ });
133
+ }
134
+
135
+ let lineCaretPosition = 0,
136
+ lastState, lastStateTime;
137
+
138
+ function defaultHandler(percentage, msg) {
139
+ let state = msg;
140
+ const details = Array.prototype.slice.call(arguments, 2);
141
+ if(percentage < 1) {
142
+ percentage = Math.floor(percentage * 100);
143
+ msg = `${percentage}% ${msg}`;
144
+ if(percentage < 100) {
145
+ msg = ` ${msg}`;
146
+ }
147
+ if(percentage < 10) {
148
+ msg = ` ${msg}`;
149
+ }
150
+ details.forEach(detail => {
151
+ if(!detail) return;
152
+ if(detail.length > 40) {
153
+ detail = `...${detail.substr(detail.length - 37)}`;
154
+ }
155
+ msg += ` ${detail}`;
156
+ });
157
+ }
158
+ if(profile) {
159
+ state = state.replace(/^\d+\/\d+\s+/, "");
160
+ if(percentage === 0) {
161
+ lastState = null;
162
+ lastStateTime = Date.now();
163
+ } else if(state !== lastState || percentage === 1) {
164
+ const now = Date.now();
165
+ if(lastState) {
166
+ const stateMsg = `${now - lastStateTime}ms ${lastState}`;
167
+ goToLineStart(stateMsg);
168
+ process.stderr.write(stateMsg + "\n");
169
+ lineCaretPosition = 0;
170
+ }
171
+ lastState = state;
172
+ lastStateTime = now;
173
+ }
174
+ }
175
+ goToLineStart(msg);
176
+ process.stderr.write(msg);
177
+ }
178
+
179
+ function goToLineStart(nextMessage) {
180
+ let str = "";
181
+ for(; lineCaretPosition > nextMessage.length; lineCaretPosition--) {
182
+ str += "\b \b";
183
+ }
184
+ for(var i = 0; i < lineCaretPosition; i++) {
185
+ str += "\b";
186
+ }
187
+ lineCaretPosition = nextMessage.length;
188
+ if(str) process.stderr.write(str);
189
+ }
190
+ }
191
+ }
192
+ module.exports = ProgressPlugin;
@@ -1,55 +1,55 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const ParserHelpers = require("./ParserHelpers");
8
- const ConstDependency = require("./dependencies/ConstDependency");
9
-
10
- const NullFactory = require("./NullFactory");
11
-
12
- class ProvidePlugin {
13
- constructor(definitions) {
14
- this.definitions = definitions;
15
- }
16
-
17
- apply(compiler) {
18
- const definitions = this.definitions;
19
- compiler.plugin("compilation", (compilation, params) => {
20
- compilation.dependencyFactories.set(ConstDependency, new NullFactory());
21
- compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
22
- params.normalModuleFactory.plugin("parser", (parser, parserOptions) => {
23
- Object.keys(definitions).forEach(name => {
24
- var request = [].concat(definitions[name]);
25
- var splittedName = name.split(".");
26
- if(splittedName.length > 0) {
27
- splittedName.slice(1).forEach((_, i) => {
28
- const name = splittedName.slice(0, i + 1).join(".");
29
- parser.plugin(`can-rename ${name}`, ParserHelpers.approve);
30
- });
31
- }
32
- parser.plugin(`expression ${name}`, function(expr) {
33
- let nameIdentifier = name;
34
- const scopedName = name.indexOf(".") >= 0;
35
- let expression = `require(${JSON.stringify(request[0])})`;
36
- if(scopedName) {
37
- nameIdentifier = `__webpack_provided_${name.replace(/\./g, "_dot_")}`;
38
- }
39
- if(request.length > 1) {
40
- expression += request.slice(1).map(r => `[${JSON.stringify(r)}]`).join("");
41
- }
42
- if(!ParserHelpers.addParsedVariableToModule(this, nameIdentifier, expression)) {
43
- return false;
44
- }
45
- if(scopedName) {
46
- ParserHelpers.toConstantDependency(nameIdentifier).bind(this)(expr);
47
- }
48
- return true;
49
- });
50
- });
51
- });
52
- });
53
- }
54
- }
55
- module.exports = ProvidePlugin;
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const ParserHelpers = require("./ParserHelpers");
8
+ const ConstDependency = require("./dependencies/ConstDependency");
9
+
10
+ const NullFactory = require("./NullFactory");
11
+
12
+ class ProvidePlugin {
13
+ constructor(definitions) {
14
+ this.definitions = definitions;
15
+ }
16
+
17
+ apply(compiler) {
18
+ const definitions = this.definitions;
19
+ compiler.plugin("compilation", (compilation, params) => {
20
+ compilation.dependencyFactories.set(ConstDependency, new NullFactory());
21
+ compilation.dependencyTemplates.set(ConstDependency, new ConstDependency.Template());
22
+ params.normalModuleFactory.plugin("parser", (parser, parserOptions) => {
23
+ Object.keys(definitions).forEach(name => {
24
+ var request = [].concat(definitions[name]);
25
+ var splittedName = name.split(".");
26
+ if(splittedName.length > 0) {
27
+ splittedName.slice(1).forEach((_, i) => {
28
+ const name = splittedName.slice(0, i + 1).join(".");
29
+ parser.plugin(`can-rename ${name}`, ParserHelpers.approve);
30
+ });
31
+ }
32
+ parser.plugin(`expression ${name}`, function(expr) {
33
+ let nameIdentifier = name;
34
+ const scopedName = name.indexOf(".") >= 0;
35
+ let expression = `require(${JSON.stringify(request[0])})`;
36
+ if(scopedName) {
37
+ nameIdentifier = `__webpack_provided_${name.replace(/\./g, "_dot_")}`;
38
+ }
39
+ if(request.length > 1) {
40
+ expression += request.slice(1).map(r => `[${JSON.stringify(r)}]`).join("");
41
+ }
42
+ if(!ParserHelpers.addParsedVariableToModule(this, nameIdentifier, expression)) {
43
+ return false;
44
+ }
45
+ if(scopedName) {
46
+ ParserHelpers.toConstantDependency(nameIdentifier).bind(this)(expr);
47
+ }
48
+ return true;
49
+ });
50
+ });
51
+ });
52
+ });
53
+ }
54
+ }
55
+ module.exports = ProvidePlugin;
package/lib/RawModule.js CHANGED
@@ -1,54 +1,54 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Tobias Koppers @sokra
4
- */
5
- "use strict";
6
-
7
- const Module = require("./Module");
8
- const OriginalSource = require("webpack-sources").OriginalSource;
9
- const RawSource = require("webpack-sources").RawSource;
10
-
11
- module.exports = class RawModule extends Module {
12
-
13
- constructor(source, identifier, readableIdentifier) {
14
- super();
15
- this.sourceStr = source;
16
- this.identifierStr = identifier || this.sourceStr;
17
- this.readableIdentifierStr = readableIdentifier || this.identifierStr;
18
- this.cacheable = true;
19
- this.built = false;
20
- }
21
-
22
- identifier() {
23
- return this.identifierStr;
24
- }
25
-
26
- size() {
27
- return this.sourceStr.length;
28
- }
29
-
30
- readableIdentifier(requestShortener) {
31
- return requestShortener.shorten(this.readableIdentifierStr);
32
- }
33
-
34
- needRebuild() {
35
- return false;
36
- }
37
-
38
- build(options, compilations, resolver, fs, callback) {
39
- this.builtTime = Date.now();
40
- callback();
41
- }
42
-
43
- source() {
44
- if(this.useSourceMap)
45
- return new OriginalSource(this.sourceStr, this.identifier());
46
- else
47
- return new RawSource(this.sourceStr);
48
- }
49
-
50
- updateHash(hash) {
51
- hash.update(this.sourceStr);
52
- super.updateHash(hash);
53
- }
54
- };
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+ "use strict";
6
+
7
+ const Module = require("./Module");
8
+ const OriginalSource = require("webpack-sources").OriginalSource;
9
+ const RawSource = require("webpack-sources").RawSource;
10
+
11
+ module.exports = class RawModule extends Module {
12
+
13
+ constructor(source, identifier, readableIdentifier) {
14
+ super();
15
+ this.sourceStr = source;
16
+ this.identifierStr = identifier || this.sourceStr;
17
+ this.readableIdentifierStr = readableIdentifier || this.identifierStr;
18
+ this.cacheable = true;
19
+ this.built = false;
20
+ }
21
+
22
+ identifier() {
23
+ return this.identifierStr;
24
+ }
25
+
26
+ size() {
27
+ return this.sourceStr.length;
28
+ }
29
+
30
+ readableIdentifier(requestShortener) {
31
+ return requestShortener.shorten(this.readableIdentifierStr);
32
+ }
33
+
34
+ needRebuild() {
35
+ return false;
36
+ }
37
+
38
+ build(options, compilations, resolver, fs, callback) {
39
+ this.builtTime = Date.now();
40
+ callback();
41
+ }
42
+
43
+ source() {
44
+ if(this.useSourceMap)
45
+ return new OriginalSource(this.sourceStr, this.identifier());
46
+ else
47
+ return new RawSource(this.sourceStr);
48
+ }
49
+
50
+ updateHash(hash) {
51
+ hash.update(this.sourceStr);
52
+ super.updateHash(hash);
53
+ }
54
+ };