Skip to content

Commit b18e4e8

Browse files
fix: respect importMetaName
1 parent 28f3070 commit b18e4e8

File tree

3 files changed

+25
-11
lines changed

3 files changed

+25
-11
lines changed

lib/APIPlugin.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@ const GetFullHashRuntimeModule = require("./runtime/GetFullHashRuntimeModule");
2626

2727
/**
2828
* @param {boolean} module true if ES module
29+
* @param {string} importMetaName `import.meta` name
2930
* @returns {Record<string, {expr: string, req: string[], type?: string, assign: boolean}>} replacements
3031
*/
31-
function getReplacements(module = false) {
32+
function getReplacements(module, importMetaName) {
3233
return {
3334
__webpack_require__: {
3435
expr: RuntimeGlobals.require,
@@ -62,7 +63,7 @@ function getReplacements(module = false) {
6263
},
6364
__non_webpack_require__: {
6465
expr: module
65-
? "__WEBPACK_EXTERNAL_createRequire(import.meta.url)"
66+
? `__WEBPACK_EXTERNAL_createRequire(${importMetaName}.url)`
6667
: "require",
6768
req: module ? [RuntimeGlobals.createRequire] : null,
6869
type: undefined, // type is not known, depends on environment
@@ -144,11 +145,15 @@ class APIPlugin {
144145
* @returns {void}
145146
*/
146147
apply(compiler) {
147-
const REPLACEMENTS = getReplacements(this.options.module);
148-
149148
compiler.hooks.compilation.tap(
150149
PLUGIN_NAME,
151150
(compilation, { normalModuleFactory }) => {
151+
const { importMetaName } = compilation.outputOptions;
152+
const REPLACEMENTS = getReplacements(
153+
this.options.module,
154+
importMetaName
155+
);
156+
152157
compilation.dependencyTemplates.set(
153158
ConstDependency,
154159
new ConstDependency.Template()

lib/ExternalModule.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,21 +107,26 @@ const getSourceForCommonJsExternal = moduleAndSpecifiers => {
107107

108108
/**
109109
* @param {string|string[]} moduleAndSpecifiers the module request
110+
* @param {Compilation} compilation the compilation
110111
* @returns {SourceData} the generated source
111112
*/
112-
const getSourceForCommonJsExternalInNodeModule = moduleAndSpecifiers => {
113+
const getSourceForCommonJsExternalInNodeModule = (
114+
moduleAndSpecifiers,
115+
compilation
116+
) => {
117+
const { importMetaName } = compilation.outputOptions;
113118
if (!Array.isArray(moduleAndSpecifiers)) {
114119
return {
115120
runtimeRequirements: RUNTIME_REQUIREMENTS_FOR_CREATE_REQUIRE,
116-
expression: `__WEBPACK_EXTERNAL_createRequire(import.meta.url)(${JSON.stringify(
121+
expression: `__WEBPACK_EXTERNAL_createRequire(${importMetaName}.url)(${JSON.stringify(
117122
moduleAndSpecifiers
118123
)})`
119124
};
120125
}
121126
const moduleName = moduleAndSpecifiers[0];
122127
return {
123128
runtimeRequirements: RUNTIME_REQUIREMENTS_FOR_CREATE_REQUIRE,
124-
expression: `__WEBPACK_EXTERNAL_createRequire(import.meta.url)(${JSON.stringify(
129+
expression: `__WEBPACK_EXTERNAL_createRequire(${importMetaName}.url)(${JSON.stringify(
125130
moduleName
126131
)})${propertyAccess(moduleAndSpecifiers, 1)}`
127132
};
@@ -533,7 +538,8 @@ class ExternalModule extends Module {
533538
runtimeTemplate,
534539
moduleGraph,
535540
chunkGraph,
536-
runtime
541+
runtime,
542+
compilation
537543
) {
538544
switch (externalType) {
539545
case "this":
@@ -552,7 +558,7 @@ class ExternalModule extends Module {
552558
return getSourceForCommonJsExternal(request);
553559
case "node-commonjs":
554560
return this.buildInfo.module
555-
? getSourceForCommonJsExternalInNodeModule(request)
561+
? getSourceForCommonJsExternalInNodeModule(request, compilation)
556562
: getSourceForCommonJsExternal(request);
557563
case "amd":
558564
case "amd-require":
@@ -615,6 +621,7 @@ class ExternalModule extends Module {
615621
* @returns {CodeGenerationResult} result
616622
*/
617623
codeGeneration({
624+
compilation,
618625
runtimeTemplate,
619626
moduleGraph,
620627
chunkGraph,
@@ -651,7 +658,8 @@ class ExternalModule extends Module {
651658
runtimeTemplate,
652659
moduleGraph,
653660
chunkGraph,
654-
runtime
661+
runtime,
662+
compilation
655663
);
656664

657665
let sourceString = sourceData.expression;

lib/node/ReadFileCompileAsyncWasmPlugin.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class ReadFileCompileAsyncWasmPlugin {
4040
: globalWasmLoading;
4141
return wasmLoading === this._type;
4242
};
43+
const { importMetaName } = compilation.outputOptions;
4344
/**
4445
* @type {(path: string) => string}
4546
*/
@@ -48,7 +49,7 @@ class ReadFileCompileAsyncWasmPlugin {
4849
Template.asString([
4950
"Promise.all([import('fs'), import('url')]).then(([{ readFile }, { URL }]) => new Promise((resolve, reject) => {",
5051
Template.indent([
51-
`readFile(new URL(${path}, import.meta.url), (err, buffer) => {`,
52+
`readFile(new URL(${path}, ${importMetaName}.url), (err, buffer) => {`,
5253
Template.indent([
5354
"if (err) return reject(err);",
5455
"",

0 commit comments

Comments
 (0)