Я понимаю, что есть undocumented feature в buck называется ячейками. Есть some tests, которые демонстрируют, как они работают, но есть ли больше информации о них?Как работают ячейки в Buck?
Как работают ячейки в Buck?
Я понимаю, что есть undocumented feature в buck называется ячейками. Есть some tests, которые демонстрируют, как они работают, но есть ли больше информации о них?Как работают ячейки в Buck?
Как работают ячейки в Buck?
Посмотрите на this example repo.
Какую проблему решат ячейки?
Клетка отлично подходит для этой situtation:
BUCK
не работают, потому что корень (//
) изменился на корень вашего проектаBUCK
!Клетки позволяют нам создавать изолированные подпроекты, у которых есть свои .buckconfig
и их собственная целевая иерархия Бака. Клетки могут использовать объекты из других ячеек, когда эти цели экспортируются.
Как это работает?
Мясо примера в .buckconfig
:
[repositories]
neither = vendor/neither
репозитории тег сообщает Buck, где каждая ячейка живет в структуре папок вашего проекта. Каждая ячейка имеет псевдоним. Здесь у нас есть neither = vendor/neither
, что означает, что подпапка vendor/neither
является ячейкой с именем neither
.
Мы можем ссылаться на цели внутри ячейки, используя этот синтаксис: cell-name//:target-in-cell
.
Таким образом, чтобы сделать наш пример целевой зависит от LoopPerfect/neither:
deps = [
'neither//:neither',
],
Это действительно мощное средство, потому что это делает библиотеки BUCK
файлы портативными. Все, что вам нужно сделать, чтобы выявить цель внутри ячейки, должно сделать ее общедоступной:
visibility = [
'PUBLIC',
]