【发布时间】:2017-01-11 05:03:44
【问题描述】:
我的 node_modules 包含未在我的 package.json 的依赖项中列出的包,所以我猜测这些包是我的依赖项的依赖项。我怎么能检查这个?我想确保我的 node_modules 目录中没有任何不必要的包。
【问题讨论】:
标签: node.js npm package package-managers
我的 node_modules 包含未在我的 package.json 的依赖项中列出的包,所以我猜测这些包是我的依赖项的依赖项。我怎么能检查这个?我想确保我的 node_modules 目录中没有任何不必要的包。
【问题讨论】:
标签: node.js npm package package-managers
由于包可能需要其他包,仅仅因为 node_modules 文件夹中有包在您的 packages.json 文件中不存在并不意味着您指定的包之一不需要它们。
如果您在解决方案的根目录上运行 npm prune 命令,它将读取依赖关系树并删除真正不再需要的包。
【讨论】:
如果您的依赖项列表不会花费太长时间重新安装,一个简单的选项是表翻转:完全删除 node_modules 目录并运行 npm install 重新创建它。
如果您不想这样做,您可以尝试检查您的依赖项的工具,例如@sagar-gopale 在他们的回答中建议的depcheck。
相关:运行 npm -v 以查看您运行的是 npm v2 还是 v3。就像@cartant 在他们的回答中所说的那样,使用 v3,您的 node_modules 目录将最大程度地平坦,这意味着过去作为其他模块的子目录出现的东西(使用 npm v2 安装时)现在将出现在 @987654326 的顶层@ 本身。这可能是您看到的模块数量超出预期的原因。
【讨论】:
npm install -g depcheck react jsx,因为我正在构建那种应用程序,但是如果我使用 es6,我是否也包含它?对它有语法支持意味着什么?
【讨论】:
如果您使用的是 NPM 3,您可能会在 node_modules 目录中看到大量您不希望看到的模块,因为 NPM 3 会扁平化依赖层次结构。
无论您使用哪个版本,如果您运行 npm list 命令,NPM 应该突出显示所有不需要的无关模块。
【讨论】:
npm list --depth=0 命令,它应该只列出根级别的模块。通常,您会将模块作为依赖项添加到您的package.json,运行npm install 以安装您添加的任何内容。如果您需要知道自己是否实际使用过/需要依赖项,则可以使用像 depcheck 这样的工具。