为什么锁定文件中列出了一些 npm 包,但没有列出 package.json 文件?

cod*_*322 5 npm package.json npm-audit

我运行了 npmaudit,它警告我更新一些软件包。然而,它警告我的软件包(例如 chokidar)并未在我的 package.json 中列出。那么这是什么意思?如果文件中未列出该软件包,如何执行更新。

der*_*ndr 1

它没有在您的列表中列出,package.json因为它是嵌套依赖项。

您可以通过尝试npm audit --fix或使用包npm-force-solutions来更新它。


如何使用npm-force-resolutions

首先添加一个包含resolutions要修复的依赖版本的字段package.json,例如:

"resolutions": {
  "hoek": "4.2.1"
}
Run Code Online (Sandbox Code Playgroud)

然后添加npm-force-resolutions到脚本中,以便在每次运行之前preinstall修补文件:package-locknpm install

"scripts": {
  "preinstall": "npx npm-force-resolutions"
}
Run Code Online (Sandbox Code Playgroud)

现在就npm install像平常一样运行:

npm install
Run Code Online (Sandbox Code Playgroud)

要确认安装了正确的版本,请使用:

npm ls hoek
Run Code Online (Sandbox Code Playgroud)

如果您package-lock进行了更改,您可能需要再次运行上述步骤。