最近,docs.rs 添加了一项功能,允许 crate 选择不构建在所有目标上。如果您不需要构建在所有目标上,您可以启用此功能来减少构建时间。
该功能有什么作用?
默认情况下,docs.rs 会为发布到 crates.io 的所有 crate 构建 每个一级目标。但是,大多数 crate 在所有目标上的内容都是相同的。在依赖于平台的 crate 中,几乎所有都针对单个平台,而不需要在其他目标上构建。例如,winapi
只有在 x86_64-pc-windows-msvc
和 i686-pc-windows-msvc
目标上才有文档,而在其他所有目标上都是空白的。
此功能允许您请求仅在特定目标上构建。例如,winapi
可以通过在其 Cargo.toml
中添加以下内容来选择仅构建 Windows 目标
[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 文档。
这对我的 crate 有什么帮助?
您可以只构建单个目标,而不是为每个一级目标构建,从而将文档构建时间缩短 6 倍。这对于需要数小时才能记录的大型 crate 或具有多个 crate 的项目尤其有帮助。
这对 docs.rs 有什么帮助?
构建 crates.io 中的所有 crate 可能需要很长时间!构建较少的目标将使我们减少每个 crate 的等待时间。此外,这将减少我们的存储成本增长,从而提高项目的可持续性。
未来可能的更改
我们正在考虑将来默认启用此功能;即仅为单个目标构建,除非特别请求多个目标。但是,我们不想破坏任何人的文档,因此我们在确定迁移策略时使此功能可选择加入。
此更改还将使 docs.rs 更容易为非一级目标(例如嵌入式目标)构建。
我如何了解更多?
您可以在 提出该问题的 issue 和 包含实现的 PR 中了解有关此更改的更多信息。有关构建非一级目标的详细信息也可在 请求该功能的 issue 中找到。
有关目标以及成为一级目标的含义的更多信息,请参阅平台支持页面。