Closed blond closed 9 years ago
Как много копипаста окажется между такими пакетами?
Что-то мне не нравится такая идея
Сейчас у нас все про локализацию в рамках одного пакета, а так будет разбросано по 4-м. С таким же успехом можно засунуть обратно *-i18n технологии в соответствующие пакеты по критерию шаблонизаторов
Как много копипаста окажется между такими пакетами?
Кажется, что нисколько. Они все будут явно зависить от enb-bem-i18n
и от своего пакета, доопределяя и то и другое.
Сейчас у нас все про локализацию в рамках одного пакета, а так будет разбросано по 4-м
Я вижу минусы в существующем решении как с точки зрения разработки, так и с точки зрения использования. Проблемы по ощущениям схожы с множественным наследованием.
Сейчас пакет явно зависит от всех пакетов про шаблонизацию. Как только нам нужно будет сделать мажорное изменение в одном из них — нам придётся делать мажорное изменение и в этом пакете. Это ещё и означает, что пользователю будут приезжать лишние зависимости.
Кроме того если по каким-то причинам нужно будет для одного шаблонизатора один i18n, а для другого — другой (например, нужны разные версии). То сейчас мы этого просто не сможем сделать.
Ещё у нас есть другие шаблонизаторы: priv-js
, bh-php
и т.д. Для каждого из них ведь тоже придётся делать технологии в этом пакете. Из-за этого две предыдущие проблемы станут более остро.
Если же разделить код по своим пакетам из минусов вижу только небольшие дополнительные расходы на поддержку.
если удастся избавиться от копипаста и enb-bem-i18n будет ставиться по зависимостям прозрачно для пользователя — я за разделение
На мой взгляд ок. Только давайте пакет enb-bem-i18n
и шаблонизаторы не подключать по peerDependencies
. Это очень больно.
@arikon, с шаблонизаторами понятно. А вот с enb-bem-i18n
не очень.
Сейчас технологии обёртки на вход требуют собранный файл кейсетов, который собирает keysets
-технология из enb-bem-i18n
.
Какие мысли как это разрулить? У каждого такого пакета делать технологию keysets
(можно без копипаста просто отнаследовать)?
@blond Пусть используют технологию keysets
из enb-bem-i18n
. Результаты keysets
же нужны не только шаблонизаторам, но и js
, priv.js
.
Пусть используют технологию keysets из enb-bem-i18n
Всмысле пользователи отдельно ставят enb-bem-i18n
? Тогда как гарантировать нужную версию кроме как через peerDependencies
?
С переходом на npm@3.x
даже при условии peerDependencies
пользователям явно придётся ставить enb-bem-i18n
.
Прям очень хочется гарантировать нужные версии? С учётом вашей любви к абсолютно строгим зависимостям мне страшно представить, во что это выльется =)
Если зависимость будет вида ^1.0.0
(и будет апдейтиться по мере выпуска мажорных версий технологий без изменения формата файла), то можно попробовать.
С учётом вашей любви к абсолютно строгим зависимостям мне страшно представить, во что это выльется =)
Для peerDependencies
у нас нет любви к строгим версиям :)
Если зависимость будет вида ^1.0.0 (и будет апдейтиться по мере выпуска мажорных версий технологий без изменения формата файла), то можно попробовать.
Да, расчёт примерно на это.
Перенес код связанный с шаблонами в:
Осталось убрать его из основного пакета enb-bem-i18n
enb-bem-i18n
— builds keysets and lang-js filesenb-xjst-i18n
— builds BEMHTML + BEMTREE filesenb-bemxjst-i18n
— builds BEMHTML + BEMTREE filesenb-bh-i18n
— builds BH files