如何检查 node_modules 目录中是否有不需要的包?

How do I check node_modules directory for unnecessary packages?

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

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

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

请检查此包。 https://www.npmjs.com/package/depcheck

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

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

相关:运行 npm -v 了解您是 运行ning npm v2 还是 v3。就像@cartant 在他们的回答中所说的那样,对于 v3,你的 node_modules 目录将最大限度地平坦,这意味着过去显示为其他模块子目录的东西(当安装 npm v2 时)现在将出现在顶层node_modules 本身。这可能是您看到的模块比预期多的原因。

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

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