Spec-Zone.ru › TypeScript 5.1

Параметры компилятора в MSBuild

Обзор

При работе с проектом на основе MSBuild, использующим TypeScript (например, проектом ASP.NET Core), можно настроить TypeScript двумя способами. Либо через tsconfig.json , либо через настройки проекта.

Использование tsconfig.json

Рекомендуется использовать tsconfig.json для вашего проекта, когда это возможно. Чтобы добавить его в существующий проект, добавьте новый элемент в проект, который называется «Файл конфигурации TypeScript JSON» в современных версиях Visual Studio.

Новый tsconfig.json затем будет использоваться в качестве источника информации о сборке, специфичной для TypeScript, таких как файлы и настройки. Вы можете узнать о работе TSConfigs здесь, а также есть полная справка здесь.

Использование настроек проекта

Вы также можете определить конфигурацию TypeScript внутри настроек вашего проекта. Это делается путем редактирования XML в вашем .csproj для определения PropertyGroups , которые описывают, как может работать сборка:

<PropertyGroup>
  <TypeScriptNoEmitOnError>true</TypeScriptNoEmitOnError>
  <TypeScriptNoImplicitReturns>true</TypeScriptNoImplicitReturns>
</PropertyGroup>

Существует ряд соответствий для общих параметров TypeScript, это параметры, которые напрямую сопоставляются с параметрами командной строки TypeScript и используются для написания более понятного файла проекта. Вы можете использовать ссылку TSConfig, чтобы получить больше информации о значениях и значениях по умолчанию для каждого соответствия.

Сопоставления параметров командной строки

Имя конфигурации MSBuild Флаг TSC
<TypeScriptAllowJS> --allowJs

Разрешить использование JavaScript-файлов в вашей программе. Используйте опцию checkJS для получения ошибок из этих файлов.

<TypeScriptRemoveComments> --removeComments

Отключить вывод комментариев.

<TypeScriptNoImplicitAny> --noImplicitAny

Включить сообщение об ошибке для выражений и объявлений с неявным типом any.

<TypeScriptGeneratesDeclarations> --declaration

Генерировать файлы .d.ts из TypeScript и JavaScript-файлов в вашем проекте.

<TypeScriptModuleKind> --module

Указать, какой код модуля генерировать.

<TypeScriptJSXEmit> --jsx

Указать, какой код JSX генерировать.

<TypeScriptOutDir> --outDir

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

<TypeScriptSourceMap> --sourcemap

Создавать файлы карт исходного кода для генерируемых JavaScript-файлов.

<TypeScriptTarget> --target

Установить версию языка JavaScript для генерируемого JavaScript и включить совместимые объявления библиотек.

<TypeScriptNoResolve> --noResolve

Запретить расширение количества файлов, которые TypeScript должен добавить в проект, из-за imports, requires или <reference>s.

<TypeScriptMapRoot> --mapRoot

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

<TypeScriptSourceRoot> --sourceRoot

Указать корневой путь для отладчиков, чтобы найти исходный код ссылки.

<TypeScriptCharset> --charset

Больше не поддерживается. В ранних версиях позволяло вручную задавать кодировку текста для чтения файлов.

<TypeScriptEmitBOM> --emitBOM

Выводить метку порядка байтов (BOM) UTF-8 в начале выходных файлов.

<TypeScriptNoLib> --noLib

Отключить включение файлов библиотек, включая стандартный файл lib.d.ts.

<TypeScriptPreserveConstEnums> --preserveConstEnums

Отключить удаление объявлений const enum в сгенерированном коде.

<TypeScriptSuppressImplicitAnyIndexErrors> --suppressImplicitAnyIndexErrors

Подавить ошибки noImplicitAny при индексировании объектов, у которых отсутствуют сигнатуры индексов.

<TypeScriptNoEmitHelpers> --noEmitHelpers

Отключить генерацию пользовательских вспомогательных функций, таких как __extends в скомпилированном выходе.

<TypeScriptInlineSourceMap> --inlineSourceMap

Включать файлы карт исходного кода внутри генерируемого JavaScript.

<TypeScriptInlineSources> --inlineSources

Включать исходный код в карты исходного кода внутри генерируемого JavaScript.

<TypeScriptNewLine> --newLine

