zerus
<img alt="github" src="https://img.shields.io/badge/github-wcampbell0x2a/zerus-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20"> <img alt="crates.io" src="https://img.shields.io/crates/v/zerus.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20"> <img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-zerus-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs" height="20"> <img alt="build status" src="https://img.shields.io/github/actions/workflow/status/wcampbell0x2a/zerus/main.yml?branch=master&style=for-the-badge" height="20">
Lightweight tool for creating project-specific and/or general offline crates.io mirrors
Build zerus
Either build from published source in crates.io.
$ cargo install zerus --locked
Or download from github releases.
Usage
Download crates
Use zerus mirror to download .crate files for your project's dependencies.
$ zerus mirror new-mirror ../deku/Cargo.toml ../adsb_deku/Cargo.toml
Mirror individual crates by name (resolves to the latest version) or pinned to a specific version. When --crate is used, --get-feature-gated is implied.
$ zerus mirror new-mirror --crate reqwest --crate serde@1.0.210
Use --get-feature-gated to recursively expand and download all transitive dependencies, regardless of which features are currently enabled. This is useful when building a more complete mirror rather than one tailored to a specific project's current feature set — ensuring crates are available even if features change later.
[!NOTE] The expansion (run by
--get-feature-gatedand implied by--crate) includes dev and build dependencies of every crate it visits and ignores feature gating, so the result is far larger than what would resolve — even a tiny crate like expands to thousands of crates. To mirror only a project's resolved dependencies, pass its instead of using .