网站搜索

tsconfig 中 rootDir 外的 Typescript 路径别名


我看到了这个问题,但它稍微有些不同,而且没有答案

我有几个 git 子模块。它们是大型现有项目,我以为我可以像这样直接重用其中的部分:

myproject/
   src/
   submod1/src
   submod2/src

像 tsconfig.json 这样的

        <snip...>
        "rootDir": "src/",
        "outDir": "./dist",
        "paths": {
            "@submod1/*": [ "submod1/src/*" ],
            "@submod1/*": [ "submod2/src/*" ],
            "@app/*": [ "src/*" ]
        },

而在我的代码中,类似于

import { SomeVar } from '@submod1/constants';

但是 vscode(以及 tsc 可能也会)报告 文件 '<path>/submod1/src/index.ts' 不在 'rootDir' '<path>/src' 下。'rootDir' 应包含所有源文件。

我只是在尝试做一些简单而务实的事情。有办法实现吗?我想我可以使用符号链接来做一些事情,但那似乎是一个很大的错误。我也可以把子模块放在 src/ 下,但那看起来也不对。

答案#1

看来对此没有“明确”的解决方案。你可以选择

  • 在你的 tsconfig.json 的 rootDir 中包含整个 myproject,如果你将来会有更多模块且不想重用除了 submod1 和 submod2 之外的任何内容,这可能容易出错

或者

  • 使用 rootDirs 属性有选择地包含所有需要的子模块
{
  "compilerOptions": {
    "rootDirs": ["src", "submod1/src", "submod2/src"]
  }
}

相关文章