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
в файл, компилятор выведет нежелательное дерево каталогов (при сохранении и на сборке.)
Ответы
Ответ 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/