npm install每次都很慢

时间:2017-01-23 16:06:34

标签: node.js npm npm-install

运行npm install --no-optional时,每次完成大约需要3分钟。它安装了大约200MB的文件。我想加快构建过程,但我找不到任何方法来加快它的速度。

默认情况下,默认情况下,npm install是否默认缓存依赖关系(例如mavensbtnuget等其他正常工具?如果是的话,不应该比这快得多吗?如果没有,那么为什么以及如何解决这个问题?

我找到了npm-cache包,但似乎.tar所有的依赖项,当它们都没有改变时,npm-cache将重用tar文件。这样做的缺点是,只要发生依赖关系的微小变化,它就无法重用缓存(根据我的理解)。

有没有很好的资源解释为什么这么慢?如何加快速度以及缓存如何与npm一起工作?我使用过的其他工具(sbtmavennuget)要快得多,因此我对npm的期望也很高。

我调查的另一个选项是npm install -g,但似乎没有解决任何问题,因为它是meant to be used for installing some cli tools,如grunt,npm-cache等,因为它将它们添加到路径。所以这绝对不能解决问题。

npm -v: 4.0.5
node -v: 6.8.1

2 个答案:

答案 0 :(得分:1)

节点的问题是来自sbt后台,其中sbt使用本地常春藤缓存来缓存依赖关系,我期望来自Node的相同行为。所以至少在 V 5.0 之前,Node没有适当的依赖缓存机制,因此每次使用clean {node install时,您基本上都需要重新下载所有依赖项。 {1}}文件夹。

开发了一些可以解决这个问题的工具,但没有一个能让人满意。

但似乎这可能已在Node V 5.0 中修复了一些缓存策略,因此如果您遇到类似问题,请查看第5版的更改。

答案 1 :(得分:1)

最好使用以下命令安装pnpm软件包:

  

npm i -g pnpm

pnpm使用硬链接和符号链接仅一次将一个版本的模块保存在磁盘上。例如,当使用npm或Yarn时,如果有100个项目使用相同版本的lodash,则磁盘上将有100个lodash副本。使用pnpm,lodash将保存在磁盘上的单个位置,并且硬链接会将其放入应该安装它的node_modules中。

作为示例,我可以提到,只要您想安装package.json文件的依赖项,您要做的就是简单地输入pnpm i并由它自己处理其他事情。它的速度比npm快,因为它将重用您之前安装的依赖项!

相关问题