tsconfig.json: Build:No inputs were found in config file — как исправить

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение: Почему TypeScript не видит мои файлы?

Вы открываете проект на TypeScript, запускаете сборку, и вдруг — бам! — холодный душ в виде сообщения: tsconfig.json: Build:No inputs were found in config file. Знакомо? Если вы хоть раз сталкивались с настройкой TypeScript, то наверняка видели эту ошибку. Она пугает новичков и раздражает профессионалов. Но не спешите рвать на себе волосы или проклинать Microsoft.

В этой статье мы не просто покажем, как быстро заткнуть ошибку. Мы разберем её анатомию: почему она возникает, какие сценарии к ней приводят, и как настроить tsconfig.json так, чтобы вы больше никогда не видели это сообщение. Это будет полезно и для тех, кто только начинает изучать TypeScript, и для тех, кто хочет глубже понять механику компилятора.

И да, мы будем говорить на русском, живо и с примерами. Поехали!

Что означает ошибка "Build:No inputs were found in config file"?

Если перевести с языка компилятора на человеческий, TypeScript говорит вам: "Я не знаю, какие файлы компилировать. Ты сказал мне собрать проект, но не указал, где лежат исходники." Компилятор tsc ищет файлы .ts и .tsx, но не находит ни одного в тех директориях, которые вы (или он сам) ему указали.

Ошибка возникает в двух типичных ситуациях:

  • Вы только что создали tsconfig.json в пустой папке.
  • Вы неправильно настроили поля include, exclude или rootDir.

Давайте разберем каждую причину детально, чтобы вы могли не просто скопировать решение, а понять, почему оно работает.

Причина №1: В проекте нет файлов TypeScript

Самая банальная, но распространенная причина. Вы создали tsconfig.json в папке, где нет ни одного .ts файла. Компилятор честно ищет — и ничего не находит.

Пример проблемы:

my-project/
├── tsconfig.json
└── (больше ничего)

Запускаем npx tsc — и получаем ошибку. Решение очевидно: создайте хотя бы один файл index.ts.

Как исправить:

my-project/
├── tsconfig.json
├── src/
│   └── index.ts   # <-- Вот он, спаситель!

Но что, если файлы есть, а ошибка всё равно появляется? Тогда копаем глубже.

Причина №2: Неверно указан путь в поле include

Поле include в tsconfig.json говорит компилятору: "Ищи файлы вот здесь". Если вы указали несуществующую папку или ошиблись в пути, компилятор ничего не найдет.

Неправильная конфигурация:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "outDir": "./dist"
  },
  "include": ["src/**/*"]  // А папки src не существует!
}

В этом примере папка src отсутствует. Компилятор честно пытается найти файлы по маске src/**/*, не находит — и выдает ошибку.

Как исправить:

  • Проверьте, существует ли папка, которую вы указали в include.
  • Убедитесь, что в этой папке есть файлы .ts или .tsx.
  • Используйте относительные пути. Если ваш tsconfig.json лежит в корне, а исходники в src/, пишите "src/**/*".

Правильная конфигурация:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "outDir": "./dist"
  },
  "include": ["src/**/*"]
}
// Убедитесь, что папка src существует и содержит .ts файлы

Причина №3: Конфликт между include и exclude

Иногда вы указываете папку в include, но затем в exclude исключаете все файлы внутри неё. Компилятор запутывается и перестает что-либо видеть.

Пример конфликта:

{
  "compilerOptions": {
    "outDir": "./dist"
  },
  "include": ["src/**/*"],
  "exclude": ["src/**/*"]  // Исключили всё, что включили
}

Логическая ошибка: вы включили все файлы из src, но тут же их исключили. Результат — пустой набор входных файлов.

Как исправить:

Используйте exclude только для точечного исключения. Например, исключите node_modules или тестовые файлы, но не всю папку src.

{
  "compilerOptions": {
    "outDir": "./dist"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "src/**/*.test.ts"]  // Исключаем только тесты
}

Причина №4: Проблема с rootDir

Поле rootDir — это коварная штука. Оно не указывает, где искать файлы (это делает include). Оно указывает, какую часть пути сохранить при компиляции. Если rootDir указан неверно, компилятор может решить, что файлы находятся вне корневой директории, и проигнорировать их.

Пример: У вас структура src/app/index.ts, а rootDir установлен в ./ (корень проекта). Компилятор может выдать ошибку, потому что он ожидает, что все файлы будут внутри rootDir, а они там есть. Но если rootDir указан как src — всё работает.

Как исправить:

  • Убедитесь, что rootDir указывает на общую родительскую папку всех ваших исходных файлов.
  • Если у вас файлы лежат в src/, ставьте "rootDir": "src".
  • Если вы не уверены — просто не указывайте rootDir. Компилятор сам вычислит его на основе списка входных файлов.
{
  "compilerOptions": {
    "outDir": "./dist",
    "rootDir": "src"  // Указываем, где лежат исходники
  },
  "include": ["src/**/*"]
}

Причина №5: Файлы

Блоги

Рекомендаций по книгам