【问题标题】:Why is Grunt installing so many folders in node_modules?为什么 Grunt 在 node_modules 中安装这么多文件夹?
【发布时间】:2016-10-03 01:46:15
【问题描述】:

我很长时间以来第一次使用 grunt,我的直觉是我用错了。当我运行npm install grunt --save-dev 时,我的 npm_modules 文件夹正在加载数十个文件夹(准确地说是 87 个)。我的期望,以及我在观看教程时看到的,是应该添加一个名为 grunt 的文件夹。同样,当我尝试添加 uglify 插件 (npm install grunt-contrib-uglify --save-dev) 时,我在 node_modules 中添加了额外的 31 个文件夹。我记得只是得到一个带有插件名称的文件夹。我正在使用:

npm 版本 3.9.3
咕噜版本 1.0.1
OSX 优胜美地 10.10.5

package.json

{
  "name": "myapp",
  "version": "1.0.0",
  "description": "the description",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "Me",
  "license": "MIT",
  "devDependencies": {
    "grunt": "^1.0.1",
    "grunt-contrib-uglify": "^1.0.1"
  }
}

非常感谢任何帮助。谢谢。

【问题讨论】:

  • 你能知道除了 grunt 和 grunt-contrib-uglify 之外添加了哪些文件夹

标签: javascript npm gruntjs frontend package-managers


【解决方案1】:

您正在使用 flattens the dependencies 的 NPM 版本 3。您已安装的模块的依赖项也可以安装在您的 node_modules 文件夹下。您可以将此与 Bower 处理瞬态依赖项的方式进行比较。

来自文档:

虽然 npm2 以嵌套方式安装所有依赖项,但 npm3 试图减轻这种嵌套导致的深度树和冗余。 npm3 尝试通过以扁平方式安装一些辅助依赖项(依赖项的依赖项),与需要它的主依赖项位于同一目录中。

因此,这种行为是意料之中的,您没有做错任何事情。

如果您仍在运行 NPM 版本 2,您可能已经注意到它显示了有关此依赖解析更改的警告消息:

对等依赖 phantomjs-prebuilt@>=1.9 包括 来自 karma-phantomjs-launcher 将不再 自动安装以实现 npm 3+ 中的 peerDependency。您的应用程序需要明确依赖它。

【讨论】:

  • 非常感谢@Anzeo。我很感激帮助。我从来没有想到像 uglify 这样的东西有这么多依赖。
猜你喜欢
  • 2019-04-13
  • 1970-01-01
  • 2016-01-02
  • 2016-03-25
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
相关资源
最近更新 更多