2013-02-14 17 views

Odpowiedz

3

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).

+0

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. –

+0

Hmmm, to nie powinno być tak, jak sądzę. Musimy spojrzeć na repozytorium repro, aby to zrozumieć. –

+0

Właściwie masz rację, dziś nie działa, ale wkrótce to nastąpi :) –

3

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

+0

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. –

+0

, 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). –

2

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ę.

1

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.

0

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.