2013-04-20 3 views
9

मैं grunt कार्य से खोल आदेश चलाने के लिए वर्तमान में grunt-shell का उपयोग करता हूं। '& &' के साथ उन्हें एक साथ स्ट्रिंग करने के अलावा एक से अधिक कार्यों को चलाने के लिए एक बेहतर तरीका है?मैं एक gruntjs कार्य में बहुस्तरीय खोल कमांड कैसे चला सकता हूँ?

मेरे 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) और इस प्रकार idiomatic। उपयोगकर्ता हमेशा 'शामिल हो सकते हैं ('; ') '। –

+2

'&&' परिणामों का उपयोग करते हुए केवल पिछले आदेश को निष्पादित करते हुए निम्न आदेश निष्पादित करते हैं। '; 'का उपयोग करना मतलब है कि यह बिना किसी आदेश के निष्पादन जारी रखेगा। मैंने दस्तावेज़ों को एक उदाहरण के साथ अद्यतन किया है। आप इस बारे में पहले पूछ रहे नहीं हैं :) –

+0

भी बेहतर होगा अगर कमांड समानांतर फैशन में चलाया जा सके। मैं नहीं सोचता * शामिल() दृष्टिकोण यह करता है। – the0ther

संबंधित मुद्दे