Как и зачем появилось поле tech
в deps.js
файлах? В докладе о БЭМ Виталия Харисова ясно, что под технологиями он имеет в виду расширения файлов - https://tech.yandex.ru/events/yasubbotnik/minsk-jun-2012/talks/95/ (смотреть с 20:40).
Например сейчас в библиотеках есть такие "технологии":
.spec.js
- тесты.md
- описание API.js
- JavaScript.vanilla.js
- Клиентский JavaScript.css / .sass
- стили
Все они однозначно определяются по расширению файла. Соответственно возникает вопрос - есть ли реальные usecases поля tech, которые не покрываются расширениями?
Реальные примеры использования из библиотеки
bem-components
:b1
зависит от шаблонов блокаb2
(вb1
в рантайме вызываетсяBEMHTML.apply({ block: 'b2' });
b1
для его работы на проекте не нужны зависимости от b2, но они нужны для тестов на шаблоны, т.к. APIb1
предполагает возможность в полеcontent
положить не только строку, но и другой блок.b1
для его работы на клиенте не нужны зависимости от его же шаблонов, но при сборке тестов необходимо для каждого тестируемого кейса создавать разные вариации этого блока.Ну а https://ru.bem.info/tools/bem/bem-tools/depsjs/#Подключение-зависимостей-по-технологии ты уже и так видел.
@tadatuta можешь показать, где именно в
bem-components
такое происходит?@floatdrop Почти во всех блоках. На примере
button
:icon
. Используется в тестах на шаблоны: https://github.com/bem/bem-components/tree/v2/common.blocks/button/button.tmpl-specsНа примере блока
attach
: https://github.com/bem/bem-components/tree/v2/common.blocks/button/button.tmpl-specs — декларируем зависимость клиентского JS от блоков от базовых шаблонов, собственных шаблонов блокаattach
и шаблонов блокаicon
. Используем, разумеется, из клиентского JS: https://github.com/bem/bem-components/blob/cd95f0ff0d5ee2c35f68e659a063b0ce4bd08d78/common.blocks/attach/attach.deps.js#L35-L42@tadatuta Спасибо. Получается все использования применяются для подтягивания зависимостей для тестирования? Есть ли использование технологий конкретно для сборки в прод?
@floatdrop В аттаче как раз пример про использование для продакшена.
@tadatuta предпоследняя ссылка не туда была - наверное вот правильная https://github.com/bem/bem-components/blob/v2/common.blocks/attach/attach.deps.js.
Ясно. Спасибо огромное за пример.