2016-01-07 7 views
1

Я хочу использовать gulp-useref, чтобы объединить все мои файлы JavaScript в один.Использование gulp-if с gulp-useref и gulp-uglify

В моих файлах JavaScript У меня есть смесь предварительно уменьшенная и не-уменьшенная файлов.

Я бы хотел только очистить файлы, которые еще не были уменьшены (для повышения производительности сборки) и https://github.com/jonkemp/gulp-useref#transform-streams предполагает, что это возможно (на самом деле это выглядит просто). Ниже мой Глоток определение задачи:

gulp.task('compile', function() { 
    return gulp.src('index.html') 
     .pipe(useref({}, lazypipe().pipe(function() { 
      return gulpif(['*.js', '!*.min.js'], uglify()); 
     }))) 
     .pipe(gulp.dest(paths.build)); 
}); 

Это работает, в том, что я получаю каскадный файл, но не-Минимизированные файлы остаются unminified (предварительно уменьшенные файлы еще уменьшенными - как и ожидались).

Мой код частично основан на следующем: https://github.com/craigjennings11/gulp-uglifyjs

Любая идея, почему мои файлы не уменьшенная?


Список литературы

ответ

0

Вы пробовали это?

gulp.task('compile', function() { 
    return gulp.src('index.html') 
     .pipe(useref()) 
     .pipe(gulpif(['*.js', '!*.min.js'], uglify())) 
     .pipe(gulp.dest(paths.build)); 
}); 
+0

Эй, да, был моим оригинальным кодом, но насколько я могу судить, я просто получаю один конкатенированный файл на этом этапе, так что он просто минимизирует все. – atwright147

+0

Разве это не то, что вы хотите? Плагин gulp-useref объединяет файлы по умолчанию, поэтому вам нужно будет использовать параметр no-concat, чтобы разделить их, а затем объединить их снова в другом месте. – jonkemp

+0

В конечном счете, да. Тем не менее, я хочу обработать некоторые из этих файлов до конкатенации - следовательно, использование потока преобразования (https://github.com/jonkemp/gulp-useref#transform-streams) – atwright147

1

Проблема здесь состоит в том, что useref проходит только через concatinated имена файлов, а не отдельные имена файлов, которые получают concatinated.

//in html 
<!-- build:js assets/scripts/concat.js --> // <-- this one 
<script src="assets/scripts/jquery.min.js"></script> // <-- not this one 
<script src="assets/scripts/gsap.min.js"></script> // <-- not this one 
<script src="assets/scripts/script1.js"></script> // <-- not this one 
<script src="assets/scripts/script2.js"></script> // <-- not this one 
<!-- endbuild --> 

Итак, что бы вы ни говорили, после этого необходимо будет применить ко всему объединенному файлу.

Но с небольшой перегруппировки вы могли бы сделать что-то вроде этого:

//in html 
<!-- build:js assets/scripts/libs.js --> 
<script src="assets/scripts/jquery.min.js"></script> 
<script src="assets/scripts/gsap.min.js"></script> 
<!-- endbuild --> 

<!-- build:js assets/scripts/main.js --> 
<script src="assets/scripts/script1.js"></script> 
<script src="assets/scripts/script2.js"></script> 
<!-- endbuild --> 

Таким образом, вы можете использовать глотка, если изолировать main.js к уродовать:

.pipe(gulpif('main.js', uglify()))