Add support for relative paths from extended tsconfig
alSergey opened this issue · comments
Alekhin Sergey commented
Hello, thanks for the cool library. I'm using nuxt and have encountered an issue where when using the library I'm getting incorrect relative paths returned from tsconfig.
Example
FIle System
tsconfig.json
{
"extends": "./.nuxt/tsconfig.json"
}
.nuxt/tsconfig.json
{
"compilerOptions": {
"paths": {
"~": [
".."
],
"assets": [
"../assets"
],
"#app": [
"../node_modules/nuxt/dist/app"
],
"#imports": [
"./imports"
],
}
},
}
Expected
{
"paths": {
"~": [
"."
],
"assets": [
"assets"
],
"#app": [
"node_modules/nuxt/dist/app"
],
"#imports": [
".nuxt/imports"
],
}
}
Result
{
"paths": {
"~": [
".."
],
"assets": [
"../assets"
],
"#app": [
"../node_modules/nuxt/dist/app"
],
"#imports": [
"./imports"
],
}
}
Suggestion
When searching for paths in tsconfig.json, consider the path to the tsconfig file in which the paths were found and the baseUrl field.
Example code
const filesBasePath = path.join(configRelativeDir, baseUrl || '.') // configRelativeDir = '.nuxt'
const relativePaths = Object.entries(paths).reduce((obj, [key, values]) => ({
...obj,
[key]: values?.map((item) => path.join(filesBasePath, item)),
}), {})