1

我知道未记录的功能,称为单元格。有一些测试可以证明它们是如何工作的,但是还有关于它们的更多书面信息吗?

Buck 中的细胞如何工作?

4

1 回答 1

1

看看这个例子 repo


细胞解决了什么问题?

细胞非常适合这种情况:

  • 您在使用 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',
]
于 2017-06-07T14:01:58.207 回答