我正在NX上工作,目前我有两个lib和一个应用程序。
tsconfig.base.json中注册如下:{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@sca/config": ["libs/sca-config/src/index.ts"],
"@sca/utils": ["libs/sca-utils/src/index.ts"]
}
}
}sca-config,tsconfig.json看起来像:{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"paths": {
"@/*": ["libs/sca-config/src/*"]
}
}
}sca-utils,tsconfig.json看起来像:{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"paths": {
"@/*": ["libs/sca-utils/src/*"]
}
}
}现在,考虑到我还没有在两个库中覆盖baseUrl,我必须能够在sca-config中使用路径别名@sca/utils。同时,在两个项目中,我必须能够使用@/some/internal/project/file从项目中导入文件。
目前还没有发生这种情况,看起来继承的路径被完全覆盖,而不是继承。
我试图在tsconfig.json of sca-config中这样做,但它看起来很难看。而且,对于每个库导入,我似乎都要这样做:
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"paths": {
"@/*": ["libs/sca-config/src/*"],
"@sca/utils": ["libs/sca-utils/src/index.ts"]
}
}
}这证实了这样一个事实:扩展tsconfig.base.json,然后向项目级别tsconfig.json添加路径,tsconfig.json将覆盖paths属性,而不是合并它。
我的问题是,有什么好办法吗?因为一旦图书馆的数量和它们对彼此的依赖增加,它就会变得过于混乱。更不用说,它还会重复(同时添加tsconfig.base.json和项目级别的tsconfig.json__)。
发布于 2022-12-02 17:12:43
您可以在tsconfig.json的paths属性中使用通配符(*)来指定所有路径都应该从tsconfig.base.json文件继承。这将允许您在tsconfig.base.json文件中定义路径别名,然后在每个库的tsconfig.json文件中使用这些别名,而不必在每个文件中显式指定它们。
下面是一个示例,说明如何在tsconfig.json的paths属性中使用通配符从tsconfig.base.json继承路径别名:
在tsconfig.base.json中:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@sca/config": ["libs/sca-config/src/index.ts"],
"@sca/utils": ["libs/sca-utils/src/index.ts"]
}
}
}在tsconfig.json for sca中:
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"paths": {
"@/*": ["libs/sca-config/src/*"]
}
}
}在tsconfig.json for sca中:
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"paths": {
"@/*": ["libs/sca-utils/src/*"]
}
}
}https://stackoverflow.com/questions/74659134
复制相似问题