Автоматизируем F5 в браузере
я часто что-то пишу и проверяю как это выглядит в браузере, верстаю или программирую, правлю CSS…и т. д.
Мне надоело переходить в браузер и нажимать F5, переходить обратно в редактор Edit, Ctrl+S, Alt+Tab, F5 … — НА-ДО-Е-ЛО. и я автоматизировал этот процесс.
сначала кое что поставим
$ sudo apt-get install inotify-tools xdotool
вот кусок кода который заставляет браузер обновится
WID=`xdotool search --onlyvisible Chrome|head -n1` xdotool windowactivate --sync $WID; xdotool key --clearmodifiers ctrl+r;
а это кусок кода, чтобы следить за изменениями файлов:
inotifywait -mr source --exclude _build -e close_write -e create -e delete -e move | while read file event; do make singlehtml html # можно запустить сборку # тут еще что-то и обновим браузер done
Но быстро выясняется недостаток: сколько файлов обновилось, столько раз и сборка запускается. Нужно группировать близкие по времени события в одно. Можно написать скрипт на Питоне или обойтись шелл-скриптом, запускаемым из папки проекта:
inotifywait -mr source --exclude _build -e close_write -e create -e delete -e move --format '%w %e %T' --timefmt '%H%M%S' | while read file event tm; do current=$(date +'%H%M%S') delta=`expr $current - $tm` if [ $delta -lt 2 -a $delta -gt -2 ] ; then sleep 1 # спать 1 секунду на случай если не все файлы скопированы make html singlehtml # сборка # обновим браузер (вставьте ваш код сюда, скопируйте для Хрома сверху) fi done
Он сравнивает время события со временем, когда до него дошла очередь. Если событие произошло 1-2 секунды назад, значит надо собрать заново. Чтобы другие системы доделали своё дело (например закончился hg update), скрипт спит 1 секунду. Начинается сборка. После этого обрабатываются следующие события, и они будут уже очень старыми, поэтому скрипт их сразу пропускает.
Вы также можете встроить его в Makefile:
.PHONY autobuild autobuild: <скрипт>
написать пост помогла статья, в которой для меня пришлось изменить команды для F5, т.к. обновление в браузере у меня работает лучше. их вариант сразу не заработал.
Александр Петров
22.01.2015 в 09:56Что-то аналогичное работает в docpad из коробки, не знаю правда как там реализовано
Михаил Павлов
30.01.2015 в 17:00очень полезно при верстке — оттягивает утомление. но тут можно еще и свои команды вставить, сборку, упаковку, или запуск тестов.
Роман
04.02.2015 в 23:00А если прогаешь в eclipse, то можно настроить builder, чтобы он обновлял браузер при сохранении. Правда, от xdotool не уйти всё равно. Кстати, Google Chrome (да и Firebug тоже) позволяет вполне себе дорабатывать фронтенд прямо в консоли, включая JS, CSS и JS. Заработало — скопировал изменения в IDE.
Михаил Павлов
05.02.2015 в 11:40Рома, привет!
ты подписался на наши посты ? подпишись , если еще не подписался.
я так и делаю прямо в браузере мелкие пробы.но вот тут написал эту штуку и прямо экономия не столько времени сколько нервов.
Михаил Павлов
05.02.2015 в 11:43почитай мой пост про gui. так вышло, сделал просто штуковину, а она оказалась удобной.
это не какой-то новый фреймворк, а скорее сочетание готовых кусков. а вот aplib — мое творение, реально упрощает работу с моделью.
в статье правда трудно описать все положительные качества статья