Может ли gulp -uglify отключить инструкции console.log?

Как говорится в этом вопросе. Я знаю, что gulp -uglify может uglify с помощью простого:

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

Есть ли способ сообщить об этом также и для команд console.log?

Ответ 1

Гораздо лучше: вы можете использовать специализированный плагин gulp: gulp-strip-debug. Он не только отделяет консольные операторы, но также выводит предупреждения и отладчики.

Инструкции консоли консоли, предупреждения и отладчика из кода JavaScript с strip-debug

установите его, используя:

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

Да, есть! Как упоминается в документации gulp -uglifyjs, вы можете передать дополнительные параметры (gulp -uglifyjs documentation):

uglify([filename], [options])

Все доступные параметры можно найти на странице документации компрессора UglifyJS. Из этого "drop_console: true" следует помочь:

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

Ответ 3

С gulp-uglify (не gulp -uglifyjs) вы можете удалить произвольный код, используя стратегию, похожую на константы компиляции с конфигурацией сжатия (ссылка идет на gulp -uglifyjs, но должен быть одинаковым для gulp -uglify):

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

И тогда в коде напишите что-нибудь вроде

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

если вы установите для DEBUG в global_defs значение true, gulp -uglify удалит условное выражение, но оставит внутреннюю ветвь. Если DEBUG установлен в значение false, он удалит оба.

drop_console, как и в ответе Fill, похоже, не поддерживается в gulp -uglify.