@tadatuta рассказал как использовать автоматическую генерацию актуальной документации для модульного фронтенда, презентация.
~Осталось не понятно, как это использовать. Покажите минимальный кейс использования bem-lib-site и расскажите где читать про остальное.~
UPD
git clone git@github.com:ilyar/bem-lib-site-test.git
cd bem-lib-site-test && npm install
npm test
open docs/index.html
Работает, хак внутри (может быть он уже не нужен). Сборку можно посмотреть тут ilyar.github.io/bem-lib-site-test/.
UPD 1/1/17
Убрал один хак https://github.com/ilyar/bem-lib-site-test/commit/a18e4849d46ed3ec370823080b204b3e14041877, добавил автотест генерации доки:
Привет!
Пока почитать, к сожалению, негде — документация в процессе написания.
Минимальный кейс использования предполагается такой:
bem-lib-site
.bemrc
, в котором описать собираемую библиотеку (пример).bem-lib-site
с указанием пути к собираемой библиотеке:bem-lib-site bem-core
Если ничего в процессе не взорвалось, то на выходе в папке, указанной в конфиге как
outputFolder
появится куча файлов, среди которых будут папки для каждого собираемого языка и в них папки с документацией по каждому блоку. Это дело должно быть можно открывать хоть с файловой системы, хоть паблишить наgh-pages
.Если что-то идет не так (а такое вполне возможно на данном этапе) — заводи issues, буду чинить.
Заводить issues или я неправильно понял? Про
.bemrc
тоже еще ничего почитать?Про
.bemrc
см. https://github.com/bem-sdk/bem-config и, если нужны подробности, https://github.com/tadatuta/bettercНа баг посмотрю, отпишусь, если что-то выясню.
@ilyar а что лежит в этот момент в
docstest
? если там пусто, то ничего сгенерироваться и не может. папка, на которую натравливаетсяbem-lib-site
обязана быть «полноценной» библиотекой блоков (у нее должен бытьpackage.json
с указанием имени и в конфиге.bemrc
должно что-то про эту библиотеку.@tadatuta Папка действительно пуста это воспроизводится по сценарию из bem-lib-site#1. Осознав что папка должна быть полноценной получается такой кейс:
Что дорожно быть в
templateEngine
?На самом деле
libConfig
должен быть объектом, а если templateEngine не окажется, то там сработает фоллбек. Оно сейчас падает, т.к. не намайнился конфиг для либы.Но в такой постановке проблема понятна, я добавлю еще фоллбеков, чтобы оно могло либо что-то осмысленное в консоль писать, либо даже какой-то полезный результат генерить.
Кроме того я начал пилить тесты, так что будет что использовать в качестве примера.
Работает, если в конфиг добавить:
в итоге:
@tadatuta
При повторном запуске
bem-lib-site .
получаю ошибку:Вероятно надо https://github.com/bem-site/bem-lib-site-view/pull/8/files
Обходное решение:
Да, уже влили (см. https://github.com/bem-site/bem-lib-site-data/pull/10), но еще нет версии с правками.
@tadatuta для ошибки: "TypeError: Cannot read property 'templateEngine' of undefined" уже есть решение https://github.com/bem-site/bem-lib-site-data/commit/af09ab03060d739e9bf3abe9fcaf6d238aabcd9d надо только выпустить новую версию bem-lib-site-data и bem-lib-site https://github.com/bem-site/bem-lib-site/blob/master/package.json#L19
я хочу еще несколько фиксов сделать до выпуска
Ясно, спасибо.
Есть еще один не понятный моменте, bem-lib-site генерирует следующие:
Другими словами получаем страничку документации по каждому блоку.
@tadatuta Не хватает индекса, bem-lib-site это умеет или надо что-то придумывать? Пожалуйста подскажи, как это можно сделать.
По задумке индексом должен быть отрендеренный README[.lang].md из корня библиотеки, но сейчас это не реализовано.
Понял, спасибо.
Выражу личное мнение, думаю, будет удобно следующие поведение:
langs
) , данные для него будут браться из файла технологии без суффикса т.е.project/blocks/b1/b1.md
иproject/readme.md
;readme.md
из корня библиотеки должен быть регистронезависимый;readme.md
это может быть опциональным поведением.Еще уточнение по использованию, каким образом на данный момент можно вмешаться в формирование конечного результата? Хочу добавить индекс.
Я в процессе фикса индекса, changelog и migration для библиотеки
@ilyar можно заводить issues в соответствующих репозиториях и после обсуждения брать в работу, если есть желание/возможность. буду очень благодарен!
https://github.com/bem-site/bem-lib-site-data/issues/13 https://github.com/bem-site/bem-lib-site-data/issues/14 https://github.com/bem-site/bem-lib-site-view/issues/11
Повторил все шаги выше. Но выдается ошибка Cannot read property 'outputFolder' of undefined at Object. (/usr/local/lib/node_modules/bem-lib-site/node_modules/bem-lib-site-view/lib/process-blocks.js:14:26).
.bemrc в корне проекта лежит, все ок. Может изменился способ задания конфига?
Очень уж хочется попробовать, но за два подхода тулза не взлетела...
@kompolom @kmadorin
Работает, хак внутри (может быть он уже не нужен).
Сборку можно посмотреть тут ilyar.github.io/bem-lib-site-test/.
@ilyar, Спасибо за демку, завелось наконец-то! У меня только jsdoc собрался. md файлы не подключились.
@ilyar Попробовал снова собрать доки. Все сломалось!
@kompolom, у меня тоже сборка развалилась после обновления на
bem-core#v4
. Сегодня @tadatuta в Телеграмме говорил, что там пока много «ненадёжностей» и грозился в ближайшее время (сегодня) «влить туда пачку фиксов и в перспективе планируют переводить на v4».Посмотрите внимательно на .bemrc, там изменился формат.
Сейчас так:
Может в этом дело.
Была бы хоть какая то документация что в конфиге писать куда и зачем...
@vithar Вот сгенерировал я данные в папку
cache/bem-lib-site-data
запускаюbem-lib-site-view cache
и получаю:Никак не пойму что за модуль оно там найти хочет. Вот что нагенерил bem-site-data:
Ну ладно, может вложенность увеличилась, пробую запускать указываю путь до библиотеки, ошибка поменялась:
Оно ищет data.json.
Так должно работать:
bem-lib-site-view cache/bem-lib-site-data/ap-components-1.1.0