2015-04-27 73 views
3

我有这个样子一饮而尽任务:咕嘟咕嘟-丑化包装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- concat
  • gulp-sourcemaps

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

回答

-1

简答:你不能,你不应该。 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()只有一次