我安装了很多依赖项。虽然
npm install
我的 npm warn
已被弃用,请更新到某个版本。如何找到哪个包产生此警告。
npm outdated
仅显示具有较新版本的软件包,无论其弃用状态如何。因此,它不会显示不再获得更新的已弃用软件包(例如 request
或 @hapi/joi
)。
如果您使用
npm
版本 7 或更高版本,您应该有一个带有 lockfileVersion: 2
的 package-lock.json。此锁定文件包含所有已安装软件包的弃用警告。
您可以使用 jq 查找所有有弃用警告的软件包:
jq -r '.packages | to_entries[] | select(.value.deprecated != null) | "\(.key):\n\(.value.deprecated)\n"' package-lock.json
输出将如下所示:
node_modules/har-validator: 不再支持该库 节点模块/请求: 请求已被弃用,请参阅https://github.com/request/request/issues/3142 节点模块/请求-oauth/节点模块/uuid: 请升级到版本7或更高版本。 旧版本在某些情况下可能会使用 Math.random(),这已知是有问题的。 有关详细信息,请参阅 https://v8.dev/blog/math-random。 节点模块/请求/节点模块/uuid: 请升级到版本7或更高版本。 旧版本在某些情况下可能会使用 Math.random(),这已知是有问题的。 有关详细信息,请参阅 https://v8.dev/blog/math-random。
有一个包可以做到这一点。
npm install -g npm-deprecated-check
ndc
问题:
npm i
向您发出有关已弃用的子依赖项的警告。
修复:
npm list --depth=3 >> result.txt
然后您可以在该文件中搜索已弃用的子包
除了@abrain的回答。不带
jq
lib 的弃用警告列表。
// check-deprecated.js
const fs = require('fs');
const data = JSON.parse(fs.readFileSync('package-lock.json', 'utf8'));
const deprecatedPackages = Object.entries(data.packages)
.filter(([_, details]) => details.deprecated)
.map(([name, details]) => `${name}:\n${details.deprecated}\n`);
console.log(deprecatedPackages.join(''));
node check-deprecated.js
打开终端并运行这两个命令:
cd
npm outdated
它应该返回需要升级的过时软件包列表。