Подтвердить что ты не робот

Удалить console.assert в производственном коде

Я использую console.assert для тестирования/отладки, но я хотел бы удалить это в производственном коде. Я в основном перезаписываю console.assert, чтобы быть функцией noop прямо сейчас, но задаюсь вопросом, есть ли лучший способ. Было бы идеально, если бы был препроцессор javascript, чтобы удалить это.

4b9b3361

Ответ 1

UglifyJS2 делает это легко: при запуске команды uglifyjs включите компрессор и скажите ему отказаться console.*:

uglifyjs [input files] --compress drop_console

Быстрый пример:

function doSomething() {
    console.log("This is just a debug message.");
    process.stdout.write("This is actual app code.\n");
}
doSomething();

... дает это при компиляции с помощью приведенной выше команды:

function doSomething(){process.stdout.write("This is actual app code.\n")}doSomething();

Это может быть ошибка UglifyJS2, но будьте осторожны с побочными эффектами в этих вызовах!

function doSomething() {
    var i = 0;
    console.log("This is just a debug message." + (++i));
    process.stdout.write("This is actual app code." + i + "\n");
}
doSomething();

... компилируется в

function doSomething(){var i=0;process.stdout.write("This is actual app code."+i+"\n")}doSomething();

... который write i как 0 вместо 1!

Ответ 2

Попробуйте Closure Compiler, в расширенном режиме он удаляет пустые функции (и многое другое).

Ответ 3

Другим инструментом является UglifyJS, который используется с nodejs. Это быстро и у вас есть много вариантов для вас.