You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需发布依赖 crate,如何打包 monorepo 中的关联项目?

解决Monorepo中本地依赖包的Cargo打包问题

要在不发布package_one到crates.io的前提下打包package_two,可以用以下几种方法:

方法一:使用Cargo工作区(推荐)

将整个monorepo组织成Cargo工作区,Cargo会自动识别工作区内的本地依赖,无需去crates.io校验:

  1. 在monorepo根目录创建Cargo.toml,定义工作区成员:
[workspace]
members = [
    "package_one",
    "package_two",
]
  1. 保持package_two/Cargo.toml中的依赖配置不变(同时指定path和version):
[dependencies]
package_one = { path = "../package_one", version = "0.2.0" }
  1. 直接在package_two目录执行打包命令即可:
cargo package

方法二:跳过依赖验证打包

如果不想使用工作区,可以通过--no-verify参数跳过Cargo对依赖可获取性的校验,直接生成本地包:

cargo package --no-verify

注意:用这个命令生成的包无法发布到crates.io(因为依赖未在crates.io存在),仅适用于本地或内部使用场景。

方法三:Vendor本地依赖(离线打包场景)

如果需要将package_one一起打包到package_two的构建产物中,可以用Cargo的vendor功能:

  1. 在package_two目录执行vendor命令,将依赖下载到本地vendor目录:
cargo vendor
  1. 在package_two目录创建.cargo/config.toml,配置Cargo使用本地vendor源:
[source.crates-io]
replace-with = "vendored-sources"

[source.vendored-sources]
directory = "vendor"
  1. 执行打包命令:
cargo package

内容的提问来源于stack exchange,提问作者Patrick Hallisey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 04:08:19