制作crate并发布到Crates.io

准备


发布 crate 时, 一旦发布无法修改,无法覆盖, 因此要注意邮箱等一些个人信息

访问crates.io 的 帐号设定页面[1],生成Token

并在命令行 执行 cargo login your token

此命令将告诉 Cargo 你的 API 令牌, 并将其存储在本地 ~/.cargo/credentials

制作crate并发布到Crates.io_第1张图片

crates.iocrate的名字, 会采取先到先得的方式分配.




打包 & 发布


对于 Cargo.toml:

[package]
name = "dashen"
version = "0.1.1"
authors = ["xxxx "]
edition = "2018"

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

[dependencies]
ferris-says = "0.2"

执行cargo publish:

制作crate并发布到Crates.io_第2张图片

这是因为缺少一些关键信息:关于该 crate 用途的描述和用户可能在何种条款下使用该 cratelicense

想要修正这个错误, 需要在 Cargo.toml 中引入这些信息.

描述通常是一两句话, 它会出现在 crate 的搜索结果中和 crate 页面里.

对于 license 字段, 需要一个 license 标识符值(license identifier value)

Linux 基金会的 Software Package Data Exchange (SPDX)[2] 列出了可以使用的标识符

例如指定 crate 使用 MIT License,可增加 MIT 标识符

[package]
name = "dashen"
version = "0.1.1"
authors = ["xxxx "]
edition = "2018"
description = "the first crate by xxxxx"
license = "MIT"

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

[dependencies]
ferris-says = "0.2"


再次执行 cargo publish:

制作crate并发布到Crates.io_第3张图片

这是因为没有指定git仓库


新建一个仓库,指定为远程仓库,并提交代码

制作crate并发布到Crates.io_第4张图片 制作crate并发布到Crates.io_第5张图片

再次执行 cargo publish:

制作crate并发布到Crates.io_第6张图片

此时也能在crates.io[3]搜到刚刚发布的crate

制作crate并发布到Crates.io_第7张图片


英文版文档:

Publishing a Crate to Crates.io[4]

中文版文档:

将 crate 发布到 Crates.io[5]

参考资料

[1]

帐号设定页面: https://crates.io/me

[2]

Software Package Data Exchange (SPDX): http://spdx.org/licenses/

[3]

crates.io: https://crates.io/search?page=1&per_page=10&q=dashen

[4]

Publishing a Crate to Crates.io: https://doc.rust-lang.org/book/ch14-02-publishing-to-crates-io.html

[5]

将 crate 发布到 Crates.io: https://kaisery.github.io/trpl-zh-cn/ch14-02-publishing-to-crates-io.html

本文由 mdnice 多平台发布

你可能感兴趣的:(后端)