Добрый. Есть замечательный пример https://github.com/bem/project-stub/blob/master/gulpfile.js Но непонятно как организовать watcher и livereload при такой сборке.. когда все одним таском, мне же не нужно собирать js, если я, к примеру, изменил что-то в less файле...
Еще можно пояснить в каких случаях используются эти технологии "js: ['vanilla.js', 'browser.js', 'js']"?
Технически, можно разделить этот таск на несколько, где каждый будет собирать какой-то конкретный файл, но смысла в этом не так уж много. Для watch и livereload нужно, чтобы сборка запускалась для нужных файлов (должно определяться по зависимостям) и . Технически такая возможность есть, но код написан не весь. Нужно дописать точечную сборку (чтобы таска могла собирать какой-то 1 файл) и по изменениям в исходных файлах уметь инвалидировать кеш результирующих файлов, чтобы пересобирать только нужные.
По поводу зачем нужны vanilla.js и browser.js — они нужны, чтобы в сборку результирующего js-файла попадали не только block.js, но еще и block.vanilla.js, block.browser.js.
С livereload думаю можно просто повесить его на изменение чего-либо в результирующем бандле.. Верно ли я понимаю, что если я поменял js или less в конкретном блоке, то бем-билдер пересоберет все технологии именно этого конкретного блока? И еще.. в проектах средних размеров, типа типичного интернет магазина, без наворотов всяких, быстро ли происходит сборка? По поводу js, мне непонятно "block.js, но еще и block.vanilla.js, block.browser.js" block.browser.js - это для отправки клиенту, тут понятно, а остальное для чего?) Поясните если не затруднит)
Может пригодится мой пример разбития на таски с watcher и livereload.
Спасибо