Tsconfig.json - создавать только файлы ts из папки

В настоящее время я пытаюсь создать файлы ts в одном файле ts. Проблема, которую я получаю, заключается в том, что мой код ниже не делает то, что я думал. Я использовал sourceRoot, чтобы попытаться установить единственное место, откуда он мог получить исходный код, но это не сработало. Я также попытался поставить a. infront каталога, но он все еще тянет от везде: (

{
   "compilerOptions": {
       "target": "ES5",
       "noImplicitAny": true,
       "removeComments": true,
       "preserveConstEnums": true,
       "out": "www/js/app.js",
       "sourceMap": true,
       "sourceRoot": "www/app"
   }
}

все файлы, в том числе не внутри www/app build: (

теперь я вернулся к ручному указанию файлов:

{
    "compilerOptions": {
        "target": "ES5",
        "noImplicitAny": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "out": "www/js/app.js",
        "sourceMap": true
    },
    "files": [
        "./www/app/app.ts",
        "./www/app/menu/menuController.ts",
        "./www/app/playlists/playlistsController.ts"
    ]
}

Можно ли ограничивать исходные каталоги только www/app?

Спасибо

Ответ 1

Да, это возможно. Пожалуйста, используйте rootDir, как 'rootDir': 'app', если www является вашим корневым каталогом для вашего приложения.

rootDir описание из опций компилятора машинописи:

Определяет корневой каталог входных файлов.

Ответ 2

Согласно схеме tsconfig:

"Если в файле tsconfig.json отсутствует свойство 'files', компилятор по умолчанию включает все файлы, содержащие каталог и подкаталоги. Когда указано свойство 'files', только эти файлы включены. "

"Если в файле tsconfig.json отсутствует свойство 'files', но свойство exclude присутствует, компилятор исключит файлы и папки, указанные в свойстве exclude. "

Согласно описанию:

Свойство "files" нельзя использовать вместе с "exclude" свойство. Если указано и то, и другое, свойство "files" принимает старшинство.

проблема 'поддержка глобусов в свойстве файлов tsconfig.json (или просто исключение файлов/каталогов)' отражает текущую ситуацию.

Ответ 3

rootDir используется только для управления структурой выходного каталога.

Структура выходного каталога будет похожа на ваш каталог rootDir. U может использовать glob-like file patterns для ограничения ваших исходных каталогов:

* matches zero or more characters (excluding directory separators)
? matches any one character (excluding directory separators)
**/ recursively matches any subdirectory

Ответ 4

Этот вопрос немного старше, я знаю. Но некоторые из перечисленных здесь опций компилятора TypeScript не обязательно помогают решить этот вопрос. Для людей, ищущих rootDir или аналогичных (таких как я), может быть полезно уточнить упомянутые и относящиеся к решению варианты.

Извлечь все файлы в один файл

✅ Используйте outFile

❌ Не используйте out (устарело)

Справочная информация:

Если вы хотите создать каталог назначения, выберите outDir. См. параметры компилятора для получения дополнительной информации.

Выдавать файлы только из определенного каталога

✅ Используйте files/include/exclude в tsconfig

❌ Не используйте rootDir

Объяснение:

Компилятор находит все входные файлы по

  • просмотр свойств file/include/exclude
  • следующие import заявления
  • после ///<reference .. /> (больше не должно иметь большого значения)

Если эти параметры не указаны, будут включены все файлы в корне проекта TypeScript (предоставленные tsconfig.json). Ed-модули import автоматически включаются компилятором, независимо от file/include/exclude - взгляните на их FAQ. Все входные файлы вместе являются конвертом файлов, которые он будет создавать. Как настроить file/include/exclude, см. Tsconfig.json документы, рассмотрите также ответ @TSV.

ROOTDIR

rootDir управляет структурой выходного каталога вместе с outDir, она не используется для указания входных данных компилятора. Его использование (цитата):

Для каждого входного файла (т.е. файла .ts/.tsx) необходимо создать соответствующий выходной файл (файл .js/.jsx). Чтобы выяснить путь к файлу сгенерированного выходного файла, он отрежет "rootDir" из входных данных, а затем добавит к нему "outDir".

Следовательно, rootDir нужен каталог, который включает в себя все ваши входные источники сверху, иначе вы получите

ошибка TS6059: файл не находится в разделе "rootDir". Ожидается, что "rootDir" будет содержать все исходные файлы

Если rootDir опущен, компилятор автоматически вычисляет подходящий каталог, учитывая все входные файлы под рукой. Так что это не обязательно должно быть установлено.

sourceRoot

Эта опция имеет отношение только к исходным картам/отладке и может быть опущена для объема вопроса. Он используется, когда ваши исходные файлы находятся в другом месте во время выполнения, чем во время разработки. Компилятор корректирует пути к источникам в файле исходной карты, чтобы они соответствовали путям во время выполнения (параметры компилятора).

Надеюсь, это немного прояснит ситуацию.