rust 是否从Cargo.lock中排除WAM相关依赖项?

g9icjywg  于 2022-12-19  发布在  Go
关注(0)|答案(1)|浏览(138)

假设我们想把jsonwebtoken 8.2.0添加到Cargo.toml中,这个crate依赖于ring 0.16.20,也就是dependent onweb-sys 0.3.60 crate,这个依赖关系是这样声明的:

[target.'cfg(all(target_arch = "wasm32", target_vendor = "unknown", target_os = "unknown", target_env = ""))'.dependencies]
web-sys = { version = "0.3.37", default-features = false, features = ["Crypto", "Window"] }

对于我的项目来说,我不需要任何与JS/WASM相关的东西,但是我注意到在我的Cargo.lock中,由于web-sys的原因,添加了一些这样的依赖项(例如wasm-bindgen)。有没有办法避免这种“噪音”?

y4ekin9u

y4ekin9u1#

锁决定在所有可能的平台上编译时使用的版本,据我所知,没有办法覆盖它。
考虑:不这样做将是一个头痛的问题。如果有人在一个新的平台上克隆你的repo并建立你的板条箱,他们将不得不修改他们的Cargo.lock(并给你发送一个补丁?)。如果你更新了你系统上的一个板条箱依赖项,它只会更新你平台上的锁定版本,其他人可能最终会得到一个不一致的锁。为了避免头痛,让货物来处理货物。锁上它想锁的东西,忽略里面的东西。
如果你想减少一些噪音,并在git输出中隐藏锁文件diffs,你可以将Cargo.lock标记为二进制文件,如here所示:

echo >>.gitattributes Cargo.lock binary

(虽然我不知道这是否会对windows的行尾产生奇怪的影响。)

相关问题