Установить символ новой строки для генерируемых файлов.

<TypeScriptIsolatedModules> --isolatedModules

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

<TypeScriptEmitDecoratorMetadata> --emitDecoratorMetadata

Выводить метаданные типа дизайна для объявленных декораторов в исходных файлах.

<TypeScriptRootDir> --rootDir

Указать корневую папку в ваших исходных файлах.

<TypeScriptExperimentalDecorators> --experimentalDecorators

Включить экспериментальную поддержку черновика декораторов TC39 стадии 2.

<TypeScriptModuleResolution> --moduleResolution

Указать, как TypeScript ищет файл по заданному спецификатору модуля.

<TypeScriptSuppressExcessPropertyErrors> --suppressExcessPropertyErrors

Отключить сообщения об ошибках избыточных свойств при создании литералов объектов.

<TypeScriptReactNamespace> --reactNamespace

Указать объект, вызываемый для createElement. Это относится только к целевому выводу react JSX.

<TypeScriptSkipDefaultLibCheck> --skipDefaultLibCheck

Пропустить проверку типов файлов .d.ts, включенных в TypeScript.

<TypeScriptAllowUnusedLabels> --allowUnusedLabels

Отключить вывод сообщений об ошибках для неиспользуемых меток.

<TypeScriptNoImplicitReturns> --noImplicitReturns

Включить вывод сообщений об ошибках для путей кода в функции, которые не возвращают значения явно.

<TypeScriptNoFallthroughCasesInSwitch> --noFallthroughCasesInSwitch

Включить вывод сообщений об ошибках для случаев fallthrough в операторах switch.

<TypeScriptAllowUnreachableCode> --allowUnreachableCode

Отключить вывод сообщений об ошибках для недостижимого кода.

<TypeScriptForceConsistentCasingInFileNames> --forceConsistentCasingInFileNames

Убедиться, что регистр в импортах корректный.

<TypeScriptAllowSyntheticDefaultImports> --allowSyntheticDefaultImports

Разрешить 'import x from y', когда модуль не имеет экспорта по умолчанию.

<TypeScriptNoImplicitUseStrict> --noImplicitUseStrict

Отключить добавление директив 'use strict' в генерируемые JavaScript-файлы.

<TypeScriptLib> --lib

Указать набор объединенных файлов объявлений библиотек, которые описывают целевую среду выполнения.

<TypeScriptBaseUrl> --baseUrl

Указать базовый каталог для разрешения имён модулей, не являющихся относительными.

<TypeScriptDeclarationDir> --declarationDir

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

<TypeScriptNoImplicitThis> --noImplicitThis

Включить сообщение об ошибке, когда this получает тип any.

<TypeScriptSkipLibCheck> --skipLibCheck

Пропустить проверку типов всех файлов .d.ts.

<TypeScriptStrictNullChecks> --strictNullChecks

При проверке типов учитывать null и undefined.

<TypeScriptNoUnusedLocals> --noUnusedLocals

Включить вывод сообщений об ошибках, когда локальные переменные не считываются.

<TypeScriptNoUnusedParameters> --noUnusedParameters

Выводить ошибку, когда параметр функции не считывается.

<TypeScriptAlwaysStrict> --alwaysStrict

Убедиться, что 'use strict' всегда генерируется.

<TypeScriptImportHelpers> --importHelpers

Разрешить импорт вспомогательных функций из tslib один раз на проект, вместо включения их для каждого файла.

<TypeScriptJSXFactory> --jsxFactory

Укажите функцию-фабрику JSX, используемую при целевом выводе React JSX, например, 'React.createElement' или 'h'

<TypeScriptStripInternal> --stripInternal

Отключить вывод объявлений, содержащих @internal в их комментариях JSDoc.

<TypeScriptCheckJs> --checkJs

Включить отчет об ошибках в файлах JavaScript с проверкой типов.

<TypeScriptDownlevelIteration> --downlevelIteration

Выводить более совместимый, но подробный и менее производительный JavaScript для итерации.

<TypeScriptStrict> --strict

Включить все параметры строгой проверки типов.

<TypeScriptNoStrictGenericChecks> --noStrictGenericChecks

Отключить строгую проверку общих сигнатур в типах функций.

