2013-07-01 22 views
7

Il mio nuovo progetto ha bisogno di me per lavorare con TFS + Git.Posso usare Grunt con TFS?

Confessione: non so nulla di TFS.

Voglio configurare una build per il mio progetto JavaScript. Voglio usare Grunt.

È possibile? Qualcuno ha usato Grunt con TFS?

+1

Hai visto questo https: //github.com/danactive/grunt-tfs-unlock? – elclanrs

risposta

18

Sul nostro progetto attuale, stiamo utilizzando Grunt e TFS. Ho integrato Grunt con TFS calandolo da un file bat che puoi collegare nella sezione Pre- or Post-BuildEvents del tuo file di progetto.

Tuttavia, poiché TFS eseguirà le build con variabili d'ambiente specifiche, è necessario utilizzare percorsi assoluti.

un elenco delle cose che abbiamo fatto

  1. Installa node.js sulla vostra macchina build (così come sul computer di sviluppo (s) naturalmente)
  2. aggiungere un file package.json su la radice del tuo progetto JavaScript.
  3. Usa npm installare grunt-clilocalmente (!). Utilizzare il flag --save-dev per aggiungere questo pacchetto per la sezione dipendenze di sviluppo in package.json
  4. Per tutti gli altri pacchetti necessari, l'uso NPM con la stessa bandiera come al punto 3
  5. Scrivere un file bat (vedi esempio sotto) in cui si 'll
    1. fare uso di percorsi assoluti
    2. uso NPM per installare tutti i pacchetti elencati nel file packages.json
    3. chiamata grugnito
  6. in yo ur Pre- o PostBuildEvents, chiamano questo file bat

file bat esempio

rem use call to execute other bat files 
echo npm install 
call "C:\Program Files\nodejs\npm" install 

rem because we have listed grunt-cli as a dev dependency, 
rem the executable will be located in the node_modules folder 
echo grunt 
call "./node_modules/.bin/grunt" 
+0

Mi piacerebbe conoscere più informazioni dal punto di vista di qualcuno che ha già familiarità con l'utilizzo di TFS e vorrebbe iniziare a usare grunt e non ha ancora familiarità con esso. Inoltre non ci sono pacchetti nuget per questo? Sembra che tu possa facilmente mettere molto di questo in un pacchetto di nuget. –

+0

@AllenRice IMO l'unica cosa che potresti inserire in un npm qui è nodejs o grunt. Tutti gli altri pacchetti sono pacchetti npm. Sfortunatamente, non ho trovato pacchetti nuget per grunt e non ci sono quelli più popolari là fuori per nodejs. Potresti provare questo: https://www.nuget.org/packages/nji/ che renderebbe obsoleto solo il passaggio 1. – thomaux

+0

Perché dovrei installare '' 'grunt-cli''' in locale? –

2

utilizzare grugnito con TFS quando devo usare TFS. Ho provato grunt-tfs-unlock, ma ho trovato questo issue. Ho risolto il problema usando grunt-shell, che funziona e ti lascia più responsabile della configurazione. Questo gist mostra come uso TFS con grunt. Dimostra il comando 'tf checkout', ma puoi facilmente creare qualsiasi comando tf con questo modello.

0

Dopo aver installato il nodo ecc. Sul server di build, è anche possibile modificare il modello di build e aggiungere un passaggio per chiamare grunt ecc .... Ciò impedirebbe di dover modificare il file csproj e consentire di utilizzare invece le variabili ambientali create da TFS.

2

Ho provato tutte le risposte elencate qui e non sono riuscito a ottenere una build automatizzata e distribuita con successo con TFS fino a quando non ho utilizzato NCapsulate. Rimuove la necessità di installare NodeJ separatamente sugli agenti di compilazione o sulle macchine di sviluppo. Solo un pacchetto NuGet.

Assicurati di configurare correttamente i tuoi obiettivi di costruzione e funziona molto bene.

-1

È possibile creare un file di destinazione con la seguente procedura:

<exec command="npm install" WorkingDirectory="$(RootFolder)\ui-packages" ContinueOnError="WarnAndContinue"/> 
<exec command="grunt dash-build" WorkingDirectory="$(RootFolder)\ui-packages" /> 
<exec command="rimraf node_modules" WorkingDirectory="$(RootFolder)\ui-packages" /> 
+0

Dove sono le informazioni? – jcoppens

+3

Si prega di aggiungere alcune spiegazioni sul perché questo codice aiuti l'OP. Questo aiuterà a fornire una risposta da cui i futuri spettatori potranno imparare. Vedi [risposta] per maggiori informazioni. –