TypeStrong / ts-node

TypeScript execution and REPL for node.js
https://typestrong.org/ts-node
MIT License
12.75k stars 529 forks source link

ts-node doesn't resolve extended tsconfigs if they originate from the export fields of packages #2112

Open ItamarGronich opened 4 months ago

ItamarGronich commented 4 months ago

Search Terms

exports, package.json, tsconfig, extends, base config

Description

While tsc works and resolves the config files from the exports fields of the packages, ts-node fails.

Expected Behavior

ts-node finds and reads extended configs from an external package when they're defined in the packageJson.exports field.

Actual Behavior

ts-node fails to parse the config and exits with an error.

Minimal reproduction

Repro: https://github.com/TypeStrong/ts-node-repros/pull/39

This setup includes two packages @tsnode-exports/main a regular package and a @tsnode-exports/ts-config holding just the base tsconfig file.

in package ts-config the tsconfig file is in some internal folder and is exposed via the package.json field: exports

In package main we have a tsconfig with an extends that points to that tsconfig in the ts-config package.

Steps to reproduce the problem

  1. clone and checkout branch
  2. make sure you got the right node version (v20.11.0)
  3. run npm ci
  4. See how tsc builds successfully by running npm run tsc
  5. See how ts-node fails to build by running npm run ts-node

Specifications