如何配置 tsconfig.json 将文件从多个源文件夹输出到单个平面 outDir?

Jan*_*jsi 6 typescript tsconfig

我有多个打字稿项目(例如clientserver),它们共享一些通用功能(位于common文件夹中)。考虑这个文件夹结构:

+ client
|  - tsconfig.json
|  + src
|     - client.ts
+ common
   + src
      - util.ts
Run Code Online (Sandbox Code Playgroud)

client.ts以这种方式导入实用程序的情况:

import { Util } from '../../common/src/util';
Run Code Online (Sandbox Code Playgroud)

为了简洁起见,我省略了该server文件夹,该文件夹与client. 转译到out文件夹后,我想得到这个简单的平面文件夹结构:

+ client
|  + out
|     - client.js
|     - util.js
Run Code Online (Sandbox Code Playgroud)

...理想情况下,我可以简单地导入与实际文件夹无关的通用实用程序:

import { Util } from './util';
Run Code Online (Sandbox Code Playgroud)

我如何配置tsconfig.json才能实现这一目标?

rootDirs我尝试了、baseUrl和的不同组合paths,但我仍然在 下获得clientcommon子文件夹(甚至都包括它们的src子文件夹)out

Jan*_*jsi 3

现在我们在 Typescript 3.0 中支持项目引用(即多个 Typescript 项目的级联构建)。我们还可以控制构建的输出位置tsc

https://blogs.msdn.microsoft.com/typescript/2018/07/30/announcing-typescript-3-0/#project-references

如果 Typescript 项目“bar”使用项目“foo”,则链接它们的方式如下:

// ./src/bar/tsconfig.json
{
    "compilerOptions": {
        // Needed for project references.
        "composite": true,
        "declaration": true,

        // Other options...
        "outDir": "../../lib/bar",
        "strict": true, "module": "esnext", "moduleResolution": "node",
    },
    "references": [
        { "path": "../foo" }
    ]
}
Run Code Online (Sandbox Code Playgroud)

谢谢各位TS们!