Estou usando o Grunt (ferramenta de construção de linha de comando baseada em tarefas para projetos JavaScript) no meu projeto. Eu criei uma tag personalizada e gostaria de saber se é possível executar um comando nela.
Para esclarecer, estou tentando usar modelos de closure e "a tarefa" deve chamar o arquivo jar para pré-compilar o arquivo Soy para um arquivo javascript.
Estou executando este jar na linha de comando, mas quero defini-lo como uma tarefa.
grunt-shell
a trabalhar imediatamente com o Windows + Cygwin, mas tive mais sorte com ogrunt-exec
."exec:cmd1", "exec:cmd2"
então você também tem a ordem síncrona.Confira
grunt.util.spawn
:fonte
opts: {stdio: 'inherit'},
você pode ver a saída do comandogrunt-legacy-util
plugin. Ele recomenda usar em seurequire('child_process').spawn()
lugar.Eu encontrei uma solução que gostaria de compartilhar com vocês.
Estou usando o grunt sob o nó, portanto, para chamar comandos de terminal, você precisa exigir o módulo 'child_process'.
Por exemplo,
fonte
sh
antes,sh mayCommand.sh
não tenho certeza se funcionaria no WindowsSe você estiver usando a versão mais recente do grunt (0.4.0rc7 no momento em que este livro foi escrito), o grunt-exec e o grunt-shell falham (eles não parecem estar atualizados para lidar com o grunt mais recente). Por outro lado, o exec de child_process é assíncrono, o que é um incômodo.
Acabei usando a solução de Jake Trent e adicionando shelljs como uma dependência de desenvolvimento em meu projeto para que eu pudesse apenas executar testes de forma fácil e síncrona:
fonte
grunt-shell
está funcionando bemgrunt v0.4.5
no WindowsCaras estão apontando child_process, mas tente usar execSync para ver a saída.
fonte
Para comandos de shell assíncronos que funcionam com Grunt 0.4.x, use https://github.com/rma4ok/grunt-bg-shell .
fonte