Предисловие
В последнее время на хабре стало как-то мало постов, относящихся к веб-разработке. Надеюсь, мой пост будет смотреться выигрышней за счет контраста :)
Сама статья:
На днях надо было сходить показать представителю заказчика, как пользоваться одной свежевстроенной в проект фичей.
За полчаса до выхода подготовил новый билд, протестировал.
По приезду оказалось, что у заказчика фича не работает. Неприятно получилось, в общем.
Оказалось, что я забыл удалить в функции-обработчике события вызов firebug'овской консоли (
console.log
… и т.п.) Со мной вообще часто бывает такое, что я то какой-то символ, случайно ткнув на клавиатуру, допишу, то, наоборот, удалю — короче, использование редакторов без подсветки синтакса и (желательно) анализа структуры кода мне противопоказаны. Так как я использую apache ant для развертывания приложения на боевой сервер, я дописал маленький скриптик, который уберет все вызовы
console.log(/* something */)
или console.dir(/* something */)
из вашего кода. Собственно, вот он:
- <?xml version="1.0" encoding="UTF-8"?>
- <project name="deploy" default="stripFirebugConsoleCalls" basedir=".">
- <!-- место, где сложены наши еще не сжатые и не слитые в один файл -->
- <property name="js" value="js/"/>
-
- <!-- регулярка для отлова нездоровых элементов (беззастенчиво утянута с yui builder'a, и слегка доведена напильником)
- github.com/yui/builder/blob/master/componentbuild/shared/properties.xml 79-я строка -->
- <property name="firebug.console.regex" value="^.*?(?:console.log|console.dir).*?(?:;|\).*;|(?:\r?\n.*?)*?\).*;).*;?.*?\r?\n" />
- <property name="firebug.console.regex.flags" value="mg" />
- <property name="firebug.console.regex.byline" value="false" />
- <property name="firebug.console.regex.replace" value="" />
-
- <!-- Сам таргет тоже без затей "вдохновен" YUI Builder'ом, оригинал тут:
- github.com/yui/builder/blob/master/componentbuild/3.x/module.xml 19-я строка -->
- <target name="stripFirebugConsoleCalls" description="Replace firebug console calls">
- <replaceregexp byline="${firebug.console.regex.byline}"
- match="${firebug.console.regex}"
- replace="${firebug.console.regex.replace}"
- flags="${firebug.console.regex.flags}">
- <fileset dir="${js}" includes="*.js" />
- </replaceregexp>
- </target>
- </project>
* This source code was highlighted with Source Code Highlighter.
Использовать так: создать xml-файл с удобным вам именем (например, boom.xml) и скопипастить в него этот код. Разумеется, стоит поправить значение переменной js, которая указывает на папку с еще не сжатыми js-скриптами. После этого запускаем адскую машину такой командой (для bash):
ant stripFirebugConsoleCalls -buildfile /path/to/boom.xml
Вот и все. Засим я откланиваюсь до следующего ЧП или конца проекта.