其他依赖的依赖(非开发)没有自动加入node_modules

The dependency (non-development) of other dependency has not been automatically added to node_modules

有人告诉我

ESLint couldn't find the plugin "@typescript-eslint/eslint-plugin".

(The package "@typescript-eslint/eslint-plugin" was not found when loaded as a Node module from the directory "D:\XXX\NNN".)

It's likely that the plugin isn't installed correctly. Try reinstalling by running the following:

    npm install @typescript-eslint/eslint-plugin@latest --save-dev

来自 ESLint。为什么奇怪的是带有 ESLint 预设的包在依赖项中有 @typescript-eslint/eslint-plugin:

{
  "name": "@yamato_daiwa/style_guides",
  "dependencies": {
    "@typescript-eslint/eslint-plugin": "5.19.0",
    "@typescript-eslint/parser": "5.19.0",
    "eslint": "8.13.0",
    "eslint-plugin-node": "11.1.0"
  },
  "peerDependencies": {
    "@typescript-eslint/eslint-plugin": "^5.18.0",
    "@typescript-eslint/parser": "^5.18.0",
    "eslint": "^8.13.0",
    "eslint-plugin-node": "^11.1.0",
    "typescript": ">=4.0.0 <4.7.0"
  }
}

(我不确定是否需要 peerDependencies 但我必须让这个问题集中在一个问题上)

我预计所有依赖项都会自动添加到 node_modules 但它并没有(作用域目录中没有 @typescript-eslint):

我的节点版本是16.3。

更新

看起来 @typescript-eslint/eslint-plugin 已添加到 node_modules 下面的库中,带有 ESLint 预设。我预计它将添加到项目 node_modules 下面的目录,而不是 project/node_modules/@yamato-daiwa/style_guides/node_modules.

下面

您真的需要 eslint-plugin 作为项目中的 peerDependency 吗? 如果是这样,请检查您是否正在尝试安装与需要它的库相同版本的 eslint-plugin。 如果没有,请将其删除。

根据文档:“当依赖项作为 peerDependency 在包中列出时,它不会自动安装。相反,包含该包的代码必须将它作为其依赖项包含在内。 如果你 运行 npm install 并且它没有找到这个依赖项,npm 会警告你。"

https://flaviocopes.com/npm-peer-dependencies/

如果一切都失败了,请尝试 运行ning "npm ci"(全新安装)而不是 npm install。