利用缓存缩短npm install的时间
youngwind opened this issue · 0 comments
youngwind commented
起因
在工作中npm install [package]是家常便饭,但是很多时候装包都消耗不少时间,特别是网络不好的时候。其实每次安装一个包,流程是这样的:
- npm从register上面抓包
- 放到本地缓存
- 从本地缓存解压到node modules
既然曾经安装过的包都在本地了(如图),为什么再次安装的时候不能直接在本地缓存中拷贝过来,从而节省很多时间呢?
解决办法
1. npm --cache-min
npm自己提供了cache机制,但是并不完善。
(1)如果指定模块不在缓存目录,那么 npm 会连接 registry,下载最新版本。这没有问题,但是如果指定模块在缓存目录之中,npm 也会连接 registry,发出指定模块的 etag ,服务器返回状态码304,表示不需要重新下载压缩包。
(2)如果某个模块已经在缓存之中,但是版本低于要求,npm会直接报错,而不是去 registry 下载最新版本。
2. 其他工具
三种工具我都试过。
npm-proxy-cache和local-npm都没能成功缩短时间(暂时排除不出来那里的问题),而且local-npm运行的时候会在当前目录生成很多文件。
npm-lazy倒是弄好了,拿express测了一下,不使用缓存需时超过1分钟,使用缓存7秒就可以了。
npm-lazy的使用方法
安装
npm install -g npm_lazy
配置
npm config set registry http://localhost:8080/
启动服务
npm_lazy
参考资料: