Подтвердить что ты не робот

Tsconfig - Как установить правильное расположение вывода компилятора для нескольких каталогов (Atom)

Предположим, что у меня есть эта структура каталогов:

public/
    js/
        lib/
test/
    ts/
lib/
    ts/

Как мне настроить его для компиляции lib/ts/*.ts в public/js/lib/*.js и test/ts/*.ts в public/js/*.js?

Я попытался настроить отдельный tsconfig.json в каждом каталоге ts с помощью желаемого outDir, но как только я добавлю ///<reference в файл, компилятор выведет нежелательное дерево каталогов (при сохранении и на сборке.)

4b9b3361

Ответ 1

В итоге я получил то, что хотел, с этим макетом:

public/
    js/
        lib/
        test/
src/
    ts/
        lib/
        test/

В src/ts/test/tsconfig.json:

"outDir": "../../../public/js"

В src/ts/lib/tsconfig.json:

"outDir": "../../../public/js/lib"

В src/ts/test/test.ts:

/// <reference path="../lib/CoolStuff.ts" />

В Atom, если вы работаете в src/ts/lib, сборка будет скомпилировать эти файлы в public/js/lib.

Если вы работаете в src/ts/test, сборка будет компилировать *.ts в тесте - а также все ссылки на файлы. Я не вижу способа предотвратить ссылочную компиляцию файлов, но, по крайней мере, с этим макетом они переходят в одно и то же место.

Ответ 2

Как мне настроить его для компиляции lib/ts/.ts в public/js/lib/.js и test/ts/.ts в public/js/.js?

Если вы хотите скомпилировать test и public в одном контексте компиляции, то эффективно ваше дерево ts:

test/
    ts/
lib/
    ts/

Поэтому, если вы используете outDir of ./public/js, вы получите:

public/
    js/
        test/
            ts/
        lib/
            ts/

Это связано с тем, что относительный характер lib/ts до test/ts должен сохраняться на outDir. Это ограниченность в том, как вы пытаетесь организовать свой проект.

Реорганизовать проект как

ts/
    test/
    lib/