Я использую console.assert для тестирования/отладки, но я хотел бы удалить это в производственном коде. Я в основном перезаписываю console.assert, чтобы быть функцией noop прямо сейчас, но задаюсь вопросом, есть ли лучший способ. Было бы идеально, если бы был препроцессор javascript, чтобы удалить это.
Удалить console.assert в производственном коде
Ответ 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. Это быстро и у вас есть много вариантов для вас.