如何从Cargo.lock中排除Wasm相关依赖?
解决Cargo.lock中引入Wasm相关冗余依赖的方法
你的问题源于ring 0.16.20仅针对wasm32-unknown-unknown这类Wasm目标平台声明了web-sys依赖,但Cargo默认可能会解析全平台依赖规则,导致wasm-bindgen等Wasm相关包被写入Cargo.lock。以下是几种可行的解决方式:
指定目标平台构建
构建项目时明确指定非Wasm的目标平台,比如针对x86_64架构的Linux系统:cargo build --target x86_64-unknown-linux-gnu也可以在项目根目录的
.cargo/config.toml中设置默认目标,避免每次手动输入:[build] target = "x86_64-unknown-linux-gnu"此方式下Cargo只会为指定目标解析依赖,不会拉取Wasm相关的冗余包。
启用Cargo resolver 2
在Cargo.toml的[package]区块中添加resolver = "2",它能更精准地处理条件依赖(比如仅针对特定target的依赖),避免拉取当前目标不需要的包:[package] name = "your-project-name" version = "0.1.0" resolver = "2" # 添加该行启用新版依赖解析器 [dependencies] jsonwebtoken = "8.2.0"Patch ring依赖移除Wasm相关规则
如果上述方法无效,可通过patch功能修改ring的依赖声明,强制排除仅Wasm需要的web-sys:[dependencies] jsonwebtoken = "8.2.0" [patch.crates-io] ring = { version = "0.16.20", dependencies = {} }由于
web-sys原本就只在Wasm环境中生效,非Wasm平台下ring并不依赖它,因此该修改不会影响项目正常功能。
内容的提问来源于stack exchange,提问作者at54321
相关产品推荐
相关产品推荐

