webpack 5.76.3 → 5.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/lib/NormalModuleFactory.js +20 -0
- package/lib/WebpackOptionsApply.js +2 -1
- package/lib/config/defaults.js +1 -0
- package/lib/config/normalization.js +1 -0
- package/lib/dependencies/WorkerDependency.js +37 -2
- package/lib/dependencies/WorkerPlugin.js +5 -2
- package/package.json +1 -1
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +10 -0
- package/types.d.ts +10 -0
@@ -85,6 +85,7 @@ const EMPTY_GENERATOR_OPTIONS = {};
|
|
85
85
|
const EMPTY_ELEMENTS = [];
|
86
86
|
|
87
87
|
const MATCH_RESOURCE_REGEX = /^([^!]+)!=!/;
|
88
|
+
const LEADING_DOT_EXTENSION_REGEX = /^[^.]/;
|
88
89
|
|
89
90
|
const loaderToIdent = data => {
|
90
91
|
if (!data.options) {
|
@@ -852,6 +853,25 @@ ${err2.stack}`;
|
|
852
853
|
err.message += `
|
853
854
|
${hints.join("\n\n")}`;
|
854
855
|
}
|
856
|
+
|
857
|
+
// Check if the extension is missing a leading dot (e.g. "js" instead of ".js")
|
858
|
+
let appendResolveExtensionsHint = false;
|
859
|
+
const specifiedExtensions = Array.from(
|
860
|
+
resolver.options.extensions
|
861
|
+
);
|
862
|
+
const expectedExtensions = specifiedExtensions.map(extension => {
|
863
|
+
if (LEADING_DOT_EXTENSION_REGEX.test(extension)) {
|
864
|
+
appendResolveExtensionsHint = true;
|
865
|
+
return `.${extension}`;
|
866
|
+
}
|
867
|
+
return extension;
|
868
|
+
});
|
869
|
+
if (appendResolveExtensionsHint) {
|
870
|
+
err.message += `\nDid you miss the leading dot in 'resolve.extensions'? Did you mean '${JSON.stringify(
|
871
|
+
expectedExtensions
|
872
|
+
)}' instead of '${JSON.stringify(specifiedExtensions)}'?`;
|
873
|
+
}
|
874
|
+
|
855
875
|
callback(err);
|
856
876
|
}
|
857
877
|
);
|
@@ -391,7 +391,8 @@ class WebpackOptionsApply extends OptionsApply {
|
|
391
391
|
new WorkerPlugin(
|
392
392
|
options.output.workerChunkLoading,
|
393
393
|
options.output.workerWasmLoading,
|
394
|
-
options.output.module
|
394
|
+
options.output.module,
|
395
|
+
options.output.workerPublicPath
|
395
396
|
).apply(compiler);
|
396
397
|
|
397
398
|
new DefaultStatsFactoryPlugin().apply(compiler);
|
package/lib/config/defaults.js
CHANGED
@@ -369,6 +369,7 @@ const getNormalizedWebpackOptions = config => {
|
|
369
369
|
uniqueName: output.uniqueName,
|
370
370
|
wasmLoading: output.wasmLoading,
|
371
371
|
webassemblyModuleFilename: output.webassemblyModuleFilename,
|
372
|
+
workerPublicPath: output.workerPublicPath,
|
372
373
|
workerChunkLoading: output.workerChunkLoading,
|
373
374
|
workerWasmLoading: output.workerWasmLoading
|
374
375
|
};
|
@@ -25,10 +25,16 @@ class WorkerDependency extends ModuleDependency {
|
|
25
25
|
/**
|
26
26
|
* @param {string} request request
|
27
27
|
* @param {[number, number]} range range
|
28
|
+
* @param {Object} workerDependencyOptions options
|
29
|
+
* @param {string} workerDependencyOptions.publicPath public path for the worker
|
28
30
|
*/
|
29
|
-
constructor(request, range) {
|
31
|
+
constructor(request, range, workerDependencyOptions) {
|
30
32
|
super(request);
|
31
33
|
this.range = range;
|
34
|
+
// If options are updated, don't forget to update the hash and serialization functions
|
35
|
+
this.options = workerDependencyOptions;
|
36
|
+
/** Cache the hash */
|
37
|
+
this._hashUpdate = undefined;
|
32
38
|
}
|
33
39
|
|
34
40
|
/**
|
@@ -48,6 +54,31 @@ class WorkerDependency extends ModuleDependency {
|
|
48
54
|
get category() {
|
49
55
|
return "worker";
|
50
56
|
}
|
57
|
+
|
58
|
+
/**
|
59
|
+
* Update the hash
|
60
|
+
* @param {Hash} hash hash to be updated
|
61
|
+
* @param {UpdateHashContext} context context
|
62
|
+
* @returns {void}
|
63
|
+
*/
|
64
|
+
updateHash(hash, context) {
|
65
|
+
if (this._hashUpdate === undefined) {
|
66
|
+
this._hashUpdate = JSON.stringify(this.options);
|
67
|
+
}
|
68
|
+
hash.update(this._hashUpdate);
|
69
|
+
}
|
70
|
+
|
71
|
+
serialize(context) {
|
72
|
+
const { write } = context;
|
73
|
+
write(this.options);
|
74
|
+
super.serialize(context);
|
75
|
+
}
|
76
|
+
|
77
|
+
deserialize(context) {
|
78
|
+
const { read } = context;
|
79
|
+
this.options = read();
|
80
|
+
super.deserialize(context);
|
81
|
+
}
|
51
82
|
}
|
52
83
|
|
53
84
|
WorkerDependency.Template = class WorkerDependencyTemplate extends (
|
@@ -69,6 +100,10 @@ WorkerDependency.Template = class WorkerDependencyTemplate extends (
|
|
69
100
|
chunkGraph.getBlockChunkGroup(block)
|
70
101
|
);
|
71
102
|
const chunk = entrypoint.getEntrypointChunk();
|
103
|
+
// We use the workerPublicPath option if provided, else we fallback to the RuntimeGlobal publicPath
|
104
|
+
const workerImportBaseUrl = dep.options.publicPath
|
105
|
+
? `"${dep.options.publicPath}"`
|
106
|
+
: RuntimeGlobals.publicPath;
|
72
107
|
|
73
108
|
runtimeRequirements.add(RuntimeGlobals.publicPath);
|
74
109
|
runtimeRequirements.add(RuntimeGlobals.baseURI);
|
@@ -77,7 +112,7 @@ WorkerDependency.Template = class WorkerDependencyTemplate extends (
|
|
77
112
|
source.replace(
|
78
113
|
dep.range[0],
|
79
114
|
dep.range[1] - 1,
|
80
|
-
`/* worker import */ ${
|
115
|
+
`/* worker import */ ${workerImportBaseUrl} + ${
|
81
116
|
RuntimeGlobals.getChunkScriptFilename
|
82
117
|
}(${JSON.stringify(chunk.id)}), ${RuntimeGlobals.baseURI}`
|
83
118
|
);
|
@@ -48,10 +48,11 @@ const DEFAULT_SYNTAX = [
|
|
48
48
|
const workerIndexMap = new WeakMap();
|
49
49
|
|
50
50
|
class WorkerPlugin {
|
51
|
-
constructor(chunkLoading, wasmLoading, module) {
|
51
|
+
constructor(chunkLoading, wasmLoading, module, workerPublicPath) {
|
52
52
|
this._chunkLoading = chunkLoading;
|
53
53
|
this._wasmLoading = wasmLoading;
|
54
54
|
this._module = module;
|
55
|
+
this._workerPublicPath = workerPublicPath;
|
55
56
|
}
|
56
57
|
/**
|
57
58
|
* Apply the plugin
|
@@ -298,7 +299,9 @@ class WorkerPlugin {
|
|
298
299
|
}
|
299
300
|
});
|
300
301
|
block.loc = expr.loc;
|
301
|
-
const dep = new WorkerDependency(url.string, range
|
302
|
+
const dep = new WorkerDependency(url.string, range, {
|
303
|
+
publicPath: this._workerPublicPath
|
304
|
+
});
|
302
305
|
dep.loc = expr.loc;
|
303
306
|
block.addDependency(dep);
|
304
307
|
parser.state.module.addBlock(block);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "webpack",
|
3
|
-
"version": "5.
|
3
|
+
"version": "5.77.0",
|
4
4
|
"author": "Tobias Koppers @sokra",
|
5
5
|
"description": "Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.",
|
6
6
|
"license": "MIT",
|