跳转至

发布到crates.io

crates.io

注意:发布包到 crates.io 后,特定的版本无法被覆盖,要发布就必须使用新的版本号,代码也无法被删除!

首次登录

用github登录

打开AccountSettings-->API TokenS, 生成token。并且用token在终端登录

Bash
cargo login [token]

可能遇到报错

Bash
error: crates-io is replaced with non-remote-registry source registry `tuna`;
include `--registry crates-io` to use crates.io

加上--registry crates-io 再次执行即可

Bash
cargo login [token]  --registry crates-io

发布包之前

crates.io 上的包名遵循先到先得的方式:一旦你想要的包名已经被使用,那么你就得换一个不同的包名。

在发布之前,确保 Cargo.toml 中以下字段已经被设置:

打包

确保代码没有 warning 或错误

Text Only
cargo publish --dry-run

target/package 目录下观察生成的 .crate 文件。

检查其中包含的文件:

Text Only
cargo package --list

当打包时,Cargo 会自动根据版本控制系统的配置来忽略指定的文件,例如 .gitignore。除此之外,你还可以通过 exclude 来排除指定的文件:

TOML
[package]
# ...
exclude = [
    "public/assets/*",
    "videos/*",
]

如果想要显式地将某些文件包含其中,可以使用 include,但是需要注意的是,这个 key 一旦设置,那 exclude 就将失效:

TOML
[package]
# ...
include = [
    "**/*.rs",
    "Cargo.toml",
]

上传

Text Only
cargo publish

管理 crates.io 上的包

无法删除版本

yank 能做到的就是让其它人不能再使用这个版本作为依赖,但是现存的依赖依然可以继续工作。

Text Only
cargo yank --vers 1.0.1
cargo yank --vers 1.0.1 --undo

Reference

https://course.rs/cargo/reference/publishing-on-crates.io.html