正如问题所述。我知道gulp-uglify可以用一个简单的方法来解释:
gulp.src('filename')
.pipe(uglify())
有没有办法告诉它去掉console.log语句呢?
答案 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。它不仅会删除控制台语句,还会删除警报和调试器语句。
从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的回答中似乎不支持。