From 97a2f0ade3c506127cbb81bdac826d427131e315 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=81=E8=92=B8=E5=8D=81=E5=9B=9B?= <55919198+yuzheng14@users.noreply.github.com> Date: Thu, 21 May 2026 11:25:48 +0800 Subject: [PATCH] Revert "TURBOPACK: Fix subpath imports resolving to dependencies (#150)" This reverts commit e3b7a696dc74310051ca7a21fc9587464e669dc8. --- .../crates/turbopack-core/src/resolve/mod.rs | 18 +++++++----------- .../crates/turbopack-core/src/resolve/remap.rs | 2 +- .../imports/subpath-imports/input/index.js | 3 +-- .../input/node_modules/dep-in-nm/index.js | 1 - .../input/node_modules/dep-in-nm/package.json | 3 --- .../imports/subpath-imports/input/package.json | 4 +--- ...subpath-imports_input_index_1jr1_4n.js.map} | 0 ...rts_subpath-imports_input_index_1jr1_4n.js} | 4 ++-- ...imports_subpath-imports_input_14v1xaq._.js} | 17 +++-------------- ...rts_subpath-imports_input_14v1xaq._.js.map} | 3 +-- 10 files changed, 16 insertions(+), 39 deletions(-) delete mode 100644 turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/node_modules/dep-in-nm/index.js delete mode 100644 turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/node_modules/dep-in-nm/package.json rename turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/{0_9x_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_01i6qyk.js.map => 0_9x_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_1jr1_4n.js.map} (100%) rename turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/{0rv8_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_01i6qyk.js => 0rv8_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_1jr1_4n.js} (78%) rename turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/{1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_1p6gt_f._.js => 1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_14v1xaq._.js} (74%) rename turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/{1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_1p6gt_f._.js.map => 1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_14v1xaq._.js.map} (69%) diff --git a/turbopack/crates/turbopack-core/src/resolve/mod.rs b/turbopack/crates/turbopack-core/src/resolve/mod.rs index 08dfc88fd179..8ed91312cbfc 100644 --- a/turbopack/crates/turbopack-core/src/resolve/mod.rs +++ b/turbopack/crates/turbopack-core/src/resolve/mod.rs @@ -47,7 +47,7 @@ use crate::{ parse::{Request, stringify_data_uri}, pattern::{Pattern, PatternMatch, read_matches}, plugin::{AfterResolvePlugin, AfterResolvePluginCondition, BeforeResolvePlugin}, - remap::{ExportImport, ExportsField, ImportsField, ReplacedSubpathValueResult}, + remap::{ExportsField, ImportsField, ReplacedSubpathValueResult}, }, source::{OptionSource, Source, Sources}, }; @@ -2950,7 +2950,6 @@ async fn resolve_into_package( conditions, unspecified_conditions, query, - ExportImport::Export, ) .await?, ); @@ -3230,7 +3229,6 @@ async fn handle_exports_imports_field( conditions: &BTreeMap, unspecified_conditions: &ConditionValue, query: RcStr, - kind: ExportImport, ) -> Result> { let mut results = Vec::new(); let mut conditions_state = FxHashMap::default(); @@ -3265,13 +3263,12 @@ async fn handle_exports_imports_field( } in results { if let Some(result_path) = result_path.with_normalized_path() { - let request = - Pattern::Concatenation(vec![Pattern::Constant(rcstr!("./")), result_path.clone()]); - let request = match kind { - ExportImport::Export => request, - ExportImport::Import => Pattern::alternatives(vec![request, result_path.clone()]), - }; - let request = *Request::parse(request).to_resolved().await?; + let request = *Request::parse(Pattern::Concatenation(vec![ + Pattern::Constant(rcstr!("./")), + result_path.clone(), + ])) + .to_resolved() + .await?; let resolve_result = Box::pin(resolve_internal_inline( package_path.clone(), @@ -3373,7 +3370,6 @@ async fn resolve_package_internal_with_imports_field( conditions, unspecified_conditions, RcStr::default(), - ExportImport::Import, ) .await } diff --git a/turbopack/crates/turbopack-core/src/resolve/remap.rs b/turbopack/crates/turbopack-core/src/resolve/remap.rs index 317f37199af6..7d28032dd3fb 100644 --- a/turbopack/crates/turbopack-core/src/resolve/remap.rs +++ b/turbopack/crates/turbopack-core/src/resolve/remap.rs @@ -16,7 +16,7 @@ use crate::resolve::{ /// A small helper type to differentiate parsing exports and imports fields. #[derive(Copy, Clone)] -pub(crate) enum ExportImport { +enum ExportImport { Export, Import, } diff --git a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/index.js b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/index.js index 6605ceb49a2c..6c71b6f4fc99 100644 --- a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/index.js +++ b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/index.js @@ -1,8 +1,7 @@ import foo from '#foo' import dep from '#dep' -import depInNm from '#dep-in-nm' import pattern from '#pattern/pat.js' import conditionalImport from '#conditional' const conditionalRequire = require('#conditional') -console.log(foo, dep, depInNm, pattern, conditionalImport, conditionalRequire) +console.log(foo, dep, pattern, conditionalImport, conditionalRequire) diff --git a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/node_modules/dep-in-nm/index.js b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/node_modules/dep-in-nm/index.js deleted file mode 100644 index 504e794cf257..000000000000 --- a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/node_modules/dep-in-nm/index.js +++ /dev/null @@ -1 +0,0 @@ -export default 'dep-in-nm' diff --git a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/node_modules/dep-in-nm/package.json b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/node_modules/dep-in-nm/package.json deleted file mode 100644 index fc1409d0dc9f..000000000000 --- a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/node_modules/dep-in-nm/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "dep-in-nm" -} diff --git a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/package.json b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/package.json index 926fa26ccb22..2790b239a509 100644 --- a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/package.json +++ b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/package.json @@ -3,7 +3,6 @@ "imports": { "#foo": "./foo.js", "#dep": "dep", - "#dep-in-nm": "dep-in-nm", "#conditional": { "import": "./import.mjs", "require": "./require.cjs" @@ -11,7 +10,6 @@ "#pattern/*.js": "./*.js" }, "dependencies": { - "dep": "./dep", - "dep-in-nm": "dep-in-nm" + "dep": "./dep" } } diff --git a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/0_9x_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_01i6qyk.js.map b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/0_9x_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_1jr1_4n.js.map similarity index 100% rename from turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/0_9x_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_01i6qyk.js.map rename to turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/0_9x_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_1jr1_4n.js.map diff --git a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/0rv8_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_01i6qyk.js b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/0rv8_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_1jr1_4n.js similarity index 78% rename from turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/0rv8_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_01i6qyk.js rename to turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/0rv8_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_1jr1_4n.js index 1ce5833ba658..7721b74569c3 100644 --- a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/0rv8_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_01i6qyk.js +++ b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/0rv8_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_1jr1_4n.js @@ -1,5 +1,5 @@ (globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push([ - "output/0rv8_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_01i6qyk.js", - {"otherChunks":["output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_1p6gt_f._.js"],"runtimeModuleIds":["[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/index.js [test] (ecmascript)"]} + "output/0rv8_turbopack-tests_tests_snapshot_imports_subpath-imports_input_index_1jr1_4n.js", + {"otherChunks":["output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_14v1xaq._.js"],"runtimeModuleIds":["[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/index.js [test] (ecmascript)"]} ]); // Dummy runtime \ No newline at end of file diff --git a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_1p6gt_f._.js b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_14v1xaq._.js similarity index 74% rename from turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_1p6gt_f._.js rename to turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_14v1xaq._.js index eb8e044aec5b..efcac87838b3 100644 --- a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_1p6gt_f._.js +++ b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_14v1xaq._.js @@ -1,4 +1,4 @@ -(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push(["output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_1p6gt_f._.js", +(globalThis["TURBOPACK"] || (globalThis["TURBOPACK"] = [])).push(["output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_14v1xaq._.js", "[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/foo.js [test] (ecmascript)", ((__turbopack_context__) => { "use strict"; @@ -45,26 +45,15 @@ module.exports = 'require'; __turbopack_context__.s([]); var __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$foo$2e$js__$5b$test$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/foo.js [test] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$dep$2f$index$2e$js__$5b$test$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/dep/index.js [test] (ecmascript)"); -var __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$node_modules$2f$dep$2d$in$2d$nm$2f$index$2e$js__$5b$test$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/node_modules/dep-in-nm/index.js [test] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$pat$2e$js__$5b$test$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/pat.js [test] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$import$2e$mjs__$5b$test$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/import.mjs [test] (ecmascript)"); ; ; ; ; -; const conditionalRequire = __turbopack_context__.r("[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/require.cjs [test] (ecmascript)"); -console.log(__TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$foo$2e$js__$5b$test$5d$__$28$ecmascript$29$__["default"], __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$dep$2f$index$2e$js__$5b$test$5d$__$28$ecmascript$29$__["default"], __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$node_modules$2f$dep$2d$in$2d$nm$2f$index$2e$js__$5b$test$5d$__$28$ecmascript$29$__["default"], __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$pat$2e$js__$5b$test$5d$__$28$ecmascript$29$__["default"], __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$import$2e$mjs__$5b$test$5d$__$28$ecmascript$29$__["default"], conditionalRequire); -}), -"[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/node_modules/dep-in-nm/index.js [test] (ecmascript)", ((__turbopack_context__) => { -"use strict"; - -__turbopack_context__.s([ - "default", - ()=>__TURBOPACK__default__export__ -]); -const __TURBOPACK__default__export__ = 'dep-in-nm'; +console.log(__TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$foo$2e$js__$5b$test$5d$__$28$ecmascript$29$__["default"], __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$dep$2f$index$2e$js__$5b$test$5d$__$28$ecmascript$29$__["default"], __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$pat$2e$js__$5b$test$5d$__$28$ecmascript$29$__["default"], __TURBOPACK__imported__module__$5b$project$5d2f$turbopack$2f$crates$2f$turbopack$2d$tests$2f$tests$2f$snapshot$2f$imports$2f$subpath$2d$imports$2f$input$2f$import$2e$mjs__$5b$test$5d$__$28$ecmascript$29$__["default"], conditionalRequire); }), ]); -//# sourceMappingURL=1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_1p6gt_f._.js.map \ No newline at end of file +//# sourceMappingURL=1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_14v1xaq._.js.map \ No newline at end of file diff --git a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_1p6gt_f._.js.map b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_14v1xaq._.js.map similarity index 69% rename from turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_1p6gt_f._.js.map rename to turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_14v1xaq._.js.map index 00e00445abd9..b250641714f3 100644 --- a/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_1p6gt_f._.js.map +++ b/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/output/1do3_crates_turbopack-tests_tests_snapshot_imports_subpath-imports_input_14v1xaq._.js.map @@ -7,6 +7,5 @@ {"offset": {"line": 22, "column": 0}, "map": {"version":3,"sources":["turbopack:///[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/pat.js"],"sourcesContent":["export default 'pat'\n"],"names":[],"mappings":";;;;uCAAe"}}, {"offset": {"line": 31, "column": 0}, "map": {"version":3,"sources":["turbopack:///[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/import.mjs"],"sourcesContent":["export default 'import'\n"],"names":[],"mappings":";;;;uCAAe"}}, {"offset": {"line": 39, "column": 0}, "map": {"version":3,"sources":["turbopack:///[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/require.cjs"],"sourcesContent":["module.exports = 'require'\n"],"names":["module","exports"],"mappings":"AAAAA,OAAOC,OAAO,GAAG"}}, - {"offset": {"line": 44, "column": 0}, "map": {"version":3,"sources":["turbopack:///[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/index.js"],"sourcesContent":["import foo from '#foo'\nimport dep from '#dep'\nimport depInNm from '#dep-in-nm'\nimport pattern from '#pattern/pat.js'\nimport conditionalImport from '#conditional'\nconst conditionalRequire = require('#conditional')\n\nconsole.log(foo, dep, depInNm, pattern, conditionalImport, conditionalRequire)\n"],"names":["conditionalRequire","console","log"],"mappings":";AAAA;AACA;AACA;AACA;AACA;;;;;;AACA,MAAMA;AAENC,QAAQC,GAAG,CAAC,oNAAG,EAAE,6NAAG,EAAE,yPAAO,EAAE,oNAAO,EAAE,wNAAiB,EAAEF"}}, - {"offset": {"line": 61, "column": 0}, "map": {"version":3,"sources":["turbopack:///[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/node_modules/dep-in-nm/index.js"],"sourcesContent":["export default 'dep-in-nm'\n"],"names":[],"mappings":";;;;uCAAe","ignoreList":[0]}}] + {"offset": {"line": 44, "column": 0}, "map": {"version":3,"sources":["turbopack:///[project]/turbopack/crates/turbopack-tests/tests/snapshot/imports/subpath-imports/input/index.js"],"sourcesContent":["import foo from '#foo'\nimport dep from '#dep'\nimport pattern from '#pattern/pat.js'\nimport conditionalImport from '#conditional'\nconst conditionalRequire = require('#conditional')\n\nconsole.log(foo, dep, pattern, conditionalImport, conditionalRequire)\n"],"names":["conditionalRequire","console","log"],"mappings":";AAAA;AACA;AACA;AACA;;;;;AACA,MAAMA;AAENC,QAAQC,GAAG,CAAC,oNAAG,EAAE,6NAAG,EAAE,oNAAO,EAAE,wNAAiB,EAAEF"}}] } \ No newline at end of file