我有这样的文件夹结构:
- mono-repo
tsconfig.paths.json
- Website
tsconfig.json
- src
test.ts
index.ts
- Tool
- src
index.ts
// mono-repo/tsconfig.paths.json
{
"compilerOptions": {
"paths": {
"tool": ["Tool/src"],
}
}
}
// mono-repo/Website/src/index.ts
import { test } from "test";
import { tool } from "tool";
test(tool);
我希望能够扩展tsconfig.paths.json
,以便每个程序包都有正确类型的模块引入其他程序包。
尝试失败1
// mono-repo/Website/tsconfig.json
{
"extends": "../tsconfig.paths.json",
"compilerOptions": {
"baseUrl": "./src",
}
}
< p >< em >问题:无法找到模块"tool"。添加到路径的baseUrl导致mono-repo/Website/src/Tool/src
。这不是真实路径。尝试失败2
// mono-repo/Website/tsconfig.json
{
"extends": "../tsconfig.paths.json",
"compilerOptions": {
"baseUrl": "../",
}
}
< p >< em >问题:无法从“test”中导入测试。baseUrl 不是项目 src。任何与相对路径无关的东西都不会被导出。
功能性但丑陋的尝试3
// mono-repo/tsconfig.paths.json
{
"compilerOptions": {
"paths": {
"tool": ["../../Tool/src"],
}
}
}
// mono-repo/Website/tsconfig.json
{
"extends": "../tsconfig.paths.json",
"compilerOptions": {
"baseUrl": "./src",
}
}
问题:已经可以工作,但是假设所有扩展了tsconfig.paths.json的tsconfig的baseUrl始终位于mono-repo
下方两个目录。这在我的项目中目前是正确的,但我不想将其变成标准。
如何为monorepo设置可扩展的“路径”tsconfig json?