Ich verwende Grunt (aufgabenbasiertes Befehlszeilen-Build-Tool für JavaScript-Projekte) in meinem Projekt. Ich habe ein benutzerdefiniertes Tag erstellt und frage mich, ob es möglich ist, einen Befehl darin auszuführen.
Zur Verdeutlichung versuche ich, Abschlussvorlagen zu verwenden, und "die Aufgabe" sollte die JAR-Datei aufrufen, um die Soja-Datei in eine Javascript-Datei vorkompilieren zu können.
Ich führe dieses JAR über die Befehlszeile aus, möchte es jedoch als Aufgabe festlegen.
grunt-shell
mit Windows + Cygwin arbeiten, hatte aber besseres Glück damitgrunt-exec
."exec:cmd1", "exec:cmd2"
dann hast du auch synchron Reihenfolge.Check out
grunt.util.spawn
:quelle
opts: {stdio: 'inherit'},
können Sie die Ausgabe des Befehls sehengrunt-legacy-util
Plugin. Es wird empfohlen,require('child_process').spawn()
stattdessen zu verwenden.Ich habe eine Lösung gefunden, die ich gerne mit Ihnen teilen möchte.
Ich verwende grunt under node. Um Terminalbefehle aufzurufen, benötigen Sie das Modul 'child_process'.
Beispielsweise,
quelle
sh
zuvor verwenden,sh mayCommand.sh
bin ich nicht sicher, ob es unter WindowsWenn Sie die neueste Grunzversion (0.4.0rc7 zum Zeitpunkt dieses Schreibens) verwenden, schlagen sowohl grunt-exec als auch grunt-shell fehl (sie scheinen nicht aktualisiert zu sein, um das neueste Grunzen zu verarbeiten). Auf der anderen Seite ist die Ausführung von child_process asynchron, was ein Ärger ist.
Am Ende habe ich die Lösung von Jake Trent verwendet und Shelljs als Entwicklungsabhängigkeit von meinem Projekt hinzugefügt, damit ich einfach und synchron Tests ausführen kann:
quelle
grunt-shell
funktioniert gut mitgrunt v0.4.5
unter WindowsJungs zeigen auf child_process, versuchen aber, execSync zu verwenden, um die Ausgabe zu sehen.
quelle
Verwenden Sie für asynchrone Shell-Befehle, die mit Grunt 0.4.x arbeiten, https://github.com/rma4ok/grunt-bg-shell .
quelle