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'));
});

此吞咽任务使用:

  • 咕噜咕噜
  • 咕噜咕噜
  • 咕噜
  • 咕噜
  • 咕噜-源地图

以上所有内容都正常运行。但后来我发现gulp-uglify似乎带有它自己的wrap功能。如何使用gulp-uglify函数包装脚本?

简短的回答:你不能,你不应该。Gulp的哲学是,一项任务应该只做一件事。所以你的设置实际上很好。因此,请坚持您的配置。

稍长的答案:有一个名为gulp-uglifyjs的插件,它使您能够执行原始uglify可以执行的所有操作(包括包装和类似的事情)。然而,它被Gulp社区列为重复的黑名单,而不是"以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()打电话一次

最新更新