Есть ли способ запустить компилятор TypeScript как часть Azure Git Deploy
Я хотел бы избежать добавления сгенерированных файлов JavaScript в репозиторий git source control. Поддерживает ли Azure Git Deploy запуск команд сложения для запуска сборки перед развертыванием файлов?
5 ответов
Да, вы можете запустить произвольную логику, используя собственный скрипт развертывания. Вам нужно будет либо включить инструменты, которые вам нужны, в ваш репозиторий, либо, предпочтительно, загрузить их по мере необходимости (чтобы избежать передачи бинарных файлов).
На данный момент вы можете создать собственный сценарий развертывания пользовательский сценарий развертывания
Затем отредактируйте команду npm, чтобы использовать более новую версию node.exe (0.8.2) с помощью следующей команды:
call "D:\Program Files (x86)\nodejs\0.8.2\node.exe" "D:\Program Files (x86)\nodejs\node_modules\npm\bin\npm-cli.js" install --production
На всякий случай, если кто-то еще ищет, это то, что мне нужно было сделать, чтобы это работало.
Во-первых, я проверяю, что TypeScript установлен там, где сервер сборки Kudu может добраться до него, добавив эти строки где-то в верхней части моего deploy.cmd
файл:
call npm install typescript
IF %ERRORLEVEL% NEQ 0 (
echo Unable to install TypeScript
goto error
)
Это помещает вызываемую узлом версию TypeScript в .\node_modules\.bin\tsc.cmd
,
Пакетный файл, который фактически выполняет сборку (может вызываться различными способами, но в основном как событие после сборки), выглядит следующим образом:
@echo off
if (%1%=="") goto settsc
cd %1%
:settsc
if exist ".\node_modules\.bin\tsc.cmd" (
set tsc=call ".\node_modules\.bin\tsc.cmd"
goto build
)
if exist "%ProgramFiles(x86)%\Microsoft Sdks\Typescript\0.9\tsc.exe" (
set tsc="%ProgramFiles(x86)%\Microsoft Sdks\Typescript\0.9\tsc.exe"
goto build
)
if exist "%ProgramFiles%\Microsoft Sdks\Typescript\0.9\tsc.exe" (
set tsc="%ProgramFiles%\Microsoft Sdks\Typescript\0.9\tsc.exe"
goto build
)
echo TypeScript compiler not found
exit 999
:build
echo Building TypeScript: Payboard.Site.js (using %tsc%)
%tsc% --sourcemap --out Scripts\Payboard\Payboard.Site.js @tsbuild_Site.txt
echo Building TypeScript: Payboard Widget (using %tsc%)
%tsc% --sourcemap --out Widget\v1.0\Payboard.js @tsbuild_Widget_v10.txt
echo Building TypeScript: App\Payboard.App.js (using %tsc%)
%tsc% --sourcemap --out App\Payboard.App.js @tsbuild_App.txt
Надеюсь, это поможет кому-то еще.
И вот еще один вариант обходного пути, который не требует пользовательских сценариев развертывания, никаких пакетных файлов и только минимальных изменений в файле проекта.
Сообщение в блоге с подробностями доступно по адресу http://manfredlange.blogspot.co.nz/2014/01/aspnet-mvc-typescript-azure-website-and.html. Исходный код примера проекта, упомянутого в сообщении блога, доступен по адресу https://bitbucket.org/ml_agileutilities/typescript-sample. Существует ветвь, которая воспроизводит проблему, и есть вторая ветвь, которая включает обходной путь.
Помните, что, насколько мне известно, Microsoft работает над правильным решением. В то время как вы читаете это, обходной путь может больше не потребоваться.
Typescript теперь можно использовать без каких-либо сценариев. Просто убедитесь, что TypeScript работает от VS, тогда он также будет работать в сборке Kudu. Обратите внимание, что у вас могут быть конфликты версий TypeScript, см., Например, этот вопрос.