From 336715f878637e27f1fe0432255addfca1260a7c Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Mon, 13 Jul 2020 17:46:50 +0200 Subject: [PATCH] Only apply default js extensions when using a JS dependencyType --- lib/config/defaults.js | 14 +- test/Defaults.unittest.js | 353 ++++++++++++++++++++++++++++++++++---- 2 files changed, 328 insertions(+), 39 deletions(-) diff --git a/lib/config/defaults.js b/lib/config/defaults.js index 7a7113c02..72951c1da 100644 --- a/lib/config/defaults.js +++ b/lib/config/defaults.js @@ -691,9 +691,9 @@ const getResolveDefaults = ({ break; } - const extensions = []; - if (mjs) extensions.push(".mjs"); - extensions.push(".js", ".json", ".wasm"); + const jsExtensions = []; + if (mjs) jsExtensions.push(".mjs"); + jsExtensions.push(".js", ".json", ".wasm"); /** @type {function(): ResolveOptions} */ const cjsDeps = () => ({ @@ -701,7 +701,8 @@ const getResolveDefaults = ({ mainFields: webTarget ? ["browser", "module", "..."] : ["module", "..."], conditionNames: webTarget ? ["require", "module", "browser", "..."] - : ["require", "module", "..."] + : ["require", "module", "..."], + extensions: [...jsExtensions] }); /** @type {function(): ResolveOptions} */ const esmDeps = () => ({ @@ -709,7 +710,8 @@ const getResolveDefaults = ({ mainFields: webTarget ? ["browser", "module", "..."] : ["module", "..."], conditionNames: webTarget ? ["import", "module", "browser", "..."] - : ["import", "module", "..."] + : ["import", "module", "..."], + extensions: [...jsExtensions] }); /** @type {ResolveOptions} */ @@ -717,8 +719,8 @@ const getResolveDefaults = ({ cache, modules: ["node_modules"], conditionNames: conditions, - extensions, mainFiles: ["index"], + extensions: [], aliasFields: [], exportsFields: ["exports"], roots: [context], diff --git a/test/Defaults.unittest.js b/test/Defaults.unittest.js index 664ef8303..ed5c08fe4 100644 --- a/test/Defaults.unittest.js +++ b/test/Defaults.unittest.js @@ -238,35 +238,152 @@ describe("Defaults", () => { "recordsInputPath": false, "recordsOutputPath": false, "resolve": Object { - "aliasFields": Array [ - "browser", - ], + "aliasFields": Array [], "byDependency": Object { "amd": Object { + "aliasFields": Array [ + "browser", + ], "conditionNames": Array [ "require", "module", + "browser", + "...", + ], + "extensions": Array [ + ".js", + ".json", + ".wasm", + ], + "mainFields": Array [ + "browser", + "module", "...", ], }, "commonjs": Object { + "aliasFields": Array [ + "browser", + ], "conditionNames": Array [ "require", "module", + "browser", + "...", + ], + "extensions": Array [ + ".js", + ".json", + ".wasm", + ], + "mainFields": Array [ + "browser", + "module", "...", ], }, "esm": Object { + "aliasFields": Array [ + "browser", + ], "conditionNames": Array [ "import", "module", + "browser", + "...", + ], + "extensions": Array [ + ".js", + ".json", + ".wasm", + ], + "mainFields": Array [ + "browser", + "module", + "...", + ], + }, + "loader": Object { + "aliasFields": Array [ + "browser", + ], + "conditionNames": Array [ + "require", + "module", + "browser", + "...", + ], + "extensions": Array [ + ".js", + ".json", + ".wasm", + ], + "mainFields": Array [ + "browser", + "module", + "...", + ], + }, + "undefined": Object { + "aliasFields": Array [ + "browser", + ], + "conditionNames": Array [ + "require", + "module", + "browser", + "...", + ], + "extensions": Array [ + ".js", + ".json", + ".wasm", + ], + "mainFields": Array [ + "browser", + "module", + "...", + ], + }, + "unknown": Object { + "aliasFields": Array [ + "browser", + ], + "conditionNames": Array [ + "require", + "module", + "browser", + "...", + ], + "extensions": Array [ + ".js", + ".json", + ".wasm", + ], + "mainFields": Array [ + "browser", + "module", "...", ], }, "wasm": Object { + "aliasFields": Array [ + "browser", + ], "conditionNames": Array [ "import", "module", + "browser", + "...", + ], + "extensions": Array [ + ".js", + ".json", + ".wasm", + ], + "mainFields": Array [ + "browser", + "module", "...", ], }, @@ -275,19 +392,12 @@ describe("Defaults", () => { "conditionNames": Array [ "webpack", "production", - "browser", ], "exportsFields": Array [ "exports", ], - "extensions": Array [ - ".js", - ".json", - ".wasm", - ], + "extensions": Array [], "mainFields": Array [ - "browser", - "module", "main", ], "mainFiles": Array [ @@ -557,7 +667,19 @@ describe("Defaults", () => { + }, + ], @@ ... @@ - + ".mjs", + + ".mjs", + @@ ... @@ + + ".mjs", + @@ ... @@ + + ".mjs", + @@ ... @@ + + ".mjs", + @@ ... @@ + + ".mjs", + @@ ... @@ + + ".mjs", + @@ ... @@ + + ".mjs", `) ); test("output module", { experiments: { outputModule: true } }, e => @@ -708,16 +830,71 @@ describe("Defaults", () => { - "globalObject": "window", + "globalObject": "global", @@ ... @@ - - "aliasFields": Array [ - - "browser", - - ], - + "aliasFields": Array [], + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", @@ ... @@ - - "browser", + "node", @@ ... @@ - - "browser", - @@ ... @@ - "target": "web", + "target": "node", `) @@ -753,17 +930,72 @@ describe("Defaults", () => { - "globalObject": "window", + "globalObject": "global", @@ ... @@ - - "aliasFields": Array [ - - "browser", - - ], - + "aliasFields": Array [], + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", @@ ... @@ - - "browser", + "node", + "electron", @@ ... @@ - - "browser", - @@ ... @@ - "target": "web", + "target": "electron-main", `) @@ -777,17 +1009,72 @@ describe("Defaults", () => { - "globalObject": "window", + "globalObject": "self", @@ ... @@ - - "aliasFields": Array [ - - "browser", - - ], - + "aliasFields": Array [], + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", + @@ ... @@ + - "aliasFields": Array [ + - "browser", + - ], + + "aliasFields": Array [], + @@ ... @@ + - "browser", + @@ ... @@ + - "browser", @@ ... @@ - - "browser", + "node", + "electron", @@ ... @@ - - "browser", - @@ ... @@ - "target": "web", + "target": "electron-preload", `)