Typescript tsconfig 中 rootDir 之外的路径别名

Mar*_*vin 6 typescript

我看到这个问题,但略有不同并且没有答案

我有几个 git 子模块。它们是大型现有项目,我想我可以直接重用各个部分,例如:

myproject/
   src/
   submod1/src
   submod2/src
Run Code Online (Sandbox Code Playgroud)

与 tsconfig.json 一样

        <snip...>
        "rootDir": "src/",
        "outDir": "./dist",
        "paths": {
            "@submod1/*": [ "submod1/src/*" ],
            "@submod1/*": [ "submod2/src/*" ],
            "@app/*": [ "src/*" ]
        },
Run Code Online (Sandbox Code Playgroud)

在我的代码中,比如

import { SomeVar } from '@submod1/constants';
Run Code Online (Sandbox Code Playgroud)

但 vscode (大概还有 tsc)正在报告 File '<path>/submod1/src/index.ts' is not under 'rootDir' '<path>/src'. 'rootDir' is expected to contain all source files.

我只是想做一些简单而务实的事情。有办法实现这一点吗?我想我可以用符号链接做一些事情,但这似乎是一个很大的错误。我可以将子模块放在 src/ 下,但这似乎也是错误的。

ada*_*ski 4

看起来这个问题没有“明确”的解决方案。你可以

  • 将整个内容包含在myproject您的 中,如果您将拥有更多模块并且不想重用除和之外的任何内容,则可能会容易出错tsconfig.jsonrootDirsubmod1submod2

或者

{
  "compilerOptions": {
    "rootDirs": ["src", "submod1/src", "submod2/src"]
  }
}
Run Code Online (Sandbox Code Playgroud)