单个依赖模块的自动npm install --legacy-peer-deps

8
假设我有一个像这样的package.json:
{
  "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",
  },
  "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"
    ]
  }
}

问题在于依赖项mathjax-reactmathjax-full需要react@"^15.0.0 || ^16.0.0"。我已经尝试过使用npm i --forcenpm i --legacy-peer-deps,并且它们似乎可以在我的React版本下运行得很好,我的React版本是react@17.0.2
我不想每次安装依赖项时都要运行npm i --forcenpm i --legacy-peer-deps,因此我正在寻找一种只对mathjax-reactmathjax-full执行这些命令的方法,而不是每次运行npm i。我尝试在.npmrc文档和这个参考资料中寻找,但找不到解决办法。可能有什么解决方案?有没有原生的npm解决方案?还是我必须编写一个脚本,读取我的package.json并为每个依赖项单独运行npm install
我的想法是,如果我需要安装与其他依赖项冲突的一些其他依赖项,我将永远不会收到警告。
1个回答

14

遗留的同侪依赖关系不是针对每个软件包,而是适用于整个项目。只是你可能需要它来使整个项目仅保留一到两个软件包。如果您安装了带有 --legacy-peer-deps 标志的软件包,然后再安装一个没有该标志的不同软件包,则 npm 会再次报告第一个软件包的问题。因此,一旦您需要使用 --legacy-peer-deps,您需要始终指定它,无论安装哪个软件包。

根据文档,您可以永久设置它:

npm config set legacy-peer-deps=true --location=project

这只是在您的项目根目录下的.npmrc末尾添加了legacy-peer-deps=true


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接