microsoft / microsoft/TypeScript

subpath imports should play well with project references

Offen
#62,880 1 Kommentar 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

@andrewbranch arbeitet bereits daran.

Seit 12.12.2025.

Needs Investigation
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

🔎 Search Terms

tsconfig, resolve, package, imports, module, references

🕗 Version & Regression Information

5.9.3

TS project refererences in combination with subpath imports mapping to installed packages break Node.js projects.

⏯ Playground Link

No response

💻 Code
// @scope/alice/src/index.ts
import "@scope/bob/module"; // ok
import "#bob/module"; // breaks
// @scope/alice/tsconfig.json
{
  "files": [],
  "include": [],
  "references": { "path": "./tsconfig.other.json" }
}
// @scope/alice/tsconfig.other.json
// appears in the error message, but its content should be irrelevant, given
// that @scope/bob/module imports work.
{
  "compilerOptions": 
  {
    "composite": true,
    // ...
  },
  "files": [
    // whatever, except for files from node_modules, therefore excluding @scope/bob
  ],
}
{
  "// package.json": "",
  "name": "@scope/alice",
  "type": "module",
  "imports": {
    "#bob/*": "@scope/bob/*"
  },
  "dependencies": {
    "@scope/bob": "*"
  },
  "// ...": ""
}
tsc --build --noEmit
🙁 Actual behavior

An error of this kind:

src/index.ts:3:8 - error TS6307: File '/absolute/path/to/mono-repo/packages/bob/src/module/index.ts' is not listed within the file list of project '/absolute/path/to/mono-repo/packages/alice/tsconfig.other.json'. Projects must list all files or use an 'include' pattern.
  File is ECMAScript module because '/absolute/path/to/mono-repo/packages/bob/package.json' has field "type" with value "module"

import "#bob/module"; // breaks
       ~~~~~~~~~~~~~
🙂 Expected behavior

Should build just fine, since subpath imports are nothing but a string rewriting mechanism (think: URL shortener). TSC should recognize that #bob/* refers to the modules in the external package @scope/bob/* from within node_modules, rather than treating it as project internal.

Additional information about the issue

This can't be reproduced on the playground. I am willing to setup a repro repo, if the code in this issue is not sufficient to figure out what's going on.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.