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.
- package/LICENSE +20 -20
- package/README.md +716 -716
- package/bin/convert-argv.js +1 -1
- package/bin/webpack.js +6 -0
- 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/AsyncDependencyToInitialChunkWarning.js +21 -0
- package/lib/AutomaticPrefetchPlugin.js +36 -36
- package/lib/BasicEvaluatedExpression.js +203 -203
- package/lib/CaseSensitiveModulesWarning.js +49 -49
- package/lib/Chunk.js +3 -0
- package/lib/ChunkRenderError.js +24 -24
- package/lib/ChunkTemplate.js +36 -36
- package/lib/CompatibilityPlugin.js +57 -57
- package/lib/Compilation.js +158 -51
- package/lib/Compiler.js +523 -523
- package/lib/ConstPlugin.js +60 -60
- package/lib/ContextExclusionPlugin.js +17 -0
- package/lib/ContextModule.js +431 -431
- package/lib/ContextModuleFactory.js +14 -5
- package/lib/ContextReplacementPlugin.js +111 -111
- package/lib/DefinePlugin.js +123 -123
- package/lib/DelegatedModule.js +98 -92
- 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/ExternalModule.js +7 -0
- 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/FunctionModuleTemplatePlugin.js +7 -3
- 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/JsonpMainTemplate.runtime.js +2 -1
- package/lib/JsonpMainTemplatePlugin.js +2 -0
- 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/ModuleParseError.js +1 -1
- 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/Parser.js +65 -34
- 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/Stats.js +27 -8
- package/lib/UmdMainTemplatePlugin.js +1 -1
- 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/AMDDefineDependencyParserPlugin.js +5 -1
- package/lib/dependencies/AMDPlugin.js +119 -119
- package/lib/dependencies/AMDRequireArrayDependency.js +2 -0
- package/lib/dependencies/AMDRequireContextDependency.js +0 -9
- 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/CommonJsRequireContextDependency.js +0 -10
- package/lib/dependencies/CommonJsRequireDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
- package/lib/dependencies/ConstDependency.js +32 -32
- package/lib/dependencies/ContextDependency.js +20 -0
- 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/HarmonyExportDependencyParserPlugin.js +14 -2
- package/lib/dependencies/HarmonyExportExpressionDependency.js +0 -7
- package/lib/dependencies/HarmonyExportHeaderDependency.js +28 -28
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +45 -45
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +0 -13
- package/lib/dependencies/HarmonyModulesHelpers.js +0 -53
- package/lib/dependencies/ImportContextDependency.js +0 -10
- 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/RequireResolveContextDependency.js +0 -10
- 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/CommonsChunkPlugin.js +40 -19
- package/lib/optimize/ConcatenatedModule.js +27 -24
- 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/Queue.js +42 -0
- 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/webpack.js +1 -0
- 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 +69 -0
package/lib/Parser.js
CHANGED
@@ -321,45 +321,76 @@ class Parser extends Tapable {
|
|
321
321
|
}
|
322
322
|
return new BasicEvaluatedExpression().setString(result).setRange(expr.range);
|
323
323
|
});
|
324
|
+
});
|
324
325
|
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
}
|
326
|
+
/**
|
327
|
+
* @param {string} kind "cooked" | "raw"
|
328
|
+
* @param {any[]} quasis quasis
|
329
|
+
* @param {any[]} expressions expressions
|
330
|
+
* @return {BasicEvaluatedExpression[]} Simplified template
|
331
|
+
*/
|
332
|
+
function getSimplifiedTemplateResult(kind, quasis, expressions) {
|
333
|
+
const parts = [];
|
334
|
+
|
335
|
+
for(let i = 0; i < quasis.length; i++) {
|
336
|
+
parts.push(new BasicEvaluatedExpression().setString(quasis[i].value[kind]).setRange(quasis[i].range));
|
337
|
+
|
338
|
+
if(i > 0) {
|
339
|
+
const prevExpr = parts[parts.length - 2],
|
340
|
+
lastExpr = parts[parts.length - 1];
|
341
|
+
const expr = this.evaluateExpression(expressions[i - 1]);
|
342
|
+
if(!(expr.isString() || expr.isNumber())) continue;
|
343
|
+
|
344
|
+
prevExpr.setString(prevExpr.string + (expr.isString() ? expr.string : expr.number) + lastExpr.string);
|
345
|
+
prevExpr.setRange([prevExpr.range[0], lastExpr.range[1]]);
|
346
|
+
parts.pop();
|
347
347
|
}
|
348
|
-
return parts;
|
349
348
|
}
|
349
|
+
return parts;
|
350
|
+
}
|
350
351
|
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
352
|
+
this.plugin("evaluate TemplateLiteral", function(node) {
|
353
|
+
const parts = getSimplifiedTemplateResult.call(this, "cooked", node.quasis, node.expressions);
|
354
|
+
if(parts.length === 1) {
|
355
|
+
return parts[0].setRange(node.range);
|
356
|
+
}
|
357
|
+
return new BasicEvaluatedExpression().setTemplateString(parts).setRange(node.range);
|
358
|
+
});
|
359
|
+
this.plugin("evaluate TaggedTemplateExpression", function(node) {
|
360
|
+
if(this.evaluateExpression(node.tag).identifier !== "String.raw") return;
|
361
|
+
const parts = getSimplifiedTemplateResult.call(this, "raw", node.quasi.quasis, node.quasi.expressions);
|
362
|
+
return new BasicEvaluatedExpression().setTemplateString(parts).setRange(node.range);
|
363
|
+
});
|
364
|
+
|
365
|
+
this.plugin("evaluate CallExpression .concat", function(expr, param) {
|
366
|
+
if(!param.isString() && !param.isWrapped()) return;
|
367
|
+
|
368
|
+
let stringSuffix = null;
|
369
|
+
let hasUnknownParams = false;
|
370
|
+
for(let i = expr.arguments.length - 1; i >= 0; i--) {
|
371
|
+
const argExpr = this.evaluateExpression(expr.arguments[i]);
|
372
|
+
if(!argExpr.isString() && !argExpr.isNumber()) {
|
373
|
+
hasUnknownParams = true;
|
374
|
+
break;
|
355
375
|
}
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
const
|
361
|
-
|
362
|
-
}
|
376
|
+
|
377
|
+
const value = argExpr.isString() ? argExpr.string : "" + argExpr.number;
|
378
|
+
|
379
|
+
const newString = value + (stringSuffix ? stringSuffix.string : "");
|
380
|
+
const newRange = [argExpr.range[0], (stringSuffix || argExpr).range[1]];
|
381
|
+
stringSuffix = new BasicEvaluatedExpression().setString(newString).setRange(newRange);
|
382
|
+
}
|
383
|
+
|
384
|
+
if(hasUnknownParams) {
|
385
|
+
const prefix = param.isString() ? param : param.prefix;
|
386
|
+
return new BasicEvaluatedExpression().setWrapped(prefix, stringSuffix).setRange(expr.range);
|
387
|
+
} else if(param.isWrapped()) {
|
388
|
+
const postfix = stringSuffix || param.postfix;
|
389
|
+
return new BasicEvaluatedExpression().setWrapped(param.prefix, postfix).setRange(expr.range);
|
390
|
+
} else {
|
391
|
+
const newString = param.string + (stringSuffix ? stringSuffix.string : "");
|
392
|
+
return new BasicEvaluatedExpression().setString(newString).setRange(expr.range);
|
393
|
+
}
|
363
394
|
});
|
364
395
|
this.plugin("evaluate CallExpression .split", function(expr, param) {
|
365
396
|
if(!param.isString()) return;
|
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;
|