<TypeScriptPreserveSymlinks> --preserveSymlinks

Отключить разрешение символических ссылок на их реальный путь. Это соответствует тому же флагу в node.

<TypeScriptStrictFunctionTypes> --strictFunctionTypes

При присваивании функций проверяйте, совместимы ли параметры и возвращаемые значения с подтипами.

<TypeScriptStrictPropertyInitialization> --strictPropertyInitialization

Проверять свойства класса, которые объявлены, но не установлены в конструкторе.

<TypeScriptESModuleInterop> --esModuleInterop

Выводить дополнительный JavaScript для облегчения поддержки импорта модулей CommonJS. Это позволяет allowSyntheticDefaultImports для совместимости типов.

<TypeScriptEmitDeclarationOnly> --emitDeclarationOnly

Выводить только файлы d.ts, а не файлы JavaScript.

<TypeScriptKeyofStringsOnly> --keyofStringsOnly

Сделать keyof возвращающим только строки, вместо строк, чисел или символов. Старый параметр.

<TypeScriptUseDefineForClassFields> --useDefineForClassFields

Выводить поля классов, совместимые со стандартом ECMAScript.

<TypeScriptDeclarationMap> --declarationMap

Создавать sourcemap для файлов d.ts.

<TypeScriptResolveJsonModule> --resolveJsonModule

Включить импорт файлов .json

<TypeScriptStrictBindCallApply> --strictBindCallApply

Проверить, что аргументы для методов bind, call, и apply соответствуют исходной функции.

<TypeScriptNoEmitOnError> --noEmitOnError

Отключить вывод файлов, если обнаружены ошибки проверки типов.

Дополнительные флаги

Поскольку система MSBuild передает аргументы напрямую в командную строку TypeScript, вы можете использовать параметр TypeScriptAdditionalFlags для предоставления специфических флагов, которые не имеют соответствия выше.

Например, это включит noPropertyAccessFromIndexSignature:

<TypeScriptAdditionalFlags> $(TypeScriptAdditionalFlags) --noPropertyAccessFromIndexSignature</TypeScriptAdditionalFlags>

Debug и Release сборки

Вы можете использовать условия PropertyGroup для определения различных наборов конфигураций. Например, распространённая задача — удаление комментариев и sourcemap в производственной сборке. В этом примере мы определяем группы свойств debug и release, которые имеют различные конфигурации TypeScript:

<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
  <TypeScriptRemoveComments>false</TypeScriptRemoveComments>
  <TypeScriptSourceMap>true</TypeScriptSourceMap>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
  <TypeScriptRemoveComments>true</TypeScriptRemoveComments>
  <TypeScriptSourceMap>false</TypeScriptSourceMap>
</PropertyGroup>

<Import
    Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets"
    Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />

ToolsVersion

Значение свойства <TypeScriptToolsVersion>1.7</TypeScriptToolsVersion> в файле проекта определяет версию компилятора, используемую для сборки (1.7 в этом примере). Это позволяет проекту строиться на основе одних и тех же версий компилятора на разных машинах.

Если TypeScriptToolsVersion не указано, для сборки будет использоваться последняя версия компилятора, установленная на компьютере.

Пользователи, использующие более новые версии TS, увидят запрос на обновление проекта при первом запуске.

TypeScriptCompileBlocked

Если вы используете другой инструмент сборки для сборки своего проекта (например, gulp, grunt и т.д.) и VS для разработки и отладки, установите <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked> в вашем проекте. Это должно предоставить всю поддержку редактирования, но не сборку при нажатии F5.

TypeScriptEnableIncrementalMSBuild (TypeScript 4.2 Beta и новее)

По умолчанию MSBuild попытается запустить компилятор TypeScript только тогда, когда исходные файлы проекта были обновлены с момента последней компиляции. Однако, если это поведение вызывает проблемы, такие как при включенном параметре TypeScript incremental, установите <TypeScriptEnableIncrementalMSBuild>false</TypeScriptEnableIncrementalMSBuild> для обеспечения запуска компилятора TypeScript при каждом запуске MSBuild.

© 2012-2023 Microsoft
Licensed under the Apache License, Version 2.0.
https://www.typescriptlang.org/docs/handbook/compiler-options-in-msbuild.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API