dividab / tsconfig-paths

Load node modules according to tsconfig paths, in run-time or via API.
MIT License
1.82k stars 104 forks source link

Allow missing baseUrl for TS 4.1+ #143

Closed jakebailey closed 2 years ago

jakebailey commented 4 years ago

TypeScript 4.1+ support paths without baseUrl. See:

Effectively, the paths become relative to the tsconfig.json file.

I'm testing a project with the new beta and baseUrl removed to get better auto-completion, but it appears this library (which is used by tsconfig-paths-webpack-plugin) requires baseUrl to be specified. I've even tried in the plugin to override baseUrl with . (which is pretty much what TS does), but since the plugin loads the config using this library and this library throws an error, the plugin doesn't get to the point where it could override the config.

Perhaps if the config has no baseUrl, it could be treated as a baseUrl of '.'? Or, change the result to allow undefined locations (and update the plugin)?

2022 EDIT: since it's been a long time and this hasn't been fixed, I had written my own little function to do everything needed for path mapping: https://github.com/microsoft/pyright/blob/169c6089b9914870c43622743c75844657cd9d70/build/lib/webpack.js#L90

jakebailey commented 4 years ago

TS 4.1 has been released, with the implicit baseUrl. I've worked around it for now by using a second duplicate config file with baseUrl set.

aleclarson commented 2 years ago

If anyone stumbles on this and wants to help, please provide a minimal reproduction of tsconfig-paths failing when baseUrl is undefined. Thanks!

marvinroger commented 2 years ago

Hi @aleclarson, thanks for taking a look at this issue.

There you go: https://github.com/marvinroger/tsconfig-paths-baseurl-reproduction

aleclarson commented 2 years ago

@marvinroger #208