这是indexloc提供的服务,不要输入任何密码
Skip to content

Match TS's extends resolution algorithm #4754

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
May 1, 2023
Merged

Match TS's extends resolution algorithm #4754

merged 5 commits into from
May 1, 2023

Conversation

jridgewell
Copy link
Contributor

@jridgewell jridgewell commented Apr 28, 2023

Description

Implements TS's extends resolution algorithm. In particular, there are a few cases that need to be properly handled:

  • Relative paths: if the file doesn't exist and the path doesn't end in .json, try again with .json extension
  • Windows paths: same thing
  • Posix paths: same thing
  • . and .. (but not ./ nor ../ because they're relative paths): join with /tsconfig.json before looking up
  • foo module import: join with /tsconfig.json before looking up

Testing Instructions

Snapshot tests

Fixes WEB-963
fix #2682

@jridgewell jridgewell requested a review from a team as a code owner April 28, 2023 22:55
@vercel
Copy link

vercel bot commented Apr 28, 2023

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
examples-svelte-web 🔄 Building (Inspect) May 1, 2023 8:33am
10 Ignored Deployments
Name Status Preview Comments Updated (UTC)
examples-basic-web ⬜️ Ignored (Inspect) May 1, 2023 8:33am
examples-cra-web ⬜️ Ignored (Inspect) May 1, 2023 8:33am
examples-designsystem-docs ⬜️ Ignored (Inspect) May 1, 2023 8:33am
examples-gatsby-web ⬜️ Ignored (Inspect) May 1, 2023 8:33am
examples-kitchensink-blog ⬜️ Ignored (Inspect) May 1, 2023 8:33am
examples-native-web ⬜️ Ignored (Inspect) May 1, 2023 8:33am
examples-nonmonorepo ⬜️ Ignored (Inspect) May 1, 2023 8:33am
examples-tailwind-web ⬜️ Ignored (Inspect) May 1, 2023 8:33am
examples-vite-web ⬜️ Ignored (Inspect) May 1, 2023 8:33am
turbo-site ⬜️ Ignored (Inspect) Visit Preview May 1, 2023 8:33am

@github-actions
Copy link
Contributor

✅ This change can build next-swc

@github-actions
Copy link
Contributor

github-actions bot commented Apr 28, 2023

🟢 CI successful 🟢

Thanks

@jridgewell jridgewell requested a review from a team as a code owner April 29, 2023 01:30
@turbo-orchestrator turbo-orchestrator bot added area: ci area: docs Improvements or additions to documentation pkg: create-turbo Issues related to npx create-turbo pkg: turbo-codemod pkg: turbo-eslint eslint-config-turbo and eslint-plugin-turbo pkg: turbo-ignore packages/turbo-ignore team: turborepo labels Apr 29, 2023
@jridgewell jridgewell force-pushed the jrl-tsconfig-extends branch from 6ba43e7 to a397b6f Compare April 29, 2023 01:31
@turbo-orchestrator turbo-orchestrator bot removed area: docs Improvements or additions to documentation pkg: create-turbo Issues related to npx create-turbo pkg: turbo-ignore packages/turbo-ignore pkg: turbo-eslint eslint-config-turbo and eslint-plugin-turbo area: ci team: turborepo pkg: turbo-codemod labels Apr 29, 2023
sokra and others added 2 commits May 1, 2023 10:32
Co-authored-by: Alex Kirszenberg <alex.kirszenberg@vercel.com>
@sokra sokra enabled auto-merge (squash) May 1, 2023 08:33
@sokra sokra merged commit f9c4e39 into main May 1, 2023
@sokra sokra deleted the jrl-tsconfig-extends branch May 1, 2023 08:47
sokra added a commit to vercel/next.js that referenced this pull request May 1, 2023
See vercel/turborepo#4598

### Turbopack changes

* vercel/turborepo#4754 <!-- Justin Ridgewell -
Match TS's extends resolution algorithm -->
* vercel/turborepo#4598 <!-- Alex Kirszenberg - More
fluent GraphTraversal API -->

---------

Co-authored-by: Tobias Koppers <tobias.koppers@googlemail.com>
sokra pushed a commit that referenced this pull request May 2, 2023
In #4754, I screwed up the resolution logic for configs that reference
another config inside a node module. In it, I incorrectly joined
`/tsconfig.json` before performing any lookup, because I thought the
joining was happening in the `combinePaths` in
https://github.com/microsoft/TypeScript/blob/611a912d/src/compiler/commandLineParser.ts#L3315.
But, that combine has no real affect, it immediately gets stripped in a
call to `getDirectoryPath` in
https://github.com/microsoft/TypeScript/blob/611a912d/src/compiler/moduleNameResolver.ts#LL1703C93-L1703.

Instead, it performs a basic `node_module` lookup using the input module
name, and even tries to load the file referenced at that location (eg,
it's a `extends: 'foo/tsconfig.json'`). If that fails, then it combines
with an implied `/tsconfig` the same way a `/index` is appended when
doing `require('./directory')`.

Fixes WEB-974
ForsakenHarmony pushed a commit to vercel/next.js that referenced this pull request Jul 25, 2024
### Description

Implements TS's `extends` [resolution
algorithm](https://github.com/microsoft/TypeScript/blob/611a912d/src/compiler/commandLineParser.ts#L3294-L3326).
In particular, there are a few cases that need to be properly handled:

- Relative paths: if the file doesn't exist and the path doesn't end in
`.json`, try again with `.json` extension
- Windows paths: same thing
- Posix paths: same thing
- `.` and `..` (but not `./` nor `../` because they're relative paths):
join with `/tsconfig.json` before looking up
- `foo` module import: join with `/tsconfig.json` before looking up

### Testing Instructions

Snapshot tests

Fixes WEB-963
fix vercel/turborepo#2682

---------

Co-authored-by: Tobias Koppers <tobias.koppers@googlemail.com>
Co-authored-by: Alex Kirszenberg <alex.kirszenberg@vercel.com>
ForsakenHarmony pushed a commit to vercel/next.js that referenced this pull request Jul 29, 2024
### Description

Implements TS's `extends` [resolution
algorithm](https://github.com/microsoft/TypeScript/blob/611a912d/src/compiler/commandLineParser.ts#L3294-L3326).
In particular, there are a few cases that need to be properly handled:

- Relative paths: if the file doesn't exist and the path doesn't end in
`.json`, try again with `.json` extension
- Windows paths: same thing
- Posix paths: same thing
- `.` and `..` (but not `./` nor `../` because they're relative paths):
join with `/tsconfig.json` before looking up
- `foo` module import: join with `/tsconfig.json` before looking up

### Testing Instructions

Snapshot tests

Fixes WEB-963
fix vercel/turborepo#2682

---------

Co-authored-by: Tobias Koppers <tobias.koppers@googlemail.com>
Co-authored-by: Alex Kirszenberg <alex.kirszenberg@vercel.com>
ForsakenHarmony pushed a commit to vercel/next.js that referenced this pull request Aug 1, 2024
### Description

Implements TS's `extends` [resolution
algorithm](https://github.com/microsoft/TypeScript/blob/611a912d/src/compiler/commandLineParser.ts#L3294-L3326).
In particular, there are a few cases that need to be properly handled:

- Relative paths: if the file doesn't exist and the path doesn't end in
`.json`, try again with `.json` extension
- Windows paths: same thing
- Posix paths: same thing
- `.` and `..` (but not `./` nor `../` because they're relative paths):
join with `/tsconfig.json` before looking up
- `foo` module import: join with `/tsconfig.json` before looking up

### Testing Instructions

Snapshot tests

Fixes WEB-963
fix vercel/turborepo#2682

---------

Co-authored-by: Tobias Koppers <tobias.koppers@googlemail.com>
Co-authored-by: Alex Kirszenberg <alex.kirszenberg@vercel.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[WEB-963] [turbopack] tsconfig extends field doesn't resolve
3 participants