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/IgnorePlugin.js
CHANGED
@@ -1,69 +1,69 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
class IgnorePlugin {
|
8
|
-
constructor(resourceRegExp, contextRegExp) {
|
9
|
-
this.resourceRegExp = resourceRegExp;
|
10
|
-
this.contextRegExp = contextRegExp;
|
11
|
-
|
12
|
-
this.checkIgnore = this.checkIgnore.bind(this);
|
13
|
-
}
|
14
|
-
|
15
|
-
/*
|
16
|
-
* Only returns true if a "resourceRegExp" exists
|
17
|
-
* and the resource given matches the regexp.
|
18
|
-
*/
|
19
|
-
checkResource(resource) {
|
20
|
-
if(!this.resourceRegExp) {
|
21
|
-
return false;
|
22
|
-
}
|
23
|
-
return this.resourceRegExp.test(resource);
|
24
|
-
}
|
25
|
-
|
26
|
-
/*
|
27
|
-
* Returns true if contextRegExp does not exist
|
28
|
-
* or if context matches the given regexp.
|
29
|
-
*/
|
30
|
-
checkContext(context) {
|
31
|
-
if(!this.contextRegExp) {
|
32
|
-
return true;
|
33
|
-
}
|
34
|
-
return this.contextRegExp.test(context);
|
35
|
-
}
|
36
|
-
|
37
|
-
/*
|
38
|
-
* Returns true if result should be ignored.
|
39
|
-
* false if it shouldn't.
|
40
|
-
*
|
41
|
-
* Not that if "contextRegExp" is given, both the "resourceRegExp"
|
42
|
-
* and "contextRegExp" have to match.
|
43
|
-
*/
|
44
|
-
checkResult(result) {
|
45
|
-
if(!result) {
|
46
|
-
return true;
|
47
|
-
}
|
48
|
-
return this.checkResource(result.request) && this.checkContext(result.context);
|
49
|
-
}
|
50
|
-
|
51
|
-
checkIgnore(result, callback) {
|
52
|
-
// check if result is ignored
|
53
|
-
if(this.checkResult(result)) {
|
54
|
-
return callback();
|
55
|
-
}
|
56
|
-
return callback(null, result);
|
57
|
-
}
|
58
|
-
|
59
|
-
apply(compiler) {
|
60
|
-
compiler.plugin("normal-module-factory", (nmf) => {
|
61
|
-
nmf.plugin("before-resolve", this.checkIgnore);
|
62
|
-
});
|
63
|
-
compiler.plugin("context-module-factory", (cmf) => {
|
64
|
-
cmf.plugin("before-resolve", this.checkIgnore);
|
65
|
-
});
|
66
|
-
}
|
67
|
-
}
|
68
|
-
|
69
|
-
module.exports = IgnorePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class IgnorePlugin {
|
8
|
+
constructor(resourceRegExp, contextRegExp) {
|
9
|
+
this.resourceRegExp = resourceRegExp;
|
10
|
+
this.contextRegExp = contextRegExp;
|
11
|
+
|
12
|
+
this.checkIgnore = this.checkIgnore.bind(this);
|
13
|
+
}
|
14
|
+
|
15
|
+
/*
|
16
|
+
* Only returns true if a "resourceRegExp" exists
|
17
|
+
* and the resource given matches the regexp.
|
18
|
+
*/
|
19
|
+
checkResource(resource) {
|
20
|
+
if(!this.resourceRegExp) {
|
21
|
+
return false;
|
22
|
+
}
|
23
|
+
return this.resourceRegExp.test(resource);
|
24
|
+
}
|
25
|
+
|
26
|
+
/*
|
27
|
+
* Returns true if contextRegExp does not exist
|
28
|
+
* or if context matches the given regexp.
|
29
|
+
*/
|
30
|
+
checkContext(context) {
|
31
|
+
if(!this.contextRegExp) {
|
32
|
+
return true;
|
33
|
+
}
|
34
|
+
return this.contextRegExp.test(context);
|
35
|
+
}
|
36
|
+
|
37
|
+
/*
|
38
|
+
* Returns true if result should be ignored.
|
39
|
+
* false if it shouldn't.
|
40
|
+
*
|
41
|
+
* Not that if "contextRegExp" is given, both the "resourceRegExp"
|
42
|
+
* and "contextRegExp" have to match.
|
43
|
+
*/
|
44
|
+
checkResult(result) {
|
45
|
+
if(!result) {
|
46
|
+
return true;
|
47
|
+
}
|
48
|
+
return this.checkResource(result.request) && this.checkContext(result.context);
|
49
|
+
}
|
50
|
+
|
51
|
+
checkIgnore(result, callback) {
|
52
|
+
// check if result is ignored
|
53
|
+
if(this.checkResult(result)) {
|
54
|
+
return callback();
|
55
|
+
}
|
56
|
+
return callback(null, result);
|
57
|
+
}
|
58
|
+
|
59
|
+
apply(compiler) {
|
60
|
+
compiler.plugin("normal-module-factory", (nmf) => {
|
61
|
+
nmf.plugin("before-resolve", this.checkIgnore);
|
62
|
+
});
|
63
|
+
compiler.plugin("context-module-factory", (cmf) => {
|
64
|
+
cmf.plugin("before-resolve", this.checkIgnore);
|
65
|
+
});
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
module.exports = IgnorePlugin;
|
@@ -1,37 +1,37 @@
|
|
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 JsonpExportMainTemplatePlugin {
|
10
|
-
constructor(name) {
|
11
|
-
this.name = name;
|
12
|
-
}
|
13
|
-
|
14
|
-
apply(compilation) {
|
15
|
-
const mainTemplate = compilation.mainTemplate;
|
16
|
-
|
17
|
-
compilation.templatesPlugin("render-with-entry", (source, chunk, hash) => {
|
18
|
-
const name = mainTemplate.applyPluginsWaterfall("asset-path", this.name || "", {
|
19
|
-
hash: hash,
|
20
|
-
chunk: chunk
|
21
|
-
});
|
22
|
-
return new ConcatSource(`${name}(`, source, ");");
|
23
|
-
});
|
24
|
-
|
25
|
-
mainTemplate.plugin("global-hash-paths", paths => {
|
26
|
-
if(this.name) paths.push(this.name);
|
27
|
-
return paths;
|
28
|
-
});
|
29
|
-
|
30
|
-
mainTemplate.plugin("hash", hash => {
|
31
|
-
hash.update("jsonp export");
|
32
|
-
hash.update(`${this.name}`);
|
33
|
-
});
|
34
|
-
}
|
35
|
-
}
|
36
|
-
|
37
|
-
module.exports = JsonpExportMainTemplatePlugin;
|
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 JsonpExportMainTemplatePlugin {
|
10
|
+
constructor(name) {
|
11
|
+
this.name = name;
|
12
|
+
}
|
13
|
+
|
14
|
+
apply(compilation) {
|
15
|
+
const mainTemplate = compilation.mainTemplate;
|
16
|
+
|
17
|
+
compilation.templatesPlugin("render-with-entry", (source, chunk, hash) => {
|
18
|
+
const name = mainTemplate.applyPluginsWaterfall("asset-path", this.name || "", {
|
19
|
+
hash: hash,
|
20
|
+
chunk: chunk
|
21
|
+
});
|
22
|
+
return new ConcatSource(`${name}(`, source, ");");
|
23
|
+
});
|
24
|
+
|
25
|
+
mainTemplate.plugin("global-hash-paths", paths => {
|
26
|
+
if(this.name) paths.push(this.name);
|
27
|
+
return paths;
|
28
|
+
});
|
29
|
+
|
30
|
+
mainTemplate.plugin("hash", hash => {
|
31
|
+
hash.update("jsonp export");
|
32
|
+
hash.update(`${this.name}`);
|
33
|
+
});
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
module.exports = JsonpExportMainTemplatePlugin;
|
@@ -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;
|
@@ -2,7 +2,7 @@
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
3
|
Author Tobias Koppers @sokra
|
4
4
|
*/
|
5
|
-
/*globals hotAddUpdateChunk parentHotUpdateCallback document XMLHttpRequest $require$ $hotChunkFilename$ $hotMainFilename$ */
|
5
|
+
/*globals hotAddUpdateChunk parentHotUpdateCallback document XMLHttpRequest $require$ $hotChunkFilename$ $hotMainFilename$ $crossOriginLoading$ */
|
6
6
|
module.exports = function() {
|
7
7
|
function webpackHotUpdateCallback(chunkId, moreModules) { // eslint-disable-line no-unused-vars
|
8
8
|
hotAddUpdateChunk(chunkId, moreModules);
|
@@ -15,6 +15,7 @@ module.exports = function() {
|
|
15
15
|
script.type = "text/javascript";
|
16
16
|
script.charset = "utf-8";
|
17
17
|
script.src = $require$.p + $hotChunkFilename$;
|
18
|
+
$crossOriginLoading$;
|
18
19
|
head.appendChild(script);
|
19
20
|
}
|
20
21
|
|
@@ -171,6 +171,7 @@ class JsonpMainTemplatePlugin {
|
|
171
171
|
mainTemplate.plugin("hot-bootstrap", function(source, chunk, hash) {
|
172
172
|
const hotUpdateChunkFilename = this.outputOptions.hotUpdateChunkFilename;
|
173
173
|
const hotUpdateMainFilename = this.outputOptions.hotUpdateMainFilename;
|
174
|
+
const crossOriginLoading = this.outputOptions.crossOriginLoading;
|
174
175
|
const hotUpdateFunction = this.outputOptions.hotUpdateFunction;
|
175
176
|
const currentHotUpdateChunkFilename = this.applyPluginsWaterfall("asset-path", JSON.stringify(hotUpdateChunkFilename), {
|
176
177
|
hash: `" + ${this.renderCurrentHashCode(hash)} + "`,
|
@@ -186,6 +187,7 @@ class JsonpMainTemplatePlugin {
|
|
186
187
|
const runtimeSource = Template.getFunctionContent(require("./JsonpMainTemplate.runtime.js"))
|
187
188
|
.replace(/\/\/\$semicolon/g, ";")
|
188
189
|
.replace(/\$require\$/g, this.requireFn)
|
190
|
+
.replace(/\$crossOriginLoading\$/g, crossOriginLoading ? `script.crossOrigin = ${JSON.stringify(crossOriginLoading)}` : "")
|
189
191
|
.replace(/\$hotMainFilename\$/g, currentHotUpdateMainFilename)
|
190
192
|
.replace(/\$hotChunkFilename\$/g, currentHotUpdateChunkFilename)
|
191
193
|
.replace(/\$hash\$/g, JSON.stringify(hash));
|
@@ -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;
|
package/lib/LibManifestPlugin.js
CHANGED
@@ -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;
|