2014-07-17 9 views
6

Próbuję zminimalizować oddzielne pliki .js z gulp. Na przykład:gulp minified już zminimalizowany plik

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

Po raz pierwszy wykonuję haust. Ale jeśli uruchomię go po raz drugi, wygląda to następująco:

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

I powtarza ten wzór za każdym razem, gdy wykonuję łyk. Jak mogę zatrzymać to od minify już minified js.

używam następujący kod:

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

Odpowiedz

7

Dzieje się tak dlatego, że zapisywania minified plików w tym samym katalogu swoich niezarejestrowanych plików minified. Pierwsza część strumienia (gulp.src) odczytuje wszystkie pliki znajdujące się w folderze dest. Ponieważ zapisujesz zminimalizowane pliki w tym samym folderze, minimalizuje je ponownie przy drugim uruchomieniu. Masz kilka opcji:

  1. zmienić folder wyjściowy na coś innego (na przykład gulp.dest('build'))
  2. Zmian gulp.src dopasować tylko non-minified plików
+0

dziękuję, działało wspaniale! – Oscar

+0

Sądzę, że OP wymagał wyjaśnienia, jak wykonać swój punkt 2. "Dopasuj niezminimalizowane pliki" –

+0

@RickDavies po prostu przeczytaj komentarze. To rozwiązanie działało dla niego. Nie trzeba zgadywać. –

21

można umieścić minified pliki innym katalogu, czy można wykluczyć je w gulp.src tak:

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

Gdyby wyłączyć wykluczone pliki w osobnej tablicy: 'gulp.src (['css/*. Css'], ['! Css/*. Min.css'])', inaczej niż w jednym zestawie z '[]'. To działało dla mnie. Dzięki! – rhand

0

masz p roblem z duplikatem, więc musisz najpierw usunąć plik docelowy, aby ponownie uruchomić plik. Zobacz przykład:

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

    //Default task 
    gulp.task('default',['clean'], function(){ 
     gulp.start('usemin','imagemin','copy','views'); 
    });