tsconfig - 如何为多个目录设置正确的编译器输出位置(Atom)

pix*_*ike 27 typescript

假设我有这个目录结构:

public/
    js/
        lib/
test/
    ts/
lib/
    ts/
Run Code Online (Sandbox Code Playgroud)

我将如何配置它来编译lib/ts/*.ts,以public/js/lib/*.jstest/ts/*.tspublic/js/*.js

我已经尝试在每个ts目录中设置一个单独的tsconfig.json outDir,但是只要我添加///<reference一个文件,编译器就会输出一个不需要的目录树(在保存和构建时).

pix*_*ike 20

我最终得到了我想要的布局:

public/
    js/
        lib/
        test/
src/
    ts/
        lib/
        test/
Run Code Online (Sandbox Code Playgroud)

在src/ts/test/tsconfig.json中:

"outDir": "../../../public/js"
Run Code Online (Sandbox Code Playgroud)

在src/ts/lib/tsconfig.json中:

"outDir": "../../../public/js/lib"
Run Code Online (Sandbox Code Playgroud)

在src/ts/test/test.ts中:

/// <reference path="../lib/CoolStuff.ts" />
Run Code Online (Sandbox Code Playgroud)

在Atom中,如果你在src/ts/lib中工作,build会将这些文件编译成public/js/lib.

如果你在src/ts/test中工作,那么构建将在test中编译*.ts 以及引用的所有文件.我没有看到防止引用文件编译的方法,但至少在这种布局下它们会转到相同的位置.


bas*_*rat 6

我如何配置它来将lib/ts/.ts编译为public/js/lib / .js并将test/ts/.ts编译为public/js / .js?

如果要编译testpublic单个编译上下文中,那么有效的ts树是:

test/
    ts/
lib/
    ts/
Run Code Online (Sandbox Code Playgroud)

因此,如果您使用其中一个outDir,./public/js您将获得:

public/
    js/
        test/
            ts/
        lib/
            ts/
Run Code Online (Sandbox Code Playgroud)

这是因为相对的性质lib/ts,以test/ts需要由被保留outDir.这是您尝试组织项目的方式.

将您的项目重新组织为

ts/
    test/
    lib/
Run Code Online (Sandbox Code Playgroud)