如何通过npm CLI添加指定semver范围的peer依赖,无需手动修改package.json
通过CLI添加指定SemVer范围的peer依赖(无需手动编辑package.json)
当执行以下命令时:
npm i --save-peer react@">= 18" svelte@"*"
package.json的peerDependencies会被自动替换为解析后的具体版本范围:
"peerDependencies": { "react": "^18.3.1", "svelte": "^4.2.18" }
但我们期望保留指定的原始SemVer范围,让解析后的具体版本仅出现在package-lock.json中:
"peerDependencies": { "react": ">= 18", "svelte": "*" }
解决方案
方法1:使用npm pkg set直接配置(推荐)
npm pkg set命令可以直接修改package.json的字段,完全保留你指定的SemVer范围,不会触发版本解析写入package.json:
npm pkg set peerDependencies.react=">= 18" peerDependencies.svelte="*"
执行后package.json的peerDependencies会直接变为期望的格式。如果需要同步安装依赖到node_modules并生成package-lock.json,再单独执行:
npm install
方法2:临时修改npm配置(不推荐)
通过修改save-prefix配置,临时禁用npm自动替换版本范围的行为:
# 临时取消默认的版本前缀 npm config set save-prefix "" # 添加peer依赖 npm i --save-peer react@">= 18" svelte@"*" # 恢复默认配置 npm config set save-prefix "^"
此方法会全局影响npm的版本前缀设置,可能导致其他依赖的版本格式不符合预期,因此更推荐第一种方法。
内容的提问来源于stack exchange,提问作者Estus Flask
相关产品推荐
相关产品推荐

