docs.rs 现在允许您选择构建目标

2020 年 3 月 15 日 · Jynn Nelson 代表 docs.rs 团队

最近,docs.rs 添加了一项功能,允许箱子选择退出在所有目标上构建。如果您不需要在所有目标上构建,您可以启用此功能以减少构建时间。

此功能的作用是什么?

默认情况下,docs.rs 为发布到 crates.io 的所有箱子构建 所有一级目标。但是,大多数箱子在所有目标上具有相同的内容。在平台相关的箱子中,几乎所有箱子都针对单个平台,并且不需要在其他目标上构建。例如,winapi 仅在 x86_64-pc-windows-msvci686-pc-windows-msvc 目标上具有文档,而在所有其他目标上为空。

此功能允许您请求仅在特定目标上构建。例如,winapi 可以选择仅构建 Windows 目标,方法是在其 Cargo.toml 中添加以下内容

[package.metadata.docs.rs]
# This also sets the default target to `x86_64-pc-windows-msvc`
targets = ["x86_64-pc-windows-msvc", "i686-pc-windows-msvc"]

如果您只需要一个目标,则更简单

[package.metadata.docs.rs]
# This sets the default target to `x86_64-unknown-linux-gnu`
# and only builds that target
targets = ["x86_64-unknown-linux-gnu"]

有关如何选择加入的更多详细信息,请参阅 docs.rs 文档

这对我的箱子有什么帮助?

您可以仅为单个目标构建,而不是为每个一级目标构建,从而将文档构建时间缩短 6 倍。这尤其可以帮助大型箱子或具有多个箱子的项目,这些箱子需要几个小时才能完成文档。

这对 docs.rs 有什么帮助?

构建 crates.io 中的所有箱子可能需要很长时间!构建更少的目标将使我们能够减少每个箱子的等待时间。此外,这将减少存储成本的增长,从而提高项目的可持续性。

未来可能的更改

我们正在考虑在将来默认启用此功能;即,除非明确请求多个目标,否则仅为一个目标构建。但是,我们不想破坏任何人的文档,因此我们在决定迁移策略时,将此功能设置为选择加入。

此更改还将使 docs.rs 更容易为非一级目标构建,例如嵌入式目标。

我如何了解更多信息?

您可以在 提出该问题的议题实现该功能的 PR 中了解有关该更改的更多信息。有关构建非一级目标的详细信息,也可以在 请求该功能的议题 中找到。

有关目标以及成为一级目标的含义的更多信息,请参阅 平台支持 页面。