Преобразование события сборки TypeScript в команду External Tools
Я работаю над файлами TypeScript с помощью Visual Studio 2012 Express для Web. Поскольку надстройка Web Essentials не работает с выпусками Express, и повторная сборка всего проекта при каждом обновлении сценария занимает слишком много времени, я надеялся преобразовать следующее событие сборки (из шаблона проекта TypeScript) в ' Команда внешних инструментов, которую я могу разместить на своей панели инструментов.
<Target Name="BeforeBuild">
<Message Text="Compiling TypeScript files" />
<Message Text="Executing tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
<Exec Command="tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
</Target>
К сожалению... это как бы потеряло меня. Я не могу найти документацию по $(TypeScriptSourceMap)
ни @()
а также %()
макросы. Кажется, мне не нравится копировать команду напрямую. (Даже после преобразования сущностей HTML.)
Что я могу ввести в диалог внешних инструментов, чтобы имитировать это событие сборки?
Я попытаюсь написать сценарий PS или что-то подобное, например, обходной путь, но для этого не хватит функциональности только для работы с файлами с действием сборки TypeScriptCompile.
1 ответ
$(TypeScriptSourceMap)
приходит примерно на 4 строки раньше в файле проекта. Это просто " --sourcemap"
когда в конфигурации отладки и ""
иначе.
@()
Синтаксис здесь в основном означает "Для каждого элемента проекта, чье действие сборки TypeScriptCompile
, поместите его полный путь в двойные кавычки и соедините получающиеся элементы пробелом.
Лучшая практика для проектов TypeScript - иметь файл "project.ts", который выглядит следующим образом:
project.ts
/// <reference path="file1.ts" />
/// <reference path="file2.ts" />
/// ... and so on
file1.ts
/// <reference path="project.ts" />
class alpha { ... }
file2.ts
/// <reference path="project.ts" />
class beta { ... }
С этой настройкой вы можете просто запустить tsc project.ts
или же tsc project.ts --out app.ts
и правильная вещь случится.