TypScript outDir в tsconfig.json не работает

Кажется, я не могу outDir флаг outDir работать в package.json. Структура каталогов довольно проста: tsconfig.json на корневом уровне, вместе с каталогом src/ и одним файлом index.ts и другими каталогами, представляющими другие модули.

При запуске команды tsc в индексном файле создается новый, а не в каталоге сборки. Что я делаю неправильно?

Мой tsconfig:

{
  "compilerOptions": {
    "outDir": "build"
  }
}

Мой скрипт сборки npm:

"build": "tsc src/index.ts"

Я вызываю скрипт из корневого каталога проекта. Интересно, что запуск того же скрипта с флагом --outDir работает отлично.

Ответ 1

Когда вы передаете файлы для компиляции с помощью tsc src/index.ts, ваш tsconfig.json игнорируется.

Из документации:

Когда входные файлы указаны в командной строке, файлы tsconfig.json игнорируются.

Ваш скрипт сборки npm должен быть только tsc без передачи каких-либо файлов.

Ответ 2

Это моя структура папок.

enter image description here

Храните файлы машинописных файлов в папке src и держите tsconfig.json в корне.

В файле tsconfig json добавьте имя папки для outDir в compilerOptions

"compilerOptions": {    
    "outDir": "build",
    "module": "commonjs",
    "target": "es6",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "noImplicitAny": true,
    "sourceMap": true
  },

и выполните приведенные ниже команды.

просто cd в корневую папку и введите

TSC

или же

tsc --outDir.

enter image description here

который будет создавать папку outDir с файлами js и map.js.

Источник: https://github.com/Microsoft/TypeScript/issues/10585

Ответ 3

Если вы используете параметр компилятора incremental, возможно, вы не получите вывод, если вы удалили/изменили файлы в outDir, но не удалили файл .tsbuildinfo.

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

Ответ 4

Вам нужно указать местоположение файла tsconfig вместо файла, который вы хотите создать.

tsc --build mocks/tsconfig.json