如何仅为指定依赖自动启用npm install --legacy-peer-deps
解决方案
方案1:npm原生方案(推荐,要求npm ≥ v8.3.0)
npm从8.3.0版本开始原生支持overrides配置字段,可以精准指定特定依赖的版本规则,完全满足你仅针对mathjax-react、mathjax-full豁免peer依赖检查、不影响其他依赖冲突告警的需求。
你只需要在你的package.json中新增overrides字段即可,修改后的配置示例如下:
{ "name": "my-app", "version": "0.1.0", "dependencies": { "@aws-sdk/client-s3": "^3.21.0", "@testing-library/react": "^11.2.5", "axios": "^0.22.0", "credit-card-type": "^8.3.0", "csstype": "^3.0.8", "dayjs": "^1.10.4", "lodash": "^4.17.20", "mathjax-full": "^3.2.0", "mathjax-react": "^1.0.6", "react": "^17.0.2" }, // 新增overrides字段 "overrides": { "mathjax-react": { "react": "$react" }, "mathjax-full": { "react": "$react" } }, "proxy": "http://localhost:5000", "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "jest", "eject": "react-scripts eject" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } }
配置完成后直接执行npm i即可,无需加任何额外参数,npm会自动为这两个包使用你项目中已安装的React 17版本,其余依赖的peer依赖冲突仍会正常触发告警。
方案2:低版本npm兼容方案
如果你的npm版本低于8.3.0无法使用overrides特性,可以通过自定义npm脚本实现需求:
- 在
package.json的scripts中新增自定义安装命令:
"scripts": { "install:custom": "npm install && npm install mathjax-react@1.0.6 mathjax-full@3.2.0 --legacy-peer-deps --no-save" }
- 后续安装依赖时执行
npm run install:custom即可,命令会先正常安装所有依赖,再单独为这两个包加--legacy-peer-deps参数重新安装,不会修改package.json的依赖记录。
内容的提问来源于stack exchange,提问作者Omar Omeiri
相关产品推荐
相关产品推荐

