Ребят, привет!
Где почитать (или кто объяснит) подробности файлов конфига проекта. Смотрю project-stub, много подпапок, много чего подключено, закешировано, переопределено(( Хотелось бы свой минимальный сетап который можно строить с помощью bem-tools и в котором только те зависимости, которые нужны.
Более конкретно,
1) level.js - файл конфигурации уровня переопределения, для чего нужен и как его cjздавать (например, для уровня страниц или для уровня билиотеки визуальных блоков)?
2)make.js - мейкфайл, что за js функции магические внутри? как указать API v2 для технологии bemhtml? какие ещё возможности даёт файл, что можно конфигурировать?
3) repo.db.js - файл путей до библиотек. В целом понятно, а если билотека не Git, а просто файлы js (или какие ещё)?
4)в папке levels - тоже есть описания всех уровней проекта. Что за чёрная магия?) Для чего используется?
5) куда кладутся результаты сборки и как проверить что в них не попало ничего лишнего? (только минимальный html+css+js)
если что можно убрать/не использовать, посоветуйте тоже плз. Планирую написать свой мини проект-стаб, библиотека блоков и стилей и шаблонов на bemhtml, а bemjson генерировать сервером
Спасибо за помощь)
Стоит не париться про тяжесть сборки проекта, потому что блоки будут собираться только при их необходимости в заявленных зависимостях конкретных страниц/бандлов. Скажем, вы можете подключить все мыслимые и немыслемые библиотеки, но они не будут использоваться, если вы не тащите их блоки.
1) Он нужен для описания из чего строятся блоки в блоках библитеки/блоках бандла, лежит в project/**blocks/.bem/level.js. Кроме того, само наличие файла является меткой для бемтулзов, что это папка с блоками. Для уровня страниц не нужен, но если в нем есть блоки — то нужен в блоках. Установка именование для уровня — пример того, что можно описать в level.js
2) Пример make файл для версии 0.6.х, Пример make файла для 1.0.х Нужен для того, чтобы описать бандлы/страницы и, кроме того, перегрузить кучу всяких вещей. Если не знать как оно развивалось, со стороны кажется, что там много магии. Речь там идет о всяких Node (всякие ноды в 1.0.х) — общее понятие, расширяемое для бандлов, уровней, и пр. Make версии 0.6.x и Archах. Общие данные о сборке проекта, самый магический из всех. При чем, если посмотреть на оба исходника, то миграция с 0.6 до 1.0 потребует чуть ли не полностью переписать make. Раньше (в 0.6) объект MAKE передавался в vm.runInContext, теперь требует, чтобы экспортировалась функция, в который первым параметром попадет make. Также к 1.0 немножко изменится его api. Например, раньше
MAKE.decl('Arch', *hash),
теперь:
make.nodes(function(registry){
Кроме того, здесь же описываются технологии для проекта в BundleNode. Рассматривайте это, как перегрузку значений/методов по умолчанию у конкретных Node. Т.е. можете смотреть в код и знать, что можно там написать: Arch и другие
3) Это файл, используемый в stub для версии 0.6. Он выделен как хелпер, в 1.0.x его может не быть в стабе, пока все под вопросом. Сейчас можно использовать как список для библиотек, на которых основан проект. Недавно обсуждали http://clubs.ya.ru/bem/replies.xml?item_no=4259
4) Если я правильно помню, то в stub level.js подключает ./levels/* Т.е. фактически это тоже самое, что и level.js. Для библиотек оно используется исключительно для того, чтобы описать, как именно структурирован уровень (библиотека, блоки страницы/бандла), т.к. разные библиотеки — разные разработчики — разная структура.
5) Результаты сборки бандлов и страниц кладутся рядом с исходными файлами. Их именование по умолчанию — _:page.:tech (иногда еще .js). Чтобы взять html+css+js — просто возьмите эти файлы. Вот пример того, что получается на простой странице:
$ tree desktop.bundles/index/
desktop.bundles/index/
|-- index.bemdecl.js
|-- _index.bemhtml.js
|-- index.bemhtml.js
|-- index.bemjson.js
|-- _index.css
|-- index.css
|-- index.deps.js
|-- index.html
|-- _index.ie.css
|-- index.ie.css
|-- _index.js
`-- index.js
Здесь мне нужны index.html, _index.js, _index.css, _index.ie.css. Остальное: decl.js, bemdecl.js, deps.js — список блоков и зависимости, откройте их после сборки, там все просто, bemhtml.js — шаблон, в который засовывается bemjson, чтобы получилось index.html. Ну и другие технологии, которые вы опишете, тоже могут быть либо полезны, либо нет — все зависит уже от вас.
Кстати, если вы собираетесь генерировать bemjson сервером, то вам будет поближе познакомится с deps.js и, возможно, bemdecl.js. bemhtml.js (если я правильно понял) содержит собранные bemhtml изо всех блоков, которые нужны для бандла/страницы. Т.е. если вы засунете в некий bemhtml.js bemjson с блоками, которых нет в конкретном bemhtml.js, то получите фигу в виде
вместо блока.Честно говоря, документации слишком много, она про разные версии, и часто сбивает. Если собираетесь писать свой мини-стаб, то после понимания основной части я бы рекоммендовал почитать код самих тулзов. Сможете и отладить, при необходимости, и более тонко проект собирать. И главное, что информация будет 100% актуальной.