Rust中Cargo安装模块的存储位置及全局crate相关疑问
Rust Cargo 依赖存储与全局安装问题解答
嘿,这个问题问到点子上了!Cargo和npm的依赖管理思路确实有不少差异,我给你一步步讲明白:
1. Cargo 依赖的存储位置
Cargo 不会把依赖直接存在项目目录里(默认情况),而是统一存在全局缓存目录中,不同操作系统的路径不一样:
- Linux/macOS:
~/.cargo/registry/ - Windows:
%USERPROFILE%\.cargo\registry\
这个缓存是所有Rust项目共用的,不管你创建多少个项目,只要依赖的是同一个版本的crate,只会下载一次,非常省空间。缓存里会分index(crate的索引信息)和cache(实际的crate包文件)两个子目录。
2. Rust 有没有类似 node_modules 的目录?
默认情况下是没有的,但如果你需要把依赖放到项目本地(比如离线构建、或者想完全掌控依赖文件),可以用cargo vendor命令:
cargo vendor
执行后会在项目根目录生成一个vendor文件夹,里面包含了当前项目所有依赖的源码。之后只要配置Cargo.toml或者设置环境变量,Cargo就能从这个本地目录读取依赖,不用再联网下载。
简单说:npm是默认本地存储,Cargo是默认全局缓存,但提供了本地存储的可选方案。
3. Crates 会被安装到全局位置吗?
分两种情况:
- 依赖库(普通crates):这类只会存在全局缓存里,不会被“安装”成系统级可用的库,只是供项目编译时调用。
- 可执行工具(binary crates):如果你用
cargo install <crate-name>命令安装的是带可执行文件的crate(比如cargo-edit、rustfmt这类工具),它们会被编译后放到全局的bin目录:- Linux/macOS:
~/.cargo/bin/ - Windows:
%USERPROFILE%\.cargo\bin\
- Linux/macOS:
只要把这个bin目录加到系统PATH里,你就能在终端任何位置直接调用这些工具了,这算是真正的“全局安装”。
内容的提问来源于stack exchange,提问作者sidoshi
相关产品推荐
相关产品推荐

