【问题标题】:How do I check node_modules directory for unnecessary packages?如何检查 node_modules 目录是否有不必要的包?
【发布时间】:2017-01-11 05:03:44
【问题描述】:

我的 node_modules 包含未在我的 package.json 的依赖项中列出的包,所以我猜测这些包是我的依赖项的依赖项。我怎么能检查这个?我想确保我的 node_modules 目录中没有任何不必要的包。

【问题讨论】:

    标签: node.js npm package package-managers


    【解决方案1】:

    由于包可能需要其他包,仅仅因为 node_modules 文件夹中有包在您的 packages.json 文件中不存在并不意味着您指定的包之一不需要它们。

    如果您在解决方案的根目录上运行 npm prune 命令,它将读取依赖关系树并删除真正不再需要的包。

    【讨论】:

      【解决方案2】:

      如果您的依赖项列表不会花费太长时间重新安装,一个简单的选项是表翻转:完全删除 node_modules 目录并运行 npm install 重新创建它。

      如果您不想这样做,您可以尝试检查您的依赖项的工具,例如@sagar-gopale 在他们的回答中建议的depcheck

      相关:运行 npm -v 以查看您运行的是 npm v2 还是 v3。就像@cartant 在他们的回答中所说的那样,使用 v3,您的 node_modules 目录将最大程度地平坦,这意味着过去作为其他模块的子目录出现的东西(使用 npm v2 安装时)现在将出现在 @987654326 的顶层@ 本身。这可能是您看到的模块数量超出预期的原因。

      【讨论】:

      • 我已经完成了表格翻转的第一个选项,但是当我运行 dep check 时,它仍然显示了很多我肯定知道我正在使用的“未使用的依赖项”。 depcheck 的依据是什么?我也做了npm install -g depcheck react jsx,因为我正在构建那种应用程序,但是如果我使用 es6,我是否也包含它?对它有语法支持意味着什么?
      【解决方案3】:

      【讨论】:

        【解决方案4】:

        如果您使用的是 NPM 3,您可能会在 node_modules 目录中看到大量您不希望看到的模块,因为 NPM 3 会扁平化依赖层次结构。

        无论您使用哪个版本,如果您运行 npm list 命令,NPM 应该突出显示所有不需要的无关模块。

        【讨论】:

        • 反正有没有展开依赖层次结构,所以它只是显示我需要什么?
        • 如果您运行npm list --depth=0 命令,它应该只列出根级别的模块。通常,您会将模块作为依赖项添加到您的package.json,运行npm install 以安装您添加的任何内容。如果您需要知道自己是否实际使用过/需要依赖项,则可以使用像 depcheck 这样的工具。
        猜你喜欢
        • 2011-10-10
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 2017-04-28
        • 1970-01-01
        • 2020-09-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多