可以gulp-uglify删除console.log语句吗?

时间:2015-03-09 13:54:41

标签: gulp

正如问题所述。我知道gulp-uglify可以用一个简单的方法来解释:

gulp.src('filename')
.pipe(uglify())

有没有办法告诉它去掉console.log语句呢?

3 个答案:

答案 0 :(得分:22)

是的! 正如gulp-uglifyjs文档提到的那样,你可以传递额外的选项(gulp-uglifyjs documentation):

uglify([filename], [options])

所有可用选项均可在the compressor UglifyJS documentation page上找到。从那个' drop_console:true'应该有所帮助:

uglify([filename], {
    compress: {
         drop_console: true
    }
})

答案 1 :(得分:20)

更好的是:你可以使用专门的gulp插件:gulp-strip-debug。它不仅会删除控制台语句,还会删除警报和调试器语句。

  

使用strip-debug

从JavaScript代码中删除控制台,警报和调试器语句

使用以下方式安装:

npm install --save-dev gulp-strip-debug

并使用它:

var gulp = require('gulp');
var stripDebug = require('gulp-strip-debug');

gulp.task('default', function () {
    return gulp.src('src/app.js')
        .pipe(stripDebug())
        .pipe(gulp.dest('dist'));
});

答案 2 :(得分:5)

使用gulp-uglify(不是gulp-uglifyjs),您可以使用与compilations constants类似的策略删除任意代码(链接转到 gulp-uglifyjs ,但对于 gulp-uglify 应该是相同的:

.pipe(uglify({
    compress: {
        global_defs: {
            "DEBUG": false
        }
    }
}))

然后在你的代码中编写类似

的内容
if (DEBUG)
{
    console.log("Application started...");
    //...
}

如果将global_defs中的DEBUG设置为true,gulp-uglify将删除条件但保留内部分支。如果DEBUG设置为false,它将删除两者。

gulp-uglify似乎不支持

drop_console ,因为在Fill的回答中似乎不支持。