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

Rol*_*ndo 16 gulp

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

gulp.src('filename')
.pipe(uglify())
Run Code Online (Sandbox Code Playgroud)

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

Fil*_*ill 23

就在这里!正如gulp-uglifyjs文档提到的那样你可以传递额外的选项(gulp-uglifyjs文档):

uglify([filename], [options])
Run Code Online (Sandbox Code Playgroud)

所有可用选项均可在压缩机UglifyJS文档页面上找到.从'drop_console:true'应该有帮助:

uglify([filename], {
    compress: {
         drop_console: true
    }
})
Run Code Online (Sandbox Code Playgroud)

  • 此插件已弃用 (4认同)

Elg*_*tel 21

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

使用strip-debug从JavaScript代码中剥离控制台,警报和调试器语句

安装使用:

npm install --save-dev gulp-strip-debug
Run Code Online (Sandbox Code Playgroud)

并使用它像:

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'));
});
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 5

随着一饮而尽,丑化(不一饮而尽-uglifyjs),你可以通过使用类似的策略去除任意代码编译常数压缩配置(链接去吞掉-uglifyjs,但应该是相同的一饮而尽,丑化):

.pipe(uglify({
    compress: {
        global_defs: {
            "DEBUG": false
        }
    }
}))
Run Code Online (Sandbox Code Playgroud)

然后在你的代码中写下类似的内容

if (DEBUG)
{
    console.log("Application started...");
    //...
}
Run Code Online (Sandbox Code Playgroud)

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

gulp-uglify似乎不支持在Fill的答案中使用drop_console.