#教程 #发布 # #I/O #文档

应用程序 rust-package-template

发布Rust包的教程

1 个不稳定版本

0.1.0 2021年10月4日

#290模板引擎

MIT 许可证

200KB

Crates.io

https://crates.io/

https://doc.rust-lang.net.cn/cargo/getting-started/

创建并登录Crates.io账号

发布crate之前,需要在crates.io创建账号(使用github授权登录)并获得API token

运行命令: cargo login [你的API token]

  • 通知cargo,你的API token存储在本地 ~/.cargo/credentials 文件中

  • 撤销之前设置的token

为新的crate添加元数据

在发布crate之前,需要在 Cargo.toml[package] 区域为crate添加一些元数据

  • crate需要唯一的名称(name)
    • 在Crates.io上搜索,看是否已被占用
  • description:一两句话即可,会出现在crate搜索结果中
  • license:需要提高许可证标识值(可到 http://spdx.org/licenses/ 查找)
  • 可指定多个license,用 OR 隔开
  • version
  • author

cargo publish发布

cargo publish

一旦发布,就是永久性的

crate一旦发布,就是永久性的

  • 版本无法覆盖
  • 代码无法删除

这是因为Crates.io希望成为一个永久的代码文档服务器,并保证所有依赖于Crates.io的包都能一直正常构建

如果允许开发者删除已经发布的版本,那就根本无法达到这个目的。

发布已存在crate的新版本

修改crate后,需要先修改Cargo.toml里面的version值,再进行重新发布

参照 http://semver.org/ 来更新你的语义版本

错误汇总

  • 登入Crates.io的账号必须要验证邮箱

Cargo.toml内必须包含的[package]元信息如本次提交所示

cargo yank撤回

cargo yank命令可以从 Crates.io 撤回版本

cargo yank --vers 1.0.0

这里的撤回并不是指删除之前发布的版本,

而只是防止其他新的项目将其作为新的依赖

并不会影响已经存在的项目继续将其(这个版本)作为依赖和下载

  • 即那些已经记录在 Cargo.lock 中的项目并不会中断对该版本的使用
  • 但任何在我们撤回动作之后的项目都无法使用这个被yank的版本

取消撤回

我们还可以取消我们的撤回

cargo yank --vers 1.0.0 --undo

无运行时依赖