J'utilise Grunt (outil de création de ligne de commande basé sur les tâches pour les projets JavaScript) dans mon projet. J'ai créé une balise personnalisée et je me demande s'il est possible d'y exécuter une commande.
Pour clarifier, j'essaie d'utiliser des modèles de fermeture et "la tâche" devrait appeler le fichier jar pour pré-compiler le fichier Soy en un fichier javascript.
J'exécute ce jar à partir de la ligne de commande, mais je veux le définir comme tâche.
grunt-shell
travailler avec Windows + Cygwin mais j'ai eu plus de chance avecgrunt-exec
."exec:cmd1", "exec:cmd2"
alors vous avez également l'ordre synchronisé.Découvrez
grunt.util.spawn
:la source
opts: {stdio: 'inherit'},
vous pouvez voir la sortie de la commandegrunt-legacy-util
plugin. Il recommande d'utiliser à larequire('child_process').spawn()
place.J'ai trouvé une solution et j'aimerais la partager avec vous.
J'utilise grunt sous le nœud donc, pour appeler les commandes de terminal, vous devez avoir besoin du module 'child_process'.
Par exemple,
la source
sh
avant,sh mayCommand.sh
je ne suis pas sûr que cela fonctionnerait sous WindowsSi vous utilisez la dernière version de grunt (0.4.0rc7 au moment de la rédaction de cet article), grunt-exec et grunt-shell échouent (ils ne semblent pas être mis à jour pour gérer le dernier grunt). D'autre part, l'exec de child_process est asynchrone, ce qui est un problème.
J'ai fini par utiliser la solution de Jake Trent et ajouter shelljs en tant que dépendance de développement sur mon projet afin de pouvoir simplement exécuter des tests facilement et de manière synchrone:
la source
grunt-shell
fonctionne bien avecgrunt v0.4.5
sous WindowsLes gars pointent child_process, mais essayez d'utiliser execSync pour voir la sortie.
la source
Pour les commandes shell asynchrones fonctionnant avec Grunt 0.4.x, utilisez https://github.com/rma4ok/grunt-bg-shell .
la source