Skip to content
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

Ability to extend compilerOptions's paths config #44589

Open
xiejay97 opened this issue Jun 15, 2021 · 15 comments
Open

Ability to extend compilerOptions's paths config #44589

xiejay97 opened this issue Jun 15, 2021 · 15 comments
Labels
Awaiting More Feedback This means we'd like to hear from more people who would be helped by this feature Suggestion An idea for TypeScript

Comments

@xiejay97
Copy link

Suggestion

I have a tsconfig.base.json file for the monorepo, it defined paths that all project can use

{
  "compileOnSave": false,
  "compilerOptions": {
    ```
    "paths": {
      "@aegis/ui": ["libs/ui/src/index.ts"],
      "@aegis/ui/*": ["libs/ui/src/*"],
      "@aegis/shared": ["libs/shared/src/index.ts"],
      "@aegis/shared/*": ["libs/shared/src/*"]
    }
  },
  "exclude": ["node_modules", "tmp"]
}

Each project has own tsconfig.json, also defined paths that only for itself

{
  "extends": "../../tsconfig.base.json",
  "compilerOptions": {
    "paths": {
      "@environment": ["src/environments/environment.ts"]
    }
  },
  "files": [],
  "include": [],
  "references": [
    {
      "path": "./tsconfig.app.json"
    },
    {
      "path": "./tsconfig.spec.json"
    },
    {
      "path": "./tsconfig.editor.json"
    }
  ]
}

Unfortunately, the paths would be overwritten.

I have to add tsconfig.base.json paths item to each project.

So, it's necessary to provide a solution for this case.

🔍 Search Terms

  • compilerOptions paths extends label:Suggestion

List of keywords you searched for before creating this issue. Write them down here so that others can find this suggestion more easily and help provide feedback.

@RyanCavanaugh RyanCavanaugh added Awaiting More Feedback This means we'd like to hear from more people who would be helped by this feature Suggestion An idea for TypeScript labels Jun 15, 2021
@WORMSS
Copy link

WORMSS commented Sep 10, 2021

There are a number of times something like "pathsAppend": [], "libsAppend": [], "referencesAppend": [], "includesAppend": []
Where we want to ADD to what ever the default/extended options are, rather than replace/override.

Libs being the most annoying even in 'standard' circumstances without extending another tsconfig, but the fact that 'adding' a single lib, REMOVES ALL the default ones added by the "target" setting. And you can't even get a definitive list of what those libs were..

@ArZargaryan
Copy link

@xiejay97 Hi. Did you find a solution or workaround?

@xiejay97
Copy link
Author

@xiejay97 Hi. Did you find a solution or workaround?

@ArZargaryan There is no solution for me yet 😹

@harryyaprakov
Copy link

+1 This is something very important, what is a workaround for this?

@toantd90
Copy link

toantd90 commented May 2, 2023

+1. That would be helpful if we could extend the paths configuration.

@jugglingcats
Copy link

It seems to me that since the paths are name/value, a simple merge should work, eg:

const new_paths={...basePaths, ...localPaths}

The semantics seem quite clear - use the paths in the base config (with resolution relative to that tsconfig file), and merge/overwrite any local ones (relative to the local tsconfig file).

@pmayur
Copy link

pmayur commented Oct 10, 2023

It seems to me that since the paths are name/value, a simple merge should work, eg:

const new_paths={...basePaths, ...localPaths}

@jugglingcats where should these be made?

@JorritKeijzer
Copy link

+1 Would really fix stuff in big monorepos

@beautyfree

This comment was marked as off-topic.

@kosiakMD
Copy link

+1 same issue! NX + Remix + NestJS - need local and common paths

@IARI

This comment was marked as off-topic.

@dannyfranca

This comment was marked as off-topic.

@ericlee33

This comment was marked as off-topic.

@dben89x
Copy link

dben89x commented Feb 8, 2024

Seems this issue was addressed and closed back in 2017 on #14527 due to the suggestion being "more confusing since paths are order dependent and the paths are relative to the baseUrl, and there are two in this case". Which strikes me as an obnoxiously arrogant and dismissive take. Especially considering this can easily be resolved by simply either appending or prepending the base config, and scoping the new paths to either the current config's baseUrl or the base's baseUrl. And considering the increasing need for composite configs with monorepos, this is no longer an edge case (if you could ever argue it was one). Seems like an anti-pattern to suggest we just repeat ourselves in multiple configs.

@dannyfranca
Copy link

Folks, there has been an ongoing proposal since November 2023. Let's contribute to the discussion to help get it going: #56436

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Awaiting More Feedback This means we'd like to hear from more people who would be helped by this feature Suggestion An idea for TypeScript
Projects
None yet
Development

No branches or pull requests