忽略 package.json 中单个包的对等依赖性检查

use*_*578 14 npm npm-install peer-dependencies

我尝试从 NPM 7 的对等依赖项检查中排除包react-virtualized。我知道我可以单独安装该包

npm install react-virtualized --legacy-peer-deps

...但我的目标是使用 npm install 安装所有软件包,并且不应检查此软件包的对等依赖关系。那可能吗?

我会接受任何向我展示如何操作 package.json 的答案,以便新的npm 安装运行时不会出现对等依赖错误。我有以下 package.json:

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-redux": "^7.2.4",
    "react-router": "^5.2.0",
    "react-router-dom": "^5.2.0",
    "react-beautiful-dnd": "^13.1.0",
    "react-device-detect": "^1.11.14",
    "react-markdown": "^7.0.0",
    "react-resize-detector": "^6.7.1",
    "react-virtualized": "^9.22.3"
  }  
}
Run Code Online (Sandbox Code Playgroud)

Vit*_*sov 23

使用npm@>=8.3.0覆盖package.json:

"overrides": {
  "react-virtualized": {
    "react": "$react",
    "react-dom": "$react-dom"
  }
}
Run Code Online (Sandbox Code Playgroud)

请参阅https://docs.npmjs.com/cli/v8/configuring-npm/package-json#overrides


Tro*_*ott 5

package.json据我所知,你自己没有办法做到这一点。更改需要在package.json包中进行react-virtualized。也许这些替代方案之一适合您:

  1. 在项目的.npmrc 文件中设置legacy-peer-deps。如果人们通过安装你的项目,npm但如果你的项目是从 git 存储库克隆或以其他方式下载的,那么人们npm install从那里运行,包括.npmrc项目中的 a 应该可以工作。

  2. 要求使用npm@6这对于对等依赖性检查更加宽松。您可以npm在.​package.json

  3. 从 GitHub安装react-virtualized。master 分支(不幸的是,在撰写本文时,只有 master 分支)具有 d36509817ac44 提交,该提交添加了 d36509817ac44react@17并react-dom@17作为可接受的对等依赖项。由于此代码尚未发布任何版本,因此您可能会获得不稳定的模块版本。去做这个:npm install git+https://github.com/bvaughn/react-virtualized.git

  4. 对每个使用react@16andreact-dom@16代替。@17