2013-04-20 17 views
9

Attualmente utilizzo grunt-shell per eseguire comandi shell da un'attività grunt. Esiste un modo migliore per eseguire più comandi in una sola operazione oltre a metterli insieme con "& &"?Come si eseguono comandi shell MULTIPLE in un'attività gruntjs?

mio Gruntfile (parziale):

grunt.initConfig({ 
    shell: { 
    deploy: { 
     options: { stdout: true }, 
     command: 'mkdir -p static/styles && cp public/styles/main.css static/styles' 
    } 
    } 
}); 

Una serie di comandi non si lavoro, ma sarebbe bello:

grunt.initConfig({ 
    shell: { 
    deploy: { 
     options: { stdout: true }, 
     command: [ 
     'mkdir -p static/styles', 
     'cp public/styles/main.css static/styles' 
     ] 
    } 
    } 
}); 

risposta

14

Puoi partecipare insieme:

grunt.initConfig({ 
    shell: { 
    deploy: { 
     options: { stdout: true }, 
     command: [ 
     'mkdir -p static/styles', 
     'cp public/styles/main.css static/styles' 
     ].join('&&') 
    } 
    } 
}); 

Il motivo per cui ho scelto di non supportare gli array è che alcuni potrebbero volere ; come separatore anziché &&, il che rende più facile eseguire quanto sopra.

+0

Grazie, a volte la risposta ovvia è quella giusta :). Non sono così esperto con la riga di comando, quindi non sapevo se usare '&&' qui era accettabile. Sostengo ancora la sintassi dell'array dato che è già familiare (grunt.registerTask) e quindi idiomatico. Gli utenti possono sempre 'join (';')'. –

+2

L'uso di '&&' comporta solo l'esecuzione del seguente comando se il precedente è riuscito. Usare ';' significa che continuerà a eseguire i comandi indipendentemente. Ho aggiornato i documenti con un esempio. Non sei il primo a chiedere questo :) –

+0

sarebbe ancora meglio se il comando potesse essere eseguito in modo parallelo. non penso * che l'approccio di join() lo faccia. – the0ther

Problemi correlati