2015-02-11 10 views
11

मेरे पास मेरी gulpFile में निम्नलिखित कार्य, मेरी टीम पर किसी और के द्वारा बनाई गई:एक Gulp कार्य सेट डिफ़ॉल्ट होने की

gulp.task('serve', [], function(){ 
    gulp.run(
    'fonts', 
    'browsersync', 
    'watch' 
); 
}); 

मैं इसे अकेला छोड़ने के लिए चाहते हैं, लेकिन मैं यह भी मैप करने के लिए करना चाहता था इस कार्य के लिए डिफ़ॉल्ट कार्य। इसलिए मैं करने की कोशिश की:

gulp.task('default',['serve']); 

यह काम करने के लिए दिखाई दिया, कि सर्वर रन में, लेकिन "घड़ी" काम नहीं हो रहा है किसी कारण से, मैं परिवर्तन पर ब्राउज़र ताज़ा नहीं मिल रहा है।

यदि मैं "गल्प सेवा" चलाता हूं लेकिन "गल्प" नहीं करता तो यह सभी योजनाबद्ध रूप से कार्य करता है। मैंने गलत क्या किया?

संपादित करें: यहाँ घड़ी कार्य है:

gulp.task('watch', ['styles', 'browsersync'], function() { //'default' 
    gulp.watch(
    [ 
     './app/assets/sass/**/*.scss', 
     './app/modules/**/*.scss' 
    ], ['styles']); 

    gulp.watch([ 
    './app/**/*.js', 
    './app/**/*.html' 
    ], function() { 
    reload(); 
    }); 

}); 
+0

आपका घड़ी का कार्य कैसा दिखता है? – Seth

+0

मूल प्रश्न में जोड़ा गया। माफ़ कीजिये। – Steve

उत्तर

13

यह serve अंदर चल रहा है के बजाय अपने डिफ़ॉल्ट कार्य को अपडेट करने वालों बहस में घड़ी कार्य शामिल करने के लिए प्रयास करें। इसलिए जैसा:

gulp.task('default', ['serve', 'watch']); 

आप asynchronous task support पर Gulp प्रलेखन चेकआउट, विशेष रूप से पिछले उदाहरण हैं, तो आप यह है कि आप खत्म करने के लिए एक आश्रित कार्य की आवश्यकता हो सकती से पहले ही निर्दिष्ट कार्य शुरू करने के लिए माना जाता है देखेंगे।

var gulp = require('gulp'); 

// takes in a callback so the engine knows when it'll be done 
gulp.task('one', function(cb) { 
    // do stuff -- async or otherwise 
    cb(err); // if err is not null and not undefined, the run will stop, and note that it failed 
}); 

// identifies a dependent task must be complete before this one begins 
gulp.task('two', ['one'], function() { 
    // task 'one' is done now 
}); 

gulp.task('default', ['one', 'two']); 
6

gulp.run और gulp.start बुरा व्यवहार माना जाता है:

https://github.com/gulpjs/gulp/issues/426
https://github.com/gulpjs/gulp/issues/505

दुर्भाग्य से, इस सवाल का जवाब यहाँ आकर अपने सहकर्मी वास्तव में नहीं समझ सकते हैं कि Gulp प्रकट होता है। आप अपने कोड को बदले बिना इस समस्या को ठीक करने में सक्षम नहीं हो सकते हैं।

अधिक संदर्भ के बिना, संपूर्ण gulpfile की तरह, मैं आपकी सटीक समस्या को पुन: उत्पन्न नहीं कर सकता। हालांकि, मेरा झुकाव यह है कि गुलप ने असीमित रूप से/लगातार काम करने के तरीके से ऐसा कुछ किया है। यह मामला हो सकता है कि आपका 'डिफ़ॉल्ट' कार्य समय से बाहर निकल रहा है, क्योंकि gulp.run सिंक्रनाइज़ निष्पादित नहीं करता है। एक तरफ या दूसरा, गुलप उलझन में है कि किस काम को इंतजार करने की ज़रूरत है, कब। आप अपने रन-अनुक्रम को प्रबंधित करने के लिए दो पूरी तरह से अलग-अलग टूल का उपयोग कर रहे हैं।

के बजाय gulp.run, अपने 'की सेवा' कार्य वास्तव में अन्य कार्यों को चलाने के लिए निर्भरता का उपयोग करना चाहिए:

gulp.task('serve', ['fonts', 'browsersync', 'watch']); 
gulp.task('default', ['serve']); 

इसके अलावा, यह उनका कहना है कि अपनी घड़ी कार्य पहले से ही एक निर्भरता के रूप में 'browsersync' लिस्टिंग है लायक है। तकनीकी रूप से गलत नहीं होने पर (गुलप दूसरी बार इसे अनदेखा कर देगा), इससे अधिक जटिलता और भ्रम पैदा हो सकता है और इसलिए शायद यह एक अच्छा विचार नहीं है। यदि 'घड़ी' 'browsersync' पर निर्भर करता है, तो आप सिर्फ 'की सेवा' से 'browsersync' निर्भरता निकाल सकते हैं:

gulp.task('watch', ['styles', 'browsersync'], function() { 
    gulp.watch([ 
    './app/assets/sass/**/*.scss', 
    './app/modules/**/*.scss' 
    ], ['styles']); 

    gulp.watch([ 
    './app/**/*.js', 
    './app/**/*.html' 
    ], function() { 
    reload(); 
    }); 
}); 
gulp.task('serve', ['fonts', 'watch']); 
gulp.task('default', ['serve']); 

यह आपको परिणाम आप देख रहे हैं मिलना चाहिए।


सभी ही कहा जा रहा है, अगर आप वास्तव में बुरा व्यवहार निम्नलिखित पर जोर देते हैं, तो आप अपने 'डिफ़ॉल्ट' कार्य में gulp.run आज़मा सकते हैं:

gulp.task('default', function() { 
    gulp.run('serve'); 
}); 

मुझे लगता है अपने मुख्य समस्या यह है कि आप मिश्रण कर रहे हैं वह यह है कि सरणी कार्य निर्भरताओं का उपयोग और gulp.run, लेकिन किसी भी तरह से, gulp.run "इसे गलत कर रहा है"।

+0

आप यह भी सुनिश्चित करने के लिए गुलप डॉक्स पर एक नज़र डालना चाहते हैं कि श्रृंखला में एसिंक्रोनस कार्यों को निष्पादित किया गया है: https://github.com/gulpjs/gulp/blob/master/docs/API.md#async -task-समर्थन –

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