Gulp-uglify wrap JS

У меня есть глоток, который выглядит так:

gulp.task('compressjs', function() {
    gulp.src('local/**/*.js')
    .pipe(sourcemaps.init())
    // purpose compress here is only to give better error report
    .pipe(uglify())
    .pipe(concat('all.min.js'))
    .pipe(wrap('(function(){"use strict"; <%= contents %>\n})();'))
    // compress here to get best final compression
    .pipe(uglify())
    .pipe(sourcemaps.write('.'))
    .pipe(gulp.dest('public/app'));
});

Это задание глотка использует:

  • проглатывать-уродовать
  • Глоток-обертка
  • Глоток-CONCAT
  • проглатывать-sourcemaps

Все выше работает правильно. Но потом я обнаружил, что gulp-uglify кажется, идет со своим wrap функция. Как я могу использовать gulp-uglify функция, чтобы обернуть сценарий?

1 ответ

Краткий ответ: Вы не можете и не должны. Философия Gulp заключается в том, что одна задача должна делать только одну вещь. Таким образом, ваши настройки на самом деле прекрасно. Так что придерживайтесь своей конфигурации.

Немного более длинный ответ: есть плагин под названием gulp-uglifyjs что позволяет делать все оригинальное uglify можно сделать (включая обертку и тому подобное). Тем не менее, сообщество Gulp занесено в черный список как дубликат, а не "так, как предполагалось".

Код будет выглядеть так:

var uglify = require('gulp-uglifyjs');

gulp.task('scripts', function(){
   return gulp.src('./app/**/*.js')
       .pipe(uglify({
           wrap: true
        }))
        .pipe(gulp.dest('./dest'));
});

Обертка, выполненная Uglify, также очень самоуверенна, что означает, что вы не можете ничего добавить самостоятельно и должны придерживаться ее обертки модуля.

Итак, как и было сказано: на самом деле ваша установка - та, на которую стоит пойти;-)

Кстати: по причинам производительности я бы назвал uglify() только раз

Другие вопросы по тегам