2015-02-10 7 views
6

Ich benutze Grunt und Grunt-Shell, um mein Javascript-Projekt zu erstellen/zu implementieren.Grunt-shell Speichern Befehl Ausgabe als Variable

Ich möchte die neueste git-commit-Nummer erhalten und sie als Variable speichern, kann aber nicht herausfinden, wie. Ich habe versucht, einen Rückruf zu haben und eine globale Variable einzustellen. Diese Variable ist innerhalb einer Funktion verwendbar, aber nicht aus einem anderen Block scheint es

grunt.initConfig({ 
... 
shell: { 
     getGitCommitNo: { 
     command: 'git rev-parse --short HEAD', 
     options: { 
      callback: function (err, stdout, stderr, cb) { 
       global['gitCommitNo'] = stdout; 
       grunt.log.ok(global.gitCommitNo); 
       cb(); 
      } 
     } 
     }, 
     philTest: { 
     command: 'echo Git Commit No: ' + global.gitCommitNo 
     }, 
... 
} 

Ausgang:

>> Starting deployment process for version 1.1 in dev environment 

Running "shell:getGitCommitNo" (shell) task 
bfc82a9 
>> bfc82a9 

Running "shell:printTest" (shell) task 
Git Commit No: undefined 

Done, without errors. 

Kann jemand empfehlen, wie ich könnte die Ausgabe einer Befehlszeile in eine Variable zu speichern, die verwendbar ist, Bitte?

+0

Nicht sicher, Sie können dies mit dem 'shell' Plugin tun, aber man konnte ein einfaches benutzerdefiniertes Modul schreiben, es zu tun, wenn nötig:

grunt.config.set('gitCommitNo', stdout.replace('\n', '')); 

Dann kann dies über die zugegriffen werden soll. – jakerella

Antwort

10

Gefunden, dass ich dies tatsächlich tun kann mit einer Konfigurationsvariablen (anstelle von globalen) innerhalb des Rückrufs. (Unterhalb der Zeile wird auch die neue Zeile entfernt).

<%=gitCommitNo%> 
+0

Das sollte als richtige Antwort markiert werden. Vielen Dank dafür. –

+0

HINWEIS: Ich musste 'grunt.loadNpmTasks ('grunt-shell')' am Anfang meiner Grunt-Datei, ** oberhalb von ** 'grunt.initConfig ({...') platzieren, damit dies funktioniert –