Gulp-uglify包装JS

时间:2015-04-27 08:27:49

标签: javascript node.js gulp gulp-concat gulp-uglify

我有一个看起来像这样的gulp任务:

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任务使用:

  • 吞掉-丑化
  • 吞缠绕
  • 吞-的concat
  • 吞-sourcemaps

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

1 个答案:

答案 0 :(得分:-1)

简短的回答:你不能,你也不应该这样做。 Gulp的理念是,一项任务应该只做一件事。所以你的设置实际上非常好。所以坚持你的配置。

稍微长一点的回答:有一个名为gulp-uglifyjs的插件,它可以让您完成原始uglify可以执行的所有操作(包括包装和类似的东西)。然而,它被Gulp社区列入黑名单,因为它是一个复制品而不是Gulp本来就是&#34;。

代码如下所示:

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

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

Uglify完成的包装也非常自以为是,这意味着您无法自行添加任何内容,并且必须坚持使用它的模块包装。

所以,正如所说:你的设置实际上是一个; - )

顺便说一下:出于性能原因,我只会打电话给uglify()