2014-04-20 11 views
5

मेरे पास एक शानदार कार्य है जो एक जेकिल बाल प्रक्रिया को जन्म देता है। यह _site में एक HTML फ़ाइल में मेरे मार्कडाउन संकलित करता है।बाल प्रक्रियाओं को जन्म देने पर गुल निर्भरताओं का प्रबंधन

मेरे पास एक और कार्य है जिसमें यह कार्य निर्भरता के रूप में है, क्योंकि यह जेनरेट किए गए HTML की कुछ पोस्ट-प्रोसेसिंग करता है। हालांकि, यह अपने आप में बहुत जल्दी से चलाता है - के रूप में यह प्रतीत होता है कि बच्चे की प्रक्रिया निर्भरता प्रबंधन

में कारक नहीं है मैं यह कैसे सुनिश्चित कर सकते हैं कि html हमेशा चलाता jekyll के बाद - अधिमानतः का उपयोग किए बिना:

jekyll.on('exit', function (code, signal) { 
    gulp.run('html'); 
}); 

कार्य:

gulp.task('jekyll', ['scripts', 'styles'], function() { 
    var spawn = require('child_process').spawn; 
    var jekyll = spawn('jekyll', ['build', '--config', 'app/markdown/_config.yml', '--trace'], {stdio: 'inherit'}); 
}); 



gulp.task('html', ['jekyll'] function() { 
    return gulp.src('_site/*.html') 
    .pipe($.useref.assets()) 
}); 

उत्तर

13

तो की तरह, include an async callback करने के लिए अपने jekyll कार्य बदलें:

gulp.task('jekyll', ['scripts', 'styles'], function (gulpCallBack) { 
    var spawn = require('child_process').spawn; 
    var jekyll = spawn('jekyll', ['build', '--config', 'app/markdown/_config.yml', '--trace'], {stdio: 'inherit'}); 

    jekyll.on('exit', function(code) { 
     gulpCallBack(code === 0 ? null :'ERROR: Jekyll process exited with code: '+code'); 
    }); 
}); 

जो कुछ भी बदला गया है वह कार्य फ़ंक्शन के हस्ताक्षर में कॉलबैक फ़ंक्शन तर्क जोड़ रहा है, और कॉलबैक को संभालने के लिए आपकी स्पॉन्डेड प्रक्रिया पर exit ईवेंट सुन रहा है।

अब जब जैकिल प्रक्रिया निकलती है तो गल्प को अधिसूचित किया जा सकता है। निकास कोड का उपयोग करने से आप त्रुटियों को कैप्चर कर सकते हैं और प्रसंस्करण रोक सकते हैं।

ध्यान दें: आप को यह आसान बनाने के लिए, बाहर निकलें कोड के आधार पर सक्षम हो सकता है:

jekyll.on('exit', gulpCallBack); 
+0

धन्यवाद, मैं डॉक्स अधिक अच्छी तरह से पढ़ लिया है चाहिए – Joseph

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