【问题标题】:NPM warn message about deprecated packageNPM 关于已弃用包的警告消息
【发布时间】:2016-02-06 02:41:59
【问题描述】:

我正在全局安装一个模块

$ npm install -g X

NPM 说

"npm WARN 已弃用 lodash@1.0.2:lodash@

如何找出哪个模块依赖于这个旧版本的 lodash?

来自 NPM 的警告消息似乎没有给我任何线索,哪个模块引用了这个旧版本(我相信模块 X 没有直接依赖于这个旧版本的 lodash。)。

【问题讨论】:

标签: node.js npm


【解决方案1】:

我得到了类似问题的答案:https://stackoverflow.com/a/36335866/1115187

简单地说:

npm outdated --depth=3

此命令将分析已安装的 NPM 包及其版本。报告将包含:

  1. 包名
  2. 最新版本
  3. 当前版本
  4. 依赖路径(下至depth级别)

希望,这些信息可以帮助您收集有关过时软件包的信息。

下一步 - 与相应包的维护者联系,并要求他们更新包(也许,您想发送拉取请求)。

UPD:npm-check

有一个很棒的 npm 包:npm-check,它允许检查过时的依赖项。可能

我最喜欢的功能:交互式更新——在项目文件夹中运行npm-check -u。交互式菜单显示有关当前文件夹中依赖项的所有必需信息,并允许在 3 秒内更新所有依赖项。

【讨论】:

  • 我有当前 = 通缉!= 最后,如何使通缉 = 最后?
  • @user2080105,有很多关于latestwanted的信息,例如:stackoverflow.com/a/33835041/1115187。大多数这样的答案都表明,wanted 是错误的......
  • @user2080105,修改你的package.json,使wanted版本规范匹配最新版本。如果假设降级 - 阅读有关该依赖项的文档,为什么维护人员将最新版本设置为不在边缘,并在需要时创建新问题。以下是关于 latestwanted 的官方文档:docs.npmjs.com/cli/outdated
  • 我猜手动修改 package.json 会导致不兼容。这是包管理器的一大优势
  • 不适用于真正弃用的软件包。您可以尝试安装并检查@types/commander,它无法检测到它已被弃用
【解决方案2】:
npm la <package-name> 

也可以,并且会为您提供有关依赖关系图的最详细信息。

npm ls &lt;package-name&gt;,做了类似的事情,但给你的细节更少

【讨论】:

  • 这是处理旧包子集时的正确答案。 npm outdated 不错,但可能会吐出很多其他不会给您带来任何麻烦的软件包。
  • 是的,我也这么认为:)
【解决方案3】:

使用npm list。它将打印出你的模块所依赖的所有包以及你的依赖关系等等。也许将输出重定向到文件或 grep 以便您可以更轻松地搜索它。

【讨论】:

  • 这可以通过运行npm i --save lodash 将 lodash 更新到最新版本来修复。它对我有用。
【解决方案4】:

使用这个

sudo npm install --unsafe-perm -g expo-cli

【讨论】:

  • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的答案添加解释并说明适用的限制和假设。
【解决方案5】:

您可以搜索 node_modules 下的所有 package.json 文件,看看哪些依赖于 lodash 1.0.2。

【讨论】:

  • 听起来有/应该是一个模块:)
  • 又名,一种程序化解决方案
  • 我将此解决方案解释为“使用工具进行搜索”,而不是手动打开它们。如果您在喜欢的文本编辑器中快速使用“在文件中查找”工具,这是一个非常快速的解决方案。虽然如果明确建议使用工具,答案会更有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-07
  • 2020-12-06
相关资源
最近更新 更多