为什么我的npm需要几个小时来安装依赖关系?

我必须开始一个web项目的那一天,我感到畏缩。 我使用yeomangulp-angular发生器来设置我的工作stream程。 没有一次npm install成功,没有失败一次。

另外,在平均互联网连接上,需要3-4个小时才能完成一个项目。 这不是打败了工具的全部目的吗? 我最终花费的时间比没有npm 。 还为每个项目安装类似的软件包(〜120MB的膨胀)。

我知道有npm_lazy和caching等工具,但这些只是使前端工具比现在更复杂。

是什么让npm如此低效呢?

我也感到你的痛苦…如果你正在积极开发一个新的nodejs项目,你希望总是使用所有上游npm包的最新版本,那么在你准备分发之前,不要在你的package.json文件中提到任何依赖项。 我们经历的这种放缓是由于不必要地将这些上游软件包存储在项目目录中的dir / node_modules /中,直到您分发您的应用程序才有用。

在这里我没有提到这个package.json文件中的上游包:

 { ... other tags here ... "dependencies" : { } } 

还可以使用-g标志全局安装项目的上游npm软件包,如下所示:

 npm install -g some_cool_package 

所以这些软件包可以在你的项目中使用,但是不能在它的根目录下生存。 同时,不要发出

 npm install 

而在nodejs项目的根目录中,因为所有的上游npm包都在环境variablesNODE_PATH定义的全局安装目录中

 echo $NODE_PATH 

这有一个类似的价值

 /home/stens/node-v5.3.0/lib/node_modules 

这是全局的npm包存储位置,当您使用-g标志安装npm包时,它将被填充。 那$ NODE_PATH将会被所有的上游npm包所臃肿,而不会被存储在你的nodejs app / node_modules /目录中

在这种模式下开发,不需要这个包…当你准备分发的时候,用上游的npm包填充你的package.json文件,然后发出你的npm install来填充dir / node_modules / …当然,添加你的node_modules到你的.gitignore,这样dir不会被发送到git中

您也可以通过清空package.json文件的“dependencies”标签并删除directory / node_modules / …直到您准备好分发