bem/bem-tools
-
d3eadcf1308b61e0bfb3b83a17949e5e1d5e43ec
d3eadcf1308b61e0bfb3b83a17949e5e1d5e43ec
bem build \
-l bem-bl/blocks-common -l bem-bl/blocks-desktop \
-l blocks -l pages/index/blocks \
-d pages/index/index.bemhtml.js \
-t bem-bl/blocks-desktop/i-bem/bem/techs/bemhtml.js \
-o pages/index -n index -
0d200781766019005892e685a4688fe084274dae
0d200781766019005892e685a4688fe084274dae
Пример построения страниц при помощи `bem build` есть в демонстрационном
проекте на блоках `bem-bl`: https://github.com/toivonen/bem-bl-test/blob/master/GNUmakefile -
ddbdc5cc3529fadba03251552cf0acef6ee1befa
ddbdc5cc3529fadba03251552cf0acef6ee1befa
#### bem decl -
f5cd6027ae74cc2fc23164dc9bf7039796ac642c
f5cd6027ae74cc2fc23164dc9bf7039796ac642c
`bem decl` позволяет работать с файлами деклараций, а именно: -
02892d23ebe9be268c6d8b848428bc474d2a10dc
02892d23ebe9be268c6d8b848428bc474d2a10dc
* объединять несколько деклараций в одну
* «вычитать» декларации, то есть получать разницу между ними -
f86bda1883be176026f835a5fc750c300d8db226
f86bda1883be176026f835a5fc750c300d8db226
Для всех подкоманд `bem decl` в качестве входных деклараций (ключ `-d`) могут выступать
файлы как в формате `bemdecl.json`, так и файлы в формате `deps.js`. -
166f651c03e4603dfcbf4fbb9b3dd4db12ca11b1
166f651c03e4603dfcbf4fbb9b3dd4db12ca11b1
На выходе (ключ `-o`) всегда получается файл в формате `deps.js`. -
6d83df6a963a01dc5f71fe0d57f361db5901b437
6d83df6a963a01dc5f71fe0d57f361db5901b437
##### bem decl merge -
52c42f6ce13c3c0cb606390ee0a1cbbacf2c3a8d
52c42f6ce13c3c0cb606390ee0a1cbbacf2c3a8d
`bem decl merge` объединяет несколько деклараций в одну. Она бывает полезна в ситуациях,
когда, например, вам нужно собрать общую сборку для нескольких страниц. -
622d2b06804e97052e58d561b6422516e1717865
622d2b06804e97052e58d561b6422516e1717865
###### Создание декларации для всех страниц -
ede24c92972d66d22829794862532146cd3b2f33
ede24c92972d66d22829794862532146cd3b2f33
bem decl merge \
-d pages/index/index.deps.js \
-d pages/about/about.deps.js \
-d pages/search/search.deps.js \
-o pages/common/common.deps.js -
cd9e3b422a9ab148fcfa982ca667c4f98c6d1fae
cd9e3b422a9ab148fcfa982ca667c4f98c6d1fae
##### bem decl subtract -
23828d3dd6bc31ee7aa2e3b7a2a9953245b5f5c1
23828d3dd6bc31ee7aa2e3b7a2a9953245b5f5c1
`bem decl subtract` «вычитает» из первой указанной декларации все остальные. Она полезна
в ситуациях, когда, например, вам нужно сделать бандл, которые будет догружатся на страницу
по требованию. -
8e2466e8a8fe8e53b2cf5a077222e6c4d363ef69
8e2466e8a8fe8e53b2cf5a077222e6c4d363ef69
###### Создание декларации для подгружаемого по требованию «тяжёлого» блока -
045dfc244f01ba0b51f0c1f3cb076742c1bc3cd1
045dfc244f01ba0b51f0c1f3cb076742c1bc3cd1
bem decl subtract \
-d bundles/heavy-block/heavy-block.deps.js \
-d pages/common/common.deps.js \
-o bundles/heavy-block/heavy-block.bundle.js -
ac65ade6985c6e46a1a64cfe65234c23815ad89f
ac65ade6985c6e46a1a64cfe65234c23815ad89f
##### bem make
В команде `make` реализована сборка БЭМ проектов. Узнать больше о системах сборки можно из доклада Сергея Белова http://clubs.ya.ru/yasubbotnik/replies.xml?item_no=406. -
0981a62948ce2250b6ab496a9c2e58637e6943d9
0981a62948ce2250b6ab496a9c2e58637e6943d9
`bem make` собирает проект -
cbe1aeae26fec4c4e669b476ff1b8cc6323c27f2
cbe1aeae26fec4c4e669b476ff1b8cc6323c27f2
* подключает библиотеки блоков
* выполняет сборку в уровнях переопределения
* выполняет сборку бандлов
* собирает шаблоны (`bemhtml`)
* собирает `html` из `bemjson.js`
* собирает статические файлы (`js`, `css`)
* раскрывает `@import` в `css` файлах (`borschik`)
* раскрывает `borschik:link:include` в `js` файлах (`borschik`)
* сжимает `css` файлы при помощи `csso`
* сжимает `js` файлы при помощи `uglifyjs` -
2efc3934856d11f8c029d28b29e0b32b9c260214
2efc3934856d11f8c029d28b29e0b32b9c260214
##### bem server -
23cd7e58acdf4fe40e01b2e62469b5efec770fa2
23cd7e58acdf4fe40e01b2e62469b5efec770fa2
`bem server` веб-сервер разработчика, который делает доступными по http протоколу файлы, собранные на лету bem make. bem server может быть вам полезен для разработки статических страниц по bem методу. Вы просто вносите изменения в файлы проекта, обновляете страницу в браузере и видите новый результат — файлы, которые затронули ваши изменения, будут автоматически пересобраны. Если же в вашем проекте нет статических страниц, вы можете настроить бэкенд и окружение таким образом, чтобы он обращался к bem server за файлами стилей и скриптов. bem server позволяет общаться с ним через привычный TCP socket или через UNIX domain socket.