“npm install”将所有依赖项安装在node_modules目录中,而不是将它们嵌套

我需要知道以下行为是否正常。

当我npm installpackage.json和依赖关系中的每个包都不再安装嵌套 ,但是每个依赖都安装在node_modules目录中。 这使得我的node_modules目录被炸毁,看起来像这样:

node_modules目录的屏幕截图

这是因为我更新了npm和节点。

现在我运行:

 npm -v 3.3.6 node -v 4.2.1 python 2.7 windows 7 wamp 

我的package.json文件如下所示:

 { "private": true, "devDependencies": { "gulp": "^3.8.8" }, "dependencies": { "laravel-elixir": "^3.0.0", "bootstrap-sass": "^3.0.0" } } 

这是标准的laravel package.json文件。

有没有办法再次有嵌套的目录,因为我不喜欢这样一个超过100个子目录吹的文章。

根据这个npm博客 , 这是npm 3行为。

是的,有一种方法可以通过更改npm(本文写作的第3版)默认行为来重新嵌套目录:

  1. 删除当前存在的node_modules文件夹。

  2. 告诉npm使用旧版捆绑进行安装:

    npm install --legacy-bundling

一个“永久”的select:

  1. 设置您的NPMconfiguration始终使用传统捆绑…

    npm set legacy-bundling=true

  2. ..和往常一样运行:

    npm install

注意:使用传统捆绑获取依赖关系需要花费更多时间,因为将安装相同依赖关系的多个不同版本。

免责声明:作为非Windows用户,我不需要平面依赖关系,并希望轻松地find自我声明的依赖关系,以支持自动重复数据删除。 由于在没有传统捆绑的情况下安装npm依赖关系已经花费了大量的时间,我通常愿意花这些额外的几分钟安装时间。 它从以前的700+(…)回到了5个目录在一个Laravel Elixir设置与引导(非sass),字体真棒和jQuery添加。