webpack 3.8.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.
- package/LICENSE +20 -20
- package/README.md +716 -716
- package/buildin/.eslintrc +7 -7
- package/buildin/amd-define.js +3 -3
- package/buildin/amd-options.js +2 -2
- package/buildin/global.js +21 -21
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/buildin/system.js +7 -7
- package/hot/.eslintrc +9 -9
- package/hot/dev-server.js +53 -53
- package/hot/emitter.js +2 -2
- package/hot/log-apply-result.js +38 -38
- package/hot/log.js +44 -44
- package/hot/only-dev-server.js +71 -71
- package/hot/poll.js +34 -34
- package/hot/signal.js +51 -51
- package/lib/APIPlugin.js +45 -45
- package/lib/AsyncDependenciesBlock.js +43 -43
- package/lib/AutomaticPrefetchPlugin.js +36 -36
- package/lib/BasicEvaluatedExpression.js +203 -203
- package/lib/CaseSensitiveModulesWarning.js +49 -49
- package/lib/ChunkRenderError.js +24 -24
- package/lib/ChunkTemplate.js +36 -36
- package/lib/CompatibilityPlugin.js +57 -57
- package/lib/Compiler.js +523 -523
- package/lib/ConstPlugin.js +60 -60
- package/lib/ContextModule.js +431 -431
- package/lib/ContextReplacementPlugin.js +111 -111
- package/lib/DefinePlugin.js +123 -123
- package/lib/DelegatedModule.js +98 -98
- package/lib/DelegatedModuleFactoryPlugin.js +59 -59
- package/lib/DelegatedPlugin.js +30 -30
- package/lib/DependenciesBlockVariable.js +51 -51
- package/lib/DllEntryPlugin.js +37 -37
- package/lib/DllModule.js +58 -58
- package/lib/DllModuleFactory.js +20 -20
- package/lib/DllPlugin.js +38 -38
- package/lib/DllReferencePlugin.js +62 -62
- package/lib/DynamicEntryPlugin.js +59 -59
- package/lib/EntryModuleNotFoundError.js +22 -22
- package/lib/EntryOptionPlugin.js +31 -31
- package/lib/EnvironmentPlugin.js +50 -50
- package/lib/ErrorHelpers.js +31 -31
- package/lib/EvalDevToolModulePlugin.js +22 -22
- package/lib/EvalDevToolModuleTemplatePlugin.js +33 -33
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +75 -75
- package/lib/EvalSourceMapDevToolPlugin.js +32 -32
- package/lib/ExportPropertyMainTemplatePlugin.js +31 -31
- package/lib/ExtendedAPIPlugin.js +47 -47
- package/lib/ExternalModuleFactoryPlugin.js +91 -91
- package/lib/ExternalsPlugin.js +21 -21
- package/lib/FlagDependencyExportsPlugin.js +101 -101
- package/lib/FunctionModulePlugin.js +24 -24
- package/lib/HashedModuleIdsPlugin.js +42 -42
- package/lib/HotUpdateChunkTemplate.js +31 -31
- package/lib/IgnorePlugin.js +69 -69
- package/lib/JsonpExportMainTemplatePlugin.js +37 -37
- package/lib/JsonpHotUpdateChunkTemplatePlugin.js +27 -27
- package/lib/JsonpTemplatePlugin.js +21 -21
- package/lib/LibManifestPlugin.js +63 -63
- package/lib/LibraryTemplatePlugin.js +92 -92
- package/lib/LoaderOptionsPlugin.js +36 -36
- package/lib/LoaderTargetPlugin.js +19 -19
- package/lib/MemoryOutputFileSystem.js +5 -5
- package/lib/ModuleBuildError.js +42 -42
- package/lib/ModuleDependencyError.js +22 -22
- package/lib/ModuleDependencyWarning.js +22 -22
- package/lib/ModuleError.js +24 -24
- package/lib/ModuleFilenameHelpers.js +162 -162
- package/lib/ModuleNotFoundError.js +26 -26
- package/lib/ModuleReason.js +50 -50
- package/lib/ModuleTemplate.js +23 -23
- package/lib/ModuleWarning.js +24 -24
- package/lib/MovedToPluginWarningPlugin.js +21 -21
- package/lib/MultiCompiler.js +164 -164
- package/lib/MultiEntryPlugin.js +39 -39
- package/lib/MultiModuleFactory.js +19 -19
- package/lib/MultiStats.js +79 -79
- package/lib/MultiWatching.js +32 -32
- package/lib/NamedChunksPlugin.js +30 -30
- package/lib/NamedModulesPlugin.js +27 -27
- package/lib/NewWatchingPlugin.js +15 -15
- package/lib/NoEmitOnErrorsPlugin.js +22 -22
- package/lib/NoErrorsPlugin.js +29 -29
- package/lib/NodeStuffPlugin.js +97 -97
- package/lib/NormalModuleReplacementPlugin.js +45 -45
- package/lib/NullFactory.js +12 -12
- package/lib/OptionsApply.js +10 -10
- package/lib/ParserHelpers.js +85 -85
- package/lib/PrefetchPlugin.js +31 -31
- package/lib/ProgressPlugin.js +192 -192
- package/lib/ProvidePlugin.js +55 -55
- package/lib/RawModule.js +54 -54
- package/lib/RequestShortener.js +63 -63
- package/lib/RequireJsStuffPlugin.js +31 -31
- package/lib/RuleSet.js +444 -444
- package/lib/SetVarMainTemplatePlugin.js +41 -41
- package/lib/SingleEntryPlugin.js +35 -35
- package/lib/SizeFormatHelpers.js +18 -18
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +37 -37
- package/lib/UnsupportedFeatureWarning.js +21 -21
- package/lib/UseStrictPlugin.js +34 -34
- package/lib/WarnCaseSensitiveModulesPlugin.js +31 -31
- package/lib/WatchIgnorePlugin.js +49 -49
- package/lib/WebpackError.js +11 -11
- package/lib/WebpackOptionsDefaulter.js +129 -129
- package/lib/WebpackOptionsValidationError.js +196 -196
- package/lib/compareLocations.js +36 -36
- package/lib/dependencies/AMDDefineDependency.js +142 -142
- package/lib/dependencies/AMDPlugin.js +119 -119
- package/lib/dependencies/AMDRequireDependenciesBlock.js +33 -33
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +177 -177
- package/lib/dependencies/AMDRequireDependency.js +67 -67
- package/lib/dependencies/AMDRequireItemDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
- package/lib/dependencies/ConstDependency.js +32 -32
- package/lib/dependencies/ContextDependencyHelpers.js +71 -71
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/CriticalDependencyWarning.js +20 -20
- package/lib/dependencies/DelegatedExportsDependency.js +33 -33
- package/lib/dependencies/DelegatedSourceDependency.js +18 -18
- package/lib/dependencies/DllEntryDependency.js +20 -20
- package/lib/dependencies/HarmonyCompatibilityDependency.js +30 -30
- package/lib/dependencies/HarmonyExportHeaderDependency.js +28 -28
- package/lib/dependencies/ImportDependenciesBlock.js +17 -17
- package/lib/dependencies/ImportEagerContextDependency.js +22 -22
- package/lib/dependencies/ImportLazyContextDependency.js +22 -22
- package/lib/dependencies/ImportLazyOnceContextDependency.js +22 -22
- package/lib/dependencies/ImportParserPlugin.js +89 -89
- package/lib/dependencies/ImportPlugin.js +60 -60
- package/lib/dependencies/ImportWeakContextDependency.js +22 -22
- package/lib/dependencies/LoaderDependency.js +18 -18
- package/lib/dependencies/LoaderPlugin.js +60 -60
- package/lib/dependencies/LocalModule.js +23 -23
- package/lib/dependencies/LocalModuleDependency.js +24 -24
- package/lib/dependencies/LocalModulesHelpers.js +46 -46
- package/lib/dependencies/ModuleDependency.js +23 -23
- package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
- package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
- package/lib/dependencies/MultiEntryDependency.js +20 -20
- package/lib/dependencies/NullDependency.js +24 -24
- package/lib/dependencies/PrefetchDependency.js +18 -18
- package/lib/dependencies/RequireContextDependency.js +26 -26
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +50 -50
- package/lib/dependencies/RequireContextPlugin.js +96 -96
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +22 -22
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +102 -102
- package/lib/dependencies/RequireEnsureDependency.js +38 -38
- package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
- package/lib/dependencies/RequireEnsurePlugin.js +40 -40
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +21 -21
- package/lib/dependencies/RequireIncludePlugin.js +33 -33
- package/lib/dependencies/RequireResolveDependency.js +22 -22
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +71 -71
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SingleEntryDependency.js +18 -18
- package/lib/dependencies/SystemPlugin.js +44 -44
- package/lib/dependencies/UnsupportedDependency.js +23 -23
- package/lib/dependencies/WebpackMissingModule.js +18 -18
- package/lib/dependencies/getFunctionExpression.js +44 -44
- package/lib/formatLocation.js +54 -54
- package/lib/node/NodeChunkTemplatePlugin.js +27 -27
- package/lib/node/NodeEnvironmentPlugin.js +25 -25
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +27 -27
- package/lib/node/NodeMainTemplate.runtime.js +24 -24
- package/lib/node/NodeMainTemplateAsync.runtime.js +40 -40
- package/lib/node/NodeOutputFileSystem.js +22 -22
- package/lib/node/NodeSourcePlugin.js +88 -88
- package/lib/node/NodeTargetPlugin.js +15 -15
- package/lib/node/NodeTemplatePlugin.js +27 -27
- package/lib/node/NodeWatchFileSystem.js +72 -72
- package/lib/optimize/ChunkModuleIdRangePlugin.js +53 -53
- package/lib/optimize/DedupePlugin.js +15 -15
- package/lib/optimize/FlagIncludedChunksPlugin.js +35 -35
- package/lib/optimize/LimitChunkCountPlugin.js +59 -59
- package/lib/optimize/MinChunkSizePlugin.js +65 -65
- package/lib/optimize/RemoveEmptyChunksPlugin.js +21 -21
- package/lib/optimize/UglifyJsPlugin.js +9 -9
- package/lib/performance/AssetsOverSizeLimitWarning.js +23 -23
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +28 -28
- package/lib/performance/NoAsyncChunksWarning.js +20 -20
- package/lib/performance/SizeLimitsPlugin.js +102 -102
- package/lib/prepareOptions.js +29 -29
- package/lib/removeAndDo.js +15 -15
- package/lib/util/Semaphore.js +32 -32
- package/lib/util/identifier.js +38 -38
- package/lib/validateSchema.js +66 -66
- package/lib/web/WebEnvironmentPlugin.js +18 -18
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +29 -29
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +28 -28
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +58 -58
- package/lib/webworker/WebWorkerTemplatePlugin.js +20 -20
- package/package.json +1 -1
- package/schemas/ajv.absolutePath.js +29 -29
- package/schemas/webpackOptionsSchema.json +16 -0
package/lib/ParserHelpers.js
CHANGED
@@ -1,85 +1,85 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
const path = require("path");
|
7
|
-
|
8
|
-
const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
9
|
-
const ConstDependency = require("./dependencies/ConstDependency");
|
10
|
-
const UnsupportedFeatureWarning = require("./UnsupportedFeatureWarning");
|
11
|
-
|
12
|
-
const ParserHelpers = exports;
|
13
|
-
|
14
|
-
ParserHelpers.addParsedVariableToModule = function(parser, name, expression) {
|
15
|
-
if(!parser.state.current.addVariable) return false;
|
16
|
-
var deps = [];
|
17
|
-
parser.parse(expression, {
|
18
|
-
current: {
|
19
|
-
addDependency: function(dep) {
|
20
|
-
dep.userRequest = name;
|
21
|
-
deps.push(dep);
|
22
|
-
}
|
23
|
-
},
|
24
|
-
module: parser.state.module
|
25
|
-
});
|
26
|
-
parser.state.current.addVariable(name, expression, deps);
|
27
|
-
return true;
|
28
|
-
};
|
29
|
-
|
30
|
-
ParserHelpers.requireFileAsExpression = function(context, pathToModule) {
|
31
|
-
var moduleJsPath = path.relative(context, pathToModule);
|
32
|
-
if(!/^[A-Z]:/i.test(moduleJsPath)) {
|
33
|
-
moduleJsPath = "./" + moduleJsPath.replace(/\\/g, "/");
|
34
|
-
}
|
35
|
-
return "require(" + JSON.stringify(moduleJsPath) + ")";
|
36
|
-
};
|
37
|
-
|
38
|
-
ParserHelpers.toConstantDependency = function(value) {
|
39
|
-
return function constDependency(expr) {
|
40
|
-
var dep = new ConstDependency(value, expr.range);
|
41
|
-
dep.loc = expr.loc;
|
42
|
-
this.state.current.addDependency(dep);
|
43
|
-
return true;
|
44
|
-
};
|
45
|
-
};
|
46
|
-
|
47
|
-
ParserHelpers.evaluateToString = function(value) {
|
48
|
-
return function stringExpression(expr) {
|
49
|
-
return new BasicEvaluatedExpression().setString(value).setRange(expr.range);
|
50
|
-
};
|
51
|
-
};
|
52
|
-
|
53
|
-
ParserHelpers.evaluateToBoolean = function(value) {
|
54
|
-
return function booleanExpression(expr) {
|
55
|
-
return new BasicEvaluatedExpression().setBoolean(value).setRange(expr.range);
|
56
|
-
};
|
57
|
-
};
|
58
|
-
|
59
|
-
ParserHelpers.evaluateToIdentifier = function(identifier, truthy) {
|
60
|
-
return function identifierExpression(expr) {
|
61
|
-
let evex = new BasicEvaluatedExpression().setIdentifier(identifier).setRange(expr.range);
|
62
|
-
if(truthy === true) evex = evex.setTruthy();
|
63
|
-
else if(truthy === false) evex = evex.setFalsy();
|
64
|
-
return evex;
|
65
|
-
};
|
66
|
-
};
|
67
|
-
|
68
|
-
ParserHelpers.expressionIsUnsupported = function(message) {
|
69
|
-
return function unsupportedExpression(expr) {
|
70
|
-
var dep = new ConstDependency("(void 0)", expr.range);
|
71
|
-
dep.loc = expr.loc;
|
72
|
-
this.state.current.addDependency(dep);
|
73
|
-
if(!this.state.module) return;
|
74
|
-
this.state.module.warnings.push(new UnsupportedFeatureWarning(this.state.module, message));
|
75
|
-
return true;
|
76
|
-
};
|
77
|
-
};
|
78
|
-
|
79
|
-
ParserHelpers.skipTraversal = function skipTraversal() {
|
80
|
-
return true;
|
81
|
-
};
|
82
|
-
|
83
|
-
ParserHelpers.approve = function approve() {
|
84
|
-
return true;
|
85
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
const path = require("path");
|
7
|
+
|
8
|
+
const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
9
|
+
const ConstDependency = require("./dependencies/ConstDependency");
|
10
|
+
const UnsupportedFeatureWarning = require("./UnsupportedFeatureWarning");
|
11
|
+
|
12
|
+
const ParserHelpers = exports;
|
13
|
+
|
14
|
+
ParserHelpers.addParsedVariableToModule = function(parser, name, expression) {
|
15
|
+
if(!parser.state.current.addVariable) return false;
|
16
|
+
var deps = [];
|
17
|
+
parser.parse(expression, {
|
18
|
+
current: {
|
19
|
+
addDependency: function(dep) {
|
20
|
+
dep.userRequest = name;
|
21
|
+
deps.push(dep);
|
22
|
+
}
|
23
|
+
},
|
24
|
+
module: parser.state.module
|
25
|
+
});
|
26
|
+
parser.state.current.addVariable(name, expression, deps);
|
27
|
+
return true;
|
28
|
+
};
|
29
|
+
|
30
|
+
ParserHelpers.requireFileAsExpression = function(context, pathToModule) {
|
31
|
+
var moduleJsPath = path.relative(context, pathToModule);
|
32
|
+
if(!/^[A-Z]:/i.test(moduleJsPath)) {
|
33
|
+
moduleJsPath = "./" + moduleJsPath.replace(/\\/g, "/");
|
34
|
+
}
|
35
|
+
return "require(" + JSON.stringify(moduleJsPath) + ")";
|
36
|
+
};
|
37
|
+
|
38
|
+
ParserHelpers.toConstantDependency = function(value) {
|
39
|
+
return function constDependency(expr) {
|
40
|
+
var dep = new ConstDependency(value, expr.range);
|
41
|
+
dep.loc = expr.loc;
|
42
|
+
this.state.current.addDependency(dep);
|
43
|
+
return true;
|
44
|
+
};
|
45
|
+
};
|
46
|
+
|
47
|
+
ParserHelpers.evaluateToString = function(value) {
|
48
|
+
return function stringExpression(expr) {
|
49
|
+
return new BasicEvaluatedExpression().setString(value).setRange(expr.range);
|
50
|
+
};
|
51
|
+
};
|
52
|
+
|
53
|
+
ParserHelpers.evaluateToBoolean = function(value) {
|
54
|
+
return function booleanExpression(expr) {
|
55
|
+
return new BasicEvaluatedExpression().setBoolean(value).setRange(expr.range);
|
56
|
+
};
|
57
|
+
};
|
58
|
+
|
59
|
+
ParserHelpers.evaluateToIdentifier = function(identifier, truthy) {
|
60
|
+
return function identifierExpression(expr) {
|
61
|
+
let evex = new BasicEvaluatedExpression().setIdentifier(identifier).setRange(expr.range);
|
62
|
+
if(truthy === true) evex = evex.setTruthy();
|
63
|
+
else if(truthy === false) evex = evex.setFalsy();
|
64
|
+
return evex;
|
65
|
+
};
|
66
|
+
};
|
67
|
+
|
68
|
+
ParserHelpers.expressionIsUnsupported = function(message) {
|
69
|
+
return function unsupportedExpression(expr) {
|
70
|
+
var dep = new ConstDependency("(void 0)", expr.range);
|
71
|
+
dep.loc = expr.loc;
|
72
|
+
this.state.current.addDependency(dep);
|
73
|
+
if(!this.state.module) return;
|
74
|
+
this.state.module.warnings.push(new UnsupportedFeatureWarning(this.state.module, message));
|
75
|
+
return true;
|
76
|
+
};
|
77
|
+
};
|
78
|
+
|
79
|
+
ParserHelpers.skipTraversal = function skipTraversal() {
|
80
|
+
return true;
|
81
|
+
};
|
82
|
+
|
83
|
+
ParserHelpers.approve = function approve() {
|
84
|
+
return true;
|
85
|
+
};
|
package/lib/PrefetchPlugin.js
CHANGED
@@ -1,31 +1,31 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
const PrefetchDependency = require("./dependencies/PrefetchDependency");
|
7
|
-
|
8
|
-
class PrefetchPlugin {
|
9
|
-
|
10
|
-
constructor(context, request) {
|
11
|
-
if(!request) {
|
12
|
-
this.request = context;
|
13
|
-
} else {
|
14
|
-
this.context = context;
|
15
|
-
this.request = request;
|
16
|
-
}
|
17
|
-
}
|
18
|
-
|
19
|
-
apply(compiler) {
|
20
|
-
compiler.plugin("compilation", (compilation, params) => {
|
21
|
-
const normalModuleFactory = params.normalModuleFactory;
|
22
|
-
|
23
|
-
compilation.dependencyFactories.set(PrefetchDependency, normalModuleFactory);
|
24
|
-
});
|
25
|
-
compiler.plugin("make", (compilation, callback) => {
|
26
|
-
compilation.prefetch(this.context || compiler.context, new PrefetchDependency(this.request), callback);
|
27
|
-
});
|
28
|
-
}
|
29
|
-
|
30
|
-
}
|
31
|
-
module.exports = PrefetchPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
const PrefetchDependency = require("./dependencies/PrefetchDependency");
|
7
|
+
|
8
|
+
class PrefetchPlugin {
|
9
|
+
|
10
|
+
constructor(context, request) {
|
11
|
+
if(!request) {
|
12
|
+
this.request = context;
|
13
|
+
} else {
|
14
|
+
this.context = context;
|
15
|
+
this.request = request;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
apply(compiler) {
|
20
|
+
compiler.plugin("compilation", (compilation, params) => {
|
21
|
+
const normalModuleFactory = params.normalModuleFactory;
|
22
|
+
|
23
|
+
compilation.dependencyFactories.set(PrefetchDependency, normalModuleFactory);
|
24
|
+
});
|
25
|
+
compiler.plugin("make", (compilation, callback) => {
|
26
|
+
compilation.prefetch(this.context || compiler.context, new PrefetchDependency(this.request), callback);
|
27
|
+
});
|
28
|
+
}
|
29
|
+
|
30
|
+
}
|
31
|
+
module.exports = PrefetchPlugin;
|
package/lib/ProgressPlugin.js
CHANGED
@@ -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;
|