运行npm install --no-optional
时,每次完成大约需要3分钟。它安装了大约200MB的文件。我想加快构建过程,但我找不到任何方法来加快它的速度。
默认情况下,默认情况下,npm install
是否默认缓存依赖关系(例如maven
,sbt
或nuget
等其他正常工具?如果是的话,不应该比这快得多吗?如果没有,那么为什么以及如何解决这个问题?
我找到了npm-cache包,但似乎.tar所有的依赖项,当它们都没有改变时,npm-cache将重用tar文件。这样做的缺点是,只要发生依赖关系的微小变化,它就无法重用缓存(根据我的理解)。
有没有很好的资源解释为什么这么慢?如何加快速度以及缓存如何与npm一起工作?我使用过的其他工具(sbt
,maven
,nuget
)要快得多,因此我对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
答案 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快,因为它将重用您之前安装的依赖项!