ts-node doesn't resolve extended tsconfigs if they originate from the export fields of packages
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
- clone and checkout branch
- make sure you got the right node version (
v20.11.0) - run
npm ci - See how
tscbuilds successfully by runningnpm run tsc - See how
ts-nodefails to build by runningnpm run ts-node
Specifications
- ts-node version: v10.9.2
- node version: v20.11.0
- TypeScript version: v5.4.2
- tsconfig.json, if you're using one: (in repro)
- package.json: in repro
- Operating system and version: MacOS Sonoma 14.3.1
This is indeed problematic. Any project relying on ts-node, such as Nx, breaks in a pretty opaque way when working in a context where the tsconfig.json extends a config exposed through a dep's exports path, which is what we do at work for our centralized configs package.
Worried that this issue has been unacknowledged for 6+ months