Компиляция при сохранении в tsconfig.json работает иначе для новых файлов, чем для существующих файлов.

Поэтому в последнее время я экспериментировал с Angular и его функциями. Одной из них является функция CompileOnSave в tsconfig.json со следующими настройками:

"outDir": "./dist/out-tsc",
"watch":  true,

Все это работает, однако я вижу различное поведение между добавлением новых файлов и изменением существующих файлов. В обоих случаях модификации файлов компилируются в папку ./dist/out-tsc. Все хорошо. Однако при добавлении нового файла компилятор также создает файл .js и соответствующий ему файл карты в той же папке. Это смущает. Это по дизайну? И нужно ли их удалять вручную или это можно автоматизировать? Мой вопрос похож на

Как заставить компилятор Typescript выводить скомпилированный js в другой каталог?

однако у меня уже настроено свойство outDir. Я использую Visual Studio 2019. Посмотрите на скриншот ниже из части каталога проекта. api.component.ts — это существующий файл, изменения которого компилируются в каталог ./dist/out-tsc. file.ts, file1.ts и file2.ts — это новые файлы, которые, кажется, скомпилированы в папку, в которой они созданы, а также в папку ./dist-out-tsc. Моя версия Angular — 8.3.14.

скриншот из Visual Studio

Мой tsconfig.json выглядит так:

{
  "compileOnSave": true,
  "compilerOptions": {
    "baseUrl": "./",
    "module": "esnext",
    "outDir": "./dist/out-tsc",
    "watch": true,
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es2015",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

person Arthur Visser    schedule 21.04.2020    source источник


Ответы (1)


Я решил свою проблему, добавив это в свой файл .csproj. Однако я хочу подчеркнуть, что компиляция при сохранении уже отключена в Visual Studio, и визуальная студия перезапущена. Вот почему я был застигнут врасплох. Думаю, этого было недостаточно.

<PropertyGroup>
   <TypeScriptCompileOnSaveEnabled>False</TypeScriptCompileOnSaveEnabled>
</PropertyGroup>
person Arthur Visser    schedule 20.02.2021