Bazel文件夹命名约定

时间:2017-07-19 09:47:17

标签: bazel

我知道bazel并没有强加任何特定的文件结构,但有些文件夹命名约定后面是使用Bazel的产品,其中一些(例如" third_party")确实有特殊处理(它需要指定licenses

所以我不太了解toolsthird_party之间的区别。例如,如果我想放一个" ruby​​工具链"它是一种工具,因为它是语言翻译,但它也是第三方,因为它是由社区开发的。它应该去哪里?

那么bazel规则呢?应该放在哪里?

1 个答案:

答案 0 :(得分:3)

我是Bazel开发人员,我同意,这里的用法可能有点令人困惑。

通常,我们建议将third_party用于您要导入以在项目中使用的任何外部代码。例如,Bazel本身有很多库用于Python标志解析,Java编译以及许多其他事情。

另一方面,

工具将用于为您的项目作为独立程序提供帮助的代码。例如,如果您编写了一个将静态文本文件转换为代码的脚本(也许您可以将数据作为语言内常量访问),我说这可以用于工具,因为它是独立的,但对您的项目很有用。

(作为一个注释,Bazel的工具目录与此有点不同:我们实际将它们打包并将它们包含在Bazel二进制文件中,以便它们可以在运行时使用,而不是在构建时使用)

如果您正在编写自定义Skylark规则,您可以将其放在任何有意义的地方,但我想问一下,如果您认为它们可能超出您的项目范围,那么您可以为它们创建一个单独的存储库所以其他开发者可以使用它们。从专用存储库使用自定义规则要容易得多,因为您只需要在WORKSPACE中使用http_archive()规则来获取它们。如果他们与您项目的其余部分混在一起,那么其他人就很难重复使用。

相关问题