2014-06-19 4 views
8

मेरे पास एक गल्प कार्य है जो छवियों को संपीड़ित करने के लिए gulp-imagemin का उपयोग करता है। जब मैं इस निर्देशिका में नई फाइलें जोड़ता हूं, तो मैं इस कार्य को भी उन्हें संपीड़ित करना चाहता हूं। मैंने पढ़ा है कि gulp.watch doesn't trigger on new files और मुझे गल्फ-घड़ी का प्रयास करना चाहिए, इसलिए मैंने इसे ऐसा इस्तेमाल किया;क्यों नहीं जोड़े गए फाइलें मेरे गल्प-घड़ी कार्य को ट्रिगर करती हैं?

gulp.task('images', function() { 
    watch({glob: './source/images/*'}, function (files) { 
    return files 
     .pipe(plumber()) 
     .pipe(imagemin({ 
     progressive: true, 
     interlaced: true 
     })) 
     .pipe(gulp.dest('./www')); 
    }); 
}); 

यह पहली बार चलाने पर gulp.watch रूप में एक ही काम करता है, लेकिन जब मैं निर्देशिका कुछ भी नहीं करने के लिए एक नई छवि को जोड़ने होता है। अगर मैं एक मौजूदा फाइल को ओवरराइट करता हूं, तो यह फिर से कार्य चलाता है, इसलिए यह अलग-अलग व्यवहार करता है।

इस "बैच मोड" नामक गल्प-घड़ी पर प्रलेखन और कहा कि मैं कार्य को प्रति फ़ाइल आधार पर भी चला सकता हूं, इसलिए मैंने इस तरह से भी कोशिश की;

gulp.task('images', function() { 
    gulp.src('./source/images/*') 
    .pipe(watch()) 
    .pipe(plumber()) 
    .pipe(imagemin({ 
     progressive: true, 
     interlaced: true 
    })) 
    .pipe(gulp.dest('./www')); 
}); 

लेकिन कुछ भी नहीं बदला। कार्य को ट्रिगर करने वाली मेरी छवि निर्देशिका में फ़ाइलों को क्यों नहीं जोड़ रहा है?

+0

के संभावित डुप्लिकेट [gulps नया या नष्ट कर दिया फ़ाइलों के लिए ट्रिगर नहीं gulp.watch?] (Http://stackoverflow.com/questions/22391527/gulps-gulp-watch-not-triggered नई-या-हटाई गई फ़ाइलों के लिए) – Rimian

उत्तर

8

अधिकतर इस तरह के प्रश्न gaze पैकेज और इसकी आंतरिक प्रक्रियाओं पर रीडायरेक्ट किए जाते हैं, जो आपके ओएस पर जटिल देखने की प्रक्रियाओं को चलाता है। इस मामले में आप विकल्प glob के लिए images/**/* पारित करना चाहिए, ताकि निगाहें छवियों निर्देशिका में सभी (नई सहित) फ़ाइलें देखेंगे:

var gulp = require('gulp'); 
var watch = require('gulp-watch'); 
var imagemin = require('gulp-imagemin'); 

gulp.task('default', function() { 
    watch({glob: 'images/**/*'}, function (files) { 
     files.pipe(imagemin({ 
     progressive: true, 
     interlaced: true 
     })) 
     .pipe(gulp.dest('./www')); 
    }); 
}); 

लेकिन इस मामले को ठीक नहीं भर सकते हैं, आप खाली छवियों निर्देशिका है जब। यदि आप उन्हें देखना चाहते हैं, तो ['images', 'images/**/*'] को ग्लोब पर पास करें, और यह निर्देशिका को देखेगा, जो प्रारंभ में खाली है।

पी। इस मामले में आपको gulp-plumber की आवश्यकता नहीं है, क्योंकि घड़ी फ़ंक्शन को फिर से चालू कर देगी, जो हर बार इमेजमिन का उपयोग करती है, भले ही इमेजमिन त्रुटि को पॉप करे।

+3

धन्यवाद! मैंने स्रोत/छवियों से "./" हटा दिया/और यह अब काम करता है! – arkanciscan

15

gulp.watch में एक अतिरिक्त तर्क {cwd:'./'} जोड़ा जा रहा है मेरे लिए काम किया:

gulp.watch('src/js/**/*.js',{cwd:'./'},['scripts']); 

2 बातें इस काम कर पाने के लिए:

से बचें में फ़ाइल/फ़ोल्डर पैटर्न ./

सुनिश्चित करें

अच्छी किस्मत के लिए मूल्य में।

रेफरी: - https://stackoverflow.com/a/34346524/4742733

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