Skip to content

Commit a6febec

Browse files
committed
fix: apply conditionNames: ['node', 'import'] when resolving tsconfig extends (#869)
fixes #857
1 parent 5b1ae7f commit a6febec

File tree

8 files changed

+56
-0
lines changed

8 files changed

+56
-0
lines changed

fixtures/tsconfig/cases/extends-esm/node_modules/@org/package/package.json

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

fixtures/tsconfig/cases/extends-esm/node_modules/@org/package/src/tsconfig.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"extends": ["@org/package"],
3+
"compilerOptions": {
4+
}
5+
}

fixtures/tsconfig/cases/extends-main/node_modules/@org/package/package.json

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

fixtures/tsconfig/cases/extends-main/node_modules/@org/package/src/tsconfig.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"extends": ["@org/package"],
3+
"compilerOptions": {
4+
}
5+
}

src/tests/tsconfig_extends.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,3 +196,24 @@ fn test_extend_tsconfig_no_override_existing() {
196196
// Parent's baseUrl should be inherited (with proper path resolution)
197197
assert!(compiler_options.base_url.is_some());
198198
}
199+
200+
#[test]
201+
fn test_extend_package() {
202+
let f = super::fixture_root().join("tsconfig/cases");
203+
204+
let data = ["extends-esm", "extends-main"];
205+
206+
let resolver = Resolver::new(ResolveOptions {
207+
tsconfig: Some(TsconfigDiscovery::Manual(TsconfigOptions {
208+
config_file: f.join("tsconfig.json"),
209+
references: TsconfigReferences::Auto,
210+
})),
211+
..ResolveOptions::default()
212+
});
213+
214+
for dir in data {
215+
let resolution = resolver.resolve_tsconfig(f.join(dir)).expect("resolved");
216+
let compiler_options = &resolution.compiler_options;
217+
assert_eq!(compiler_options.target, Some("ES2020".to_string()));
218+
}
219+
}

src/tsconfig_resolver.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,7 @@ impl<Fs: FileSystem> ResolverGeneric<Fs> {
309309
_ => self
310310
.clone_with_options(ResolveOptions {
311311
tsconfig: None,
312+
condition_names: vec!["node".into(), "import".into()],
312313
extensions: vec![".json".into()],
313314
main_files: vec!["tsconfig".into()],
314315
#[cfg(feature = "yarn_pnp")]

0 commit comments

Comments
 (0)