Chciałbym uniknąć dodawania wygenerowanych plików JavaScript do repozytorium kontroli źródła git. Czy usługa Azure Git Deploy obsługuje uruchamianie komend dodawania w celu uruchomienia kompilacji przed wdrożeniem plików?Czy istnieje sposób na uruchomienie kompilatora TypeScript w ramach wdrożenia Azure Git
Odpowiedz
Tak, można uruchomić dowolną logikę za pomocą custom deployment script. Musisz użyć narzędzi, które potrzebujesz w repozytorium, lub najlepiej pobrać je w razie potrzeby (aby uniknąć przekazywania plików binarnych).
Teraz można wygenerować niestandardowy skrypt wdrażania custom deployment script
następnie zmodyfikować polecenie npm do korzystania z nowszej wersji (0.8.2) node.exe pomocą następującego polecenia:
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
OK, dostałem go do pracy poprzez jawne wywoływanie tej wersji węzła zarówno dla npm jak i kompilatora tsc.Moduł TS został zainstalowany w% appdata% \ npm \ node_modules \ machinery. –
, ponieważ zaktualizowano pakiet azure-cli, można teraz wygenerować niestandardowy skrypt wdrażania opisany przez Davida, a zmienna środowiskowa% NODE_EXE% będzie zawierać poprawną wersję węzła node.exe zgodnie z plikiem package.json (i co jest dostępne na platformie Azure). –
Na wypadek, gdyby ktoś inny szukał, właśnie to musiałem zrobić, żeby to zadziałało.
Po pierwsze, upewnij się, że maszynopis jest zainstalowany gdzie Kudu zbudować serwer może je osiągnąć, dodając te linie gdzieś ku górze mojej deploy.cmd
pliku:
call npm install typescript
IF %ERRORLEVEL% NEQ 0 (
echo Unable to install TypeScript
goto error
)
Stawia wersję Node-wymagalne z TypeScript w .\node_modules\.bin\tsc.cmd
.
Plik wsadowy, który faktycznie wykonuje budowlanej (wpłacone na różne sposoby, ale przede wszystkim jako wydarzenie post-build) wygląda następująco:
@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
Nadzieja pomaga to ktoś inny się.
A oto inna opcja obejścia, która nie wymaga niestandardowych skryptów wdrażania, żadnych plików wsadowych i tylko minimalne zmiany w pliku projektu.
Więcej informacji na blogu pod adresem http://manfredlange.blogspot.co.nz/2014/01/aspnet-mvc-typescript-azure-website-and.html. Kod źródłowy przykładowego projektu, o którym mowa w poście na blogu, jest dostępny pod adresem https://bitbucket.org/ml_agileutilities/typescript-sample. Istnieje gałąź, która odtwarza problem i jest druga gałąź obejmująca obejście.
Należy pamiętać, że o ile mi wiadomo, firma Microsoft pracuje nad odpowiednim rozwiązaniem. W czasie, gdy to czytasz, obejście może już nie być wymagane.
Maszynopis można teraz używać bez skryptów. Upewnij się tylko, że TypeScript działa z VS, a następnie będzie działał w kompilacji Kudu. Pamiętaj, że możesz mieć zderzenia w wersji TypeScript, zobacz np. this question.
Próbowałem tego, ale wygląda na to, że niestandardowy skrypt wdrażania wygenerowany z narzędzia Azure Site ignoruje specyfikację silnika węzła w pliku package.json. Muszę uaktualnić do 8.x, aby obsługiwać kompilator TypeScript. –
Hmmm, to nie powinno być tak, jak sądzę. Musimy spojrzeć na repozytorium repro, aby to zrozumieć. –
Właściwie masz rację, dziś nie działa, ale wkrótce to nastąpi :) –