rebuilder

Simple micro bem server, which rebuild technology on files change

npm install rebuilder

Rebuilder

Сервер простой пересборки проекта на лету. Технологии priv.js, pub.js применяются после автоматической перезагрузки проекта, CSS -- без перезагрузки.

Install:

  1. Подключить rebuilder через контрибы и сделать внутри директории с контрибом make:
     echo "github.yandex-team.ru/search-interfaces/rebuilder" >> configs/development/git && gmake -B git && gmake -B -C contrib/rebuilder
    

Важно подключать contrib только для development окружения.

  1. Настроить rebuilder. Пример подключаемого config'a для development окружения.

    Файл configs/development/blocks-common/i-rebuilder/__config/i-rebuilder__config.priv.js содержит конфиг:

     config.rebuilder = config.rebuilder || {};
    
     config.rebuilder.ports = {
         "default" : 37080,
         "sbmaxx"  : 37081,
         "nerevar" : 37082,
         "feugnix" : 37083,
         "anzaika" : 37084
     };    
    
  1. В проектный GNUmakefile добавить новую цель rebus для запуска rebulder (в качестве configs/development/blocks-common/i-rebuilder/__config/i-rebuilder__config.priv.js указать путь к своему конфигу)

     ifeq ($(wildcard configs/current/blocks-common/i-rebuilder/__config/i-rebuilder__config.priv.js),)
     WS_PORT = 37010
     else
     WS_PORT = $(shell cat configs/current/blocks-common/i-rebuilder/__config/i-rebuilder__config.priv.js | grep `whoami` | grep -oE "[0-9]+")
     endif
    
     rebus:
         @node contrib/rebuilder/rebuilder.js $(WS_PORT)
    
  2. Запустить [g]make rebus и наслаждаться

Features:

Серверная часть:

  • конфигурирование отслеживаемых типов файлов и директорий;
  • корректная работа под FreeBSD, Linux, Mac;
  • обработка ошибок сборки
  • склейка нескольких обновленных файлов в один запуск сборки, отложенные запуски сборки при изменении файлов в процессе сборки.

Клиентская часть:

  • включение/выключение автоматического процесса сборки на сервере;
  • нотификация об изменения блоков и начале автоматической пересборки;
  • автоматическое применение изменений браузером или рефреш страницы в зависимости от технологии (уведомление перед рефрешем).

Технологии: node.js, npm, websockets

npm loves you