Crate size limit
Today I was publishing one of my projects called cargo-blinc
. You can find the
code here and the blog post
here.
While publishing, I got the following error:
error: api errors (status 200 OK): max upload size is: 10485760
This is exactly what is says. Crates.io API has a limit of the size of a crate you
want to publish. Currently, it's set to 10 MB. You can check the size by doing
cargo publish --dry-run
. This command will simulate the publishing process, but
won't publish your crate.
After it finishes, you can inspect the generated *.crate
file inside
target/package
directory. You can list files included in the package using
cargo package --list
.
In my case, it turned out that most of the crate size was caused by the *.gif
file which I used as a demo in my README.md
.
People behind the Rust ecosystem proved a lot of times that the infrastructure and tooling around Rust is well though out. This time it's not an exception.
It turns out that the [package]
section in Cargo.toml
has an optional key
which specifies files which can be excluded from the package.
The fix was as easy as:
[package]
...
exclude = ["res/demo.gif"]
You can find more info about this feature here.