cargo diet
is a companion program of The Lean Crate Initiative to help computing 'optimal' include
directives for your
Cargo.toml manifest. 'optimal' here is the smallest size a crate can have while retaining everything relevant to building the code and populating crates.io
and
lib.rs
with useful information on the landing page.
Please note that this opinionated approach won't prevent you to adjust the initial include
directive to your liking and needs, without cargo diet
interfering with you on subsequent invocations.
-
make the crate lean by editing the
Cargo.toml
file in placecargo diet
-
simulate how the
Cargo.toml
file would be edited to obtain a lean cratecargo diet -n
orcargo diet --dry-run
-
force computing an
include
directive even though one exists alreadycargo diet -r
orcargo diet --reset-manifest
- can also be used with
--dry-run
such as incargo diet --reset-manifest --dry-run
orcargo diet -rn
-
prevent the crate from exceeding a certain package size (best on CI)
cargo diet -n --package-size-limit 50KB
- See the installation instructions specifically for CI, allowing to quickly download a pre-built binary
With a recent version of cargo
(obtainable using rustup), the following should work:
cargo install cargo-diet
Pre-built binaries can be found in the releases section of this repository.
You can use an installation script to automate this process:
curl -LSfs https://raw.githubusercontent.com/the-lean-crate/cargo-diet/master/ci/install.sh | \
sh -s -- --git the-lean-crate/cargo-diet
Assuming tests are running on a linux box, the following script will install the latest version of cargo diet
and run it with flags to assert a crate package size does not exceed 10KB, a value that can freely be chosen.
That way it's easy to get a warning if there are new and possibly unexpected files in one of the directories which are included already.
curl -LSfs https://raw.githubusercontent.com/the-lean-crate/cargo-diet/master/ci/install.sh | \
sh -s -- --git the-lean-crate/cargo-diet --target x86_64-unknown-linux-musl
cargo diet --dry-run --package-size-limit 10KB
Also have a look at how this is actually used in GitHub Actions.
make journey-tests
make