Close

16.01.2015

Автоматизируем 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, т.к. обновление в браузере у меня работает лучше. их вариант сразу не заработал.

5 Comments on “Автоматизируем 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 — мое творение, реально упрощает работу с моделью.
в статье правда трудно описать все положительные качества статья

Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *