2013-04-20 70 views
9

我目前使用grunt-shellgrunt任務運行shell命令。除了用'& &'將它們串在一起之外,還有更好的方法可以在一個任務中運行多個命令嗎?如何在gruntjs任務中運行MULTIPLE shell命令?

我Gruntfile(部分):

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

命令數組不工作,但它會很高興:

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

回答

14

你可以將它們連接在一起:

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

我選擇不支持數組的原因是有些人可能想要;作爲分隔符而不是&&,這使得上述操作更容易。

+0

謝謝,有時顯而易見的答案是正確的:)。我對命令行沒有經驗,因此我不知道在這裏使用&&是否可以接受。 我仍然會支持數組語法,因爲它已經很熟悉(grunt.registerTask),因此是慣用的。用戶總是可以加入(';')'。 – 2013-04-20 23:24:28

+2

使用'&&'結果只有在前一次成功時才執行以下命令。使用';'表示它將繼續執行命令,無論如何。我用一個例子更新了文檔。你不是第一個問這個:) – 2013-04-20 23:26:50

+0

會更好,如果命令可以以並行方式運行。我不認爲join()方法會這樣做。 – the0ther 2013-05-10 20:52:11