Only apply default js extensions when using a JS dependencyType

This commit is contained in:
Tobias Koppers 2020-07-13 17:46:50 +02:00
parent 565724a045
commit 336715f878
2 changed files with 328 additions and 39 deletions

View File

@ -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],

View File

@ -238,47 +238,17 @@ describe("Defaults", () => {
"recordsInputPath": false,
"recordsOutputPath": false,
"resolve": Object {
"aliasFields": Array [],
"byDependency": Object {
"amd": Object {
"aliasFields": Array [
"browser",
],
"byDependency": Object {
"amd": Object {
"conditionNames": Array [
"require",
"module",
"...",
],
},
"commonjs": Object {
"conditionNames": Array [
"require",
"module",
"...",
],
},
"esm": Object {
"conditionNames": Array [
"import",
"module",
"...",
],
},
"wasm": Object {
"conditionNames": Array [
"import",
"module",
"...",
],
},
},
"cache": false,
"conditionNames": Array [
"webpack",
"production",
"browser",
],
"exportsFields": Array [
"exports",
"...",
],
"extensions": Array [
".js",
@ -288,6 +258,146 @@ describe("Defaults", () => {
"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",
"...",
],
},
},
"cache": false,
"conditionNames": Array [
"webpack",
"production",
],
"exportsFields": Array [
"exports",
],
"extensions": Array [],
"mainFields": Array [
"main",
],
"mainFiles": Array [
@ -558,6 +668,18 @@ describe("Defaults", () => {
+ ],
@@ ... @@
+ ".mjs",
@@ ... @@
+ ".mjs",
@@ ... @@
+ ".mjs",
@@ ... @@
+ ".mjs",
@@ ... @@
+ ".mjs",
@@ ... @@
+ ".mjs",
@@ ... @@
+ ".mjs",
`)
);
test("output module", { experiments: { outputModule: true } }, e =>
@ -714,10 +836,65 @@ describe("Defaults", () => {
+ "aliasFields": Array [],
@@ ... @@
- "browser",
+ "node",
@@ ... @@
- "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",
@@ ... @@
+ "node",
@@ ... @@
- "target": "web",
+ "target": "node",
`)
@ -759,11 +936,66 @@ describe("Defaults", () => {
+ "aliasFields": Array [],
@@ ... @@
- "browser",
+ "node",
+ "electron",
@@ ... @@
- "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",
@@ ... @@
+ "node",
+ "electron",
@@ ... @@
- "target": "web",
+ "target": "electron-main",
`)
@ -783,11 +1015,66 @@ describe("Defaults", () => {
+ "aliasFields": Array [],
@@ ... @@
- "browser",
+ "node",
+ "electron",
@@ ... @@
- "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",
@@ ... @@
+ "node",
+ "electron",
@@ ... @@
- "target": "web",
+ "target": "electron-preload",
`)