2013-04-20 4 views
9

Obecnie używam grunt-shell do uruchamiania poleceń powłoki z zadania grunt. Czy istnieje lepszy sposób uruchamiania wielu poleceń w jednym zadaniu innym niż ich łączenie razem z "& &"?Jak uruchomić polecenia powłoki MULTIPLE w zadaniu gruntjs?

My Gruntfile (częściowe):

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

Tablica poleceń nie pracy, ale byłoby miło:

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

Odpowiedz

14

Można połączyć je ze sobą:

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

Powodem, dla którego zdecydowałem się nie obsługiwać tablic jest to, że niektórzy mogą chcieć ; jako separator zamiast &&, co ułatwia wykonanie powyższych czynności.

+0

Dzięki, czasami oczywista odpowiedź jest właściwa :). Nie mam takiego doświadczenia z linią poleceń, więc nie wiedziałem, czy użycie '&&' tutaj było do przyjęcia. Wciąż będę obsługiwał składnię tablic, ponieważ jest już znajomy (grunt.registerTask), a zatem idiomatyczny. Użytkownicy zawsze mogą 'dołączyć (';')'. –

+2

Użycie '&&' powoduje, że wykonuje on tylko poniższe polecenie, jeśli poprzednie zakończyło się pomyślnie. Użycie ';' oznacza, że ​​będzie kontynuować wykonywanie poleceń niezależnie. Zaktualizowałem dokumenty na przykładzie. Nie jesteś pierwszym pytającym o to :) –

+0

byłoby jeszcze lepiej, gdyby polecenie mogło być uruchamiane w sposób równoległy. Nie sądzę * podejście join() to robi. – the0ther

Powiązane problemy