我知道降压中有一个未记录的功能,称为单元格。有一些测试可以证明它们是如何工作的,但是还有关于它们的更多书面信息吗?
Buck 中的细胞如何工作?
看看这个例子 repo。
细胞解决了什么问题?
细胞非常适合这种情况:
BUCK
文件不起作用,因为根 ( //
) 已更改为项目的根BUCK
文件!单元允许我们创建具有自己.buckconfig
和自己的 Buck 目标层次结构的独立子项目。导出这些目标时,单元格可以使用来自其他单元格的目标。
它是如何工作的?
该示例的重点在于.buckconfig
:
[repositories]
neither = vendor/neither
repositories 标签告诉 Buck 每个单元在项目文件夹结构中的位置。每个单元格都有一个别名。这里我们有neither = vendor/neither
,这意味着子文件夹vendor/neither
是一个名称为 的单元格neither
。
我们可以使用以下语法来引用单元格内的目标:cell-name//:target-in-cell
.
因此,要使我们的示例目标依赖于LoopPerfect/neither:
deps = [
'neither//:neither',
],
这是一个非常强大的功能,因为它使库的BUCK
文件可移植。在单元格内公开目标所需要做的就是将其公开:
visibility = [
'PUBLIC',
]