查找发出已弃用警告的软件包 - NPM

问题描述 投票:0回答:5

我安装了很多依赖项。虽然

npm install
我的
npm warn
已被弃用,请更新到某个版本。如何找到哪个包产生此警告。

node.js npm deprecated npm-install
5个回答
23
投票

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。

2
投票

有一个包可以做到这一点。

npm install -g npm-deprecated-check
ndc 

1
投票

问题:

npm i
向您发出有关已弃用的子依赖项的警告。

修复:

npm list --depth=3 >> result.txt
然后您可以在该文件中搜索已弃用的子包


0
投票

除了@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


-1
投票

打开终端并运行这两个命令:

  1. cd
  2. npm outdated

它应该返回需要升级的过时软件包列表。

© www.soinside.com 2019 - 2024. All rights reserved.