2014-07-17 10 views
6

मैं अलग-अलग .js-फ़ाइलों को गल्प के साथ छोटा करने की कोशिश करता हूं। पसंद:gulp पहले ही minified फ़ाइल को कम करता है

file_one.js --> file_one.min.js 
file_two.js --> file_two.min.js 

यह पहली बार काम करता है जब मैं गलती निष्पादित करता हूं। लेकिन अगर मैं इसे दूसरी बार चलाता हूं तो यह ऐसा लगता है:

file_one.js 
file_one.min.js 
file_one.min.min.js 
file_two.js 
file_two.min.js 
file_two.min.min.js 

और यह उस पैटर्न को दोहराता है जो मैं गलती निष्पादित करता हूं। मैं इसे पहले ही minified जेएस को कम करने से कैसे रोक सकता हूं।

gulp.task('scripts', function() { 
    return gulp.src('dest/*js') 
     .pipe(rename({ suffix: '.min' })) 
     .pipe(uglify()) 
     .pipe(gulp.dest('dest')); 
}); 

उत्तर

7

इसका कारण यह है आप अपने गैर minified फ़ाइलों का एक ही निर्देशिका में minified फ़ाइलों की बचत कर रहे हो रहा है:

मैं निम्नलिखित कोड का उपयोग करें। आपकी स्ट्रीम का पहला भाग (gulp.src) आपके dest फ़ोल्डर के अंदर सभी फ़ाइलों को पढ़ता है। चूंकि आप अपनी छोटी फ़ाइलों को एक ही फ़ोल्डर में सहेज रहे हैं, इसलिए यह दूसरी बार इसे फिर से छोटा कर रहा है। आप कुछ विकल्प हैं:

  1. बदलें कुछ और करने के लिए आउटपुट फ़ोल्डर
  2. बदलें (उदाहरण के gulp.dest('build') के लिए) gulp.src केवल गैर-minified फ़ाइलों
+0

धन्यवाद, यह शानदार काम करता है! – Oscar

+0

मुझे लगता है कि ओपी आपके बिंदु को कैसे करें 2 पर स्पष्टीकरण मांग रहा था। यानी "गैर-मिनीफाइंड फाइलों से मेल करें" –

+0

@ रिकडिविस सिर्फ टिप्पणियां पढ़ें। यह समाधान उसके लिए काम किया। डाउनवोट करने की कोई ज़रूरत नहीं है। –

21

आप में minified फ़ाइलें रख सकते हैं मैच के लिए एक अलग निर्देशिका, या आप उन्हें gulp.src इस तरह में बाहर कर सकते हैं:

gulp.task('scripts', function() { 
    return gulp.src(['dest/*.js', '!dest/*.min.js']) 
     .pipe(rename({ suffix: '.min' })) 
     .pipe(uglify()) 
     .pipe(gulp.dest('dest')); 
}); 
+1

को पहले एक अलग सरणी में minified फ़ाइलों को बाहर रखा जाना था: 'gulp.src ([' css/*। Css '], ['! Css/*। Min.css '])', इसे एक सेट में पसंद नहीं है '[]' के। यह मेरे लिए काम किया। धन्यवाद! – rhand

0

आप पी हो रही है डुप्लिकेट के साथ roblem ताकि फ़ाइल को फिर से चलाने के लिए आपको पहले गंतव्य फ़ाइल को हटाना होगा। उदाहरण देखें:

//clean 
gulp.task('clean', function(){ 
    return del(['dist']); 
}); 

    //Default task 
    gulp.task('default',['clean'], function(){ 
     gulp.start('usemin','imagemin','copy','views'); 
    }); 
संबंधित मुद्दे