我正在使用 Nx、Rust 和 TS 创建一个 monorepo。 Rust 代码被划分在板条箱中,由于我使用的是 Nx,所以我没有使用 Cargo Workspaces。我现在面临的问题是,每次重新安装它所依赖的板条箱的依赖项,都不必要地增加了
target/debug/deps
的大小。
我正在寻找一种在统一(可能是全局)位置安装/存储依赖项的方法,这可以减少这种依赖项重复,就像 pnpm 对 javascript 所做的那样。我知道 Cargo 已经在全局缓存了包的源代码,这很棒,但它仍然将编译后的对象存储在
target/debug/deps
.
这是不可能的,但正如 @drewtato 所说,您可以使用 sccache 来缓存板条箱以加快构建时间。您还可以尝试使用更快的链接器(如 Mold)来加速链接,并使用 Cranelift 代码生成后端进行 Rust。
使用 sccache(安装后): (改编自 sccache 自述文件) 将其添加到您的全局货物配置
$HOME/.cargo/config.toml
或项目货物配置project/.cargo/config.toml
[build]
rustc-wrapper = "/path/to/sccache"
您还可以使用环境变量
export RUSTC_WRAPPER=/path/to/sccache