2013-02-14 10 views

risposta

3

Sì, è possibile eseguire una logica arbitraria utilizzando un custom deployment script. Avrai bisogno di includere gli strumenti necessari nel repository, o preferibilmente scaricarli secondo necessità (per evitare di eseguire i binari).

+0

Ho provato questo, ma sembra che lo script di distribuzione personalizzato generato dallo strumento sito azzurro ignori le specifiche del motore del nodo in package.json. Devo aggiornare a 8.x per supportare il compilatore TypeScript. –

+0

Hmmm, non dovrebbe essere il caso, penso. Dovremmo guardare un repository di riproduzioni per dare un senso a questo. –

+0

In realtà, hai ragione, non funziona oggi ma presto lo sarà :) –

3

Per ora è possibile generare uno script di distribuzione personalizzato custom deployment script

quindi modificare il comando NPM di utilizzare la versione più recente NODE.EXE (0.8.2) con il seguente comando:

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, ho capito che funziona chiamando esplicitamente questa versione del nodo sia per npm che per il compilatore tsc.Il modulo TS è stato installato in% appdata% \ npm \ node_modules \ typescript. –

+0

con l'aggiornamento di azure-cli è ora possibile generare uno script di distribuzione personalizzato come descritto da David e la variabile di ambiente% NODE_EXE% conterrà la versione node.exe corretta in base al file package.json (e cosa è disponibile in Azure). –

2

Nel caso qualcuno stia guardando, questo è quello che dovevo fare per farlo funzionare.

In primo luogo, mi assicuro che dattiloscritto sia installato dove il Kudu costruire server può raggiungere, con l'aggiunta di queste righe da qualche parte verso la parte superiore del mio deploy.cmd lima:

call npm install typescript 
IF %ERRORLEVEL% NEQ 0 (
    echo Unable to install TypeScript 
    goto error 
) 

Questo pone la versione Node-callable di TypeScript in .\node_modules\.bin\tsc.cmd.

Il file batch che esegue effettivamente la build (richiamabile in vari modi, ma soprattutto come un evento post-generazione) si presenta così:

@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 

Spero che questo aiuti qualcun altro fuori.

1

E questa è un'altra opzione per una soluzione alternativa che non richiede la distribuzione personalizzata di script, nessun file batch e solo modifiche minime al file di progetto.

Il post del blog con i dettagli è disponibile allo http://manfredlange.blogspot.co.nz/2014/01/aspnet-mvc-typescript-azure-website-and.html. Il codice sorgente per il progetto di esempio indicato nel post del blog è disponibile allo https://bitbucket.org/ml_agileutilities/typescript-sample. C'è un ramo che riproduce il problema e c'è un secondo ramo che include la soluzione.

Si prega di notare che per quanto ne so Microsoft sta lavorando su una soluzione adeguata. Al momento della lettura, la soluzione alternativa potrebbe non essere più necessaria.

0

Il dattiloscritto può ora essere utilizzato senza script. Assicurati che TypeScript funzioni da VS, quindi funzionerà anche nella build di Kudu. Nota che potresti avere conflitti di versione di TypeScript, vedi per es. this question.

Problemi correlati