3

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

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

  • 吞咽丑化
  • gulp-wrap
  • 吞咽连接
  • gulp-sourcemaps

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

4

1 回答 1

-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 做的包装也很自以为是,这意味着你不能自己添加任何东西,必须坚持使用它的模块包装器。

因此,如前所述:您的设置实际上是要进行的设置;-)

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

于 2015-04-27T08:42:14.673 回答