42_发布crate

1. 创建账号

  • 发布crate.io前,需要在<crates.io>创建账号并获得API Token
  • 运行命令cargo login $API_TOKEN,
    • 将会通知cargo,把你的API token存储在本地 ~/.cargo/credentials.toml。
    • API Token可以在<crates.io>上进行撤销。

2. crate添加元数据

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

  • name: crate需要指定位于的名称
  • description: 一两句话即可,会出现在crate搜索的结果里
  • license: 需要提供许可证的表示值,可以到spdx.org/licenses/查找,可以指定多个许可,使用OR隔开
  • version: 版本号
  • author: 作者

更多的原数据可以参考doc.rust-lang.org/cargo/refer...

下面是一个示例的原数据:

ini 复制代码
[package]
name = "first_crate_yinuo"
version = "0.1.0"
author = ["kotlindev"]
edition = "2021"
description = "A Rust tutorials"
license = "MIT"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

3. 发布crate

未提交代码使用cargo publish --allow-dirty测试。 使用cargo pushlish进行发布。要注意的是,如果发布失败,原因可能是因为你的<crates.io>的账号还没绑定验证的邮箱,或者你的crate的元信息缺失,需要根据错误提示补充即可。

crate一旦发布,就是永久性的:该版本无法覆盖,代码无法删除。因为<crates.io>希望成为永久的代码托管服务器,并且依赖于该版本的项目可以继续正常工作。如果允许开发者删除已经发布的代码,那么将无法达到这个目的。

4. 发布已存在的crate新版本

在修改crate的代码之后,当我们需要发布新版本时,需要先修改Cargo.toml里面的version值。可以参考语义化版本控制规范semver.org来定义你的语意版本。最后执行cargo publish进行发布。

5. 使用cargo yank从crates.io撤回版本

我们不可以删除之前的版本,不会删除任何代码,但可以防止其他项目把某个版本最为新的依赖,使用yank可撤回一个crate版本即可。该操作防止新项目依赖于该版本,但已经存在的项目可以继续将其作为依赖并可以下载。

yank意味着:所有已经产生Cargo.lock的项目不会中断,同时任何将来新生成的Cargo.lock文件都不会使用被yank的版本。

撤回命令如下示例:

bash 复制代码
cargo yank --version 1.0.1

取消撤回如下命令

bash 复制代码
cargo yank --version 1.0.1 --undo
相关推荐
刘天远21 分钟前
Agent成本核算实现:事件表、状态分布与Python归集
前端·数据库·人工智能·python
欣欣之王来了23 分钟前
开发环境准备:Node.js、npm、VS Code安装配置
前端·学习·架构·项目·vue3教程
xiaolinudao12328 分钟前
将多个 Excel 表格中的数据合并到单个表中|6 种实现方案全解析
java·前端·excel
LRL_1 小时前
跨平台 Node 模块安装指南:如何利用 pnpm/npm 配置`supportedArchitectures` 锁定平台依赖
前端·npm·node.js
EatFan1 小时前
React 项目踩坑实录:useEffect 闭包陷阱、Context 性能陷阱与 React 18 升级避坑排查手册
前端·javascript·react.js·react·react hooks·useeffect·闭包陷阱
风骏时光牛马2 小时前
企业业务运营信息数据库
前端
IT_陈寒3 小时前
Vue的数组更新把我坑惨了
前端·人工智能·后端
于航3 小时前
分层上下文压缩,幻觉检测,错误累积概要
前端
数据掘金3 小时前
鸿蒙统计的权限弹窗怎么适配?
前端
数据掘金3 小时前
鸿蒙统计的多设备协同数据怎么打通?
前端