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

Ignore peer dependency check for single package in package.json

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

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

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

我会接受任何告诉我如何操作 package.json 的答案,以便新的 npm install 运行时不会出现对等依赖错误。 我有以下 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"
  }  
}

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

  1. 为您的项目设置 legacy-peer-deps in a .npmrc file。如果人们通过 npm 安装您的项目,但如果您的项目是从 git 存储库克隆或以其他方式下载,然后人们 运行 npm install 从那里安装,这将不起作用, 在项目中包含一个 .npmrc 应该可以。

  2. 需要使用 npm@6 这将更宽松地进行对等依赖性检查。您可以在 package.json.

    中的 the "engines" field 中指定 npm 版本
  3. 从 GitHub 安装 react-virtualized。 master 分支(不幸的是,在撰写本文时,只有 master 分支)具有 d36509817ac44 提交,其中添加了 react@17react-dom@17 作为可接受的对等依赖项。因为这段代码还没有在任何版本中,你可能会得到一个不稳定的模块版本。为此:npm install git+https://github.com/bvaughn/react-virtualized.git

  4. 分别使用 react@16react-dom@16 而不是 @17