【问题标题】:Why doesn't `npm prune` remove folders from node_modules?为什么 `npm prune` 不从 node_modules 中删除文件夹?
【发布时间】:2013-11-20 10:47:31
【问题描述】:

我有一个package.json 和我所有的devDependencies

我的理解是,如果我删除依赖项并运行npm prune,节点将从node_modules 中删除模块文件夹。这似乎是维护我的node_modules 文件夹的最简单方法。

来自docs

npm 修剪

删除多余的包

此命令删除“无关”包。

无关的包是未在父包中列出的包 包的依赖列表。

但是,有时即使在运行 npm prune 之后,我的 node_modules 中仍然有模块文件夹。

为什么会发生这种情况以及删除未使用模块的正确方法是什么?

【问题讨论】:

  • 做一个npm list。有问题的文件夹是传递依赖(依赖的依赖)吗?

标签: node.js npm


【解决方案1】:

根据documentation

如果指定了--production 标志,此命令将删除 devDependencies 中指定的软件包。

所以,如果你想摆脱node_modules中指定的模块文件夹devDependencies,你应该执行

npm prune --production

【讨论】:

  • 我想删除没有在我的 devDependencies 中指定的文件夹。这与您的建议不同。我希望我的 node_modules 文件夹只包含我的依赖项中写入的内容,而不是之前使用的额外模块。
  • 我的意思是它们根本不在 package.json 中。
  • 在这种情况下,简单的 npm prune 就足够了(适用于 OSX,npm v1.3.11) - 它会从 npm_modules 中删除 package.json 中未列出的所有目录
  • 是的,这就是我的想法。我正在使用 npm 1.3.14 运行 Windows。但是我仍然在 node_modules 中有文件夹,即使它们不在 package.json 中。
  • 我遇到了同样的问题
【解决方案2】:

运行后:

npm ls

我明白了:

npm ERR! extraneous: package@0.9.6 /path/to/package

然后当我这样做时:

npm prune

软件包已卸载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-13
    • 2018-08-05
    • 2022-09-23
    • 2015-07-07
    • 2022-07-21
    • 2021-01-11
    • 2021-04-08
    • 1970-01-01
    相关资源
    最近更新 更多