Buck如何在Buck中工作?

时间:2017-02-21 15:48:15

标签: buck

我知道undocumented feature个{@ 3}}中有个单元格。有some tests证明它们是如何工作的,但是还有关于它们的书面信息吗?

细胞如何在Buck中发挥作用?

1 个答案:

答案 0 :(得分:1)

看看this example repo

细胞解决了什么问题?

细胞非常适合这种情况:

  • 您在使用Buck
  • 构建的仓库中有一个库
  • 您想在项目中使用该库
  • 您将库复制到项目中,但库的BUCK文件不起作用,因为根(//)已更改为项目的根目录
  • 您不想重写图书馆的BUCK个文件!

单元格允许我们创建具有自己的.buckconfig和他们自己的Buck目标层次结构的孤立子项目。当导出这些目标时,单元格可以使用其他单元格中的目标。

如何运作?

示例的内容位于.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',
]