Skip to content

compilerOptions.paths not resolved when tsconfig extends from another package #3767

@matthewaptaylor

Description

@matthewaptaylor

ESBuild correctly follows the TS behaviour of the extends field in tsconfig.json looking into the exports field of a dependency, such as documented in #3058. For example this is resolved:

"extends": "@repo/tsconfig/base"

when the package.json of @repo/tsconfig exports ./base:

{
  "name": "@repo/tsconfig",
  "private": true,
  "version": "0.1.0",
  "exports": {
    "./base": "./base.json"
  }
}

However, if @repo/tsconfig/base includes a compilerOptions.paths property, these aliases cannot be resolved when building and the build fails. The only way for it to be resolved is to instead change the original extends field to a relative import, such as:

"extends": "../../tooling/typescript/base.json"

Paths should be resolved even when extending from a tsconfig from a package.

Please see this reproduction repo

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions