为什么“npm install”真的很慢?
设置我的包时我做错了什么?有什么方法可以加快速度吗?
packages.json :
{ "name": "testing node", "version": "0.0.0", "description": "", "main": "app.config.js", "dependencies": { "babel-core": "^6.17.0", "babel-loader": "^6.2.0", "babel-plugin-add-module-exports": "^0.1.2", "babel-plugin-react-html-attrs": "^2.0.0", "babel-plugin-transform-class-properties": "^6.3.13", "babel-plugin-transform-decorators-legacy": "^1.3.4", "babel-preset-es2015": "^6.3.13", "babel-preset-react": "^6.3.13", "babel-preset-stage-0": "^6.3.13", "react": "^0.14.6", "react-dom": "^0.14.6", "webpack": "^1.12.9", "webpack-dev-server": "^1.14.1", "mysql": "*" }, "devDependencies": {}, "scripts": { "dev": "webpack-dev-server --content-base src --inline --hot", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
如果我跑的话,在文件夹里面
npm install
我得到以下可能需要数小时才能完全设置:
这不是一般的计算或硬件问题。比较速度如下:
- 运行
haversine
来计算非索引mysql表中超过100万条记录的所有距离所花费的时间要少得多。 (计算) - 在极短的时间内下载完整的Linux(双层DVD ISO)安装。 (带宽)
我怀疑我的packages.json
或我正在运行npm install
的命令有问题。从图像中,似乎有许多尝试来检索相同的文件。可能有办法迫使npm
从更稳定的镜子中取回?可能它默认使用的镜像选择是不是很难?只是一些建议 - 我不知道具体的原因,这就是我要问的原因。
这个问题也出现在我的Linode,数字海洋和VULTR盒子上 - 所以我怀疑它是特定的npm
,我使用的方式(缺少的东西),或我的packages.json
。
我能够从评论部分解决这个问题;概述下面的过程。
从评论
AndreFigueiredo说:
我使用你的package.json和npm v3.5.2以及node v4.2.6在不到1分钟的时间里安装了模块。我建议你更新node和npm。
v1.3.0甚至没有在v3上引入平坦的依赖关系来解决许多恼人的问题
LINKIWI说:
一般来说,不要依赖包管理器来保持最新的软件。我强烈建议从apt中清除你安装的node / npm组合,并按照nodejs上的说明安装最新版本。
意见
根据他们的建议,我注意到当使用nodejs
或npm
检索当前版本时,CentOS,Ubuntu和Debian都使用非常过时的apt
和yum
版本(取决于操作系统主程序包管理器)。
摆脱过时的nodejs
和npm
为了尽可能减少头痛,我运行了以下命令(在Ubuntu上):
apt-get purge --auto-remove nodejs npm
这清除了古老的nodejs
和npm
系统以及不再需要的所有依赖关系
安装当前的nodejs
和兼容的npm
下一个目标是获得nodejs
和npm
的当前版本,我可以直接从nodejs
获取here并编译或使用二进制文件,但这不会使我很容易交换版本(取决于项目的年龄) )。
我遇到了一个名为nvm的伟大软件包(到目前为止)似乎很好地完成了这项任务。要安装nodejs
版本7的当前稳定的最新版本:
安装nvm
curl -o- https://raw.githubusercontent/creationix/nvm/v0.33.0/install.sh | bash
来源.bashrc
source ~/.bashrc
使用nvm安装nodejs
7.x.
nvm install 7
在安装之后,我对npm
更快的性能感到惊喜,它现在也显示了一个非常好的进度条,同时还在试图打包。
对于那些好奇的人来说,npm
的当前(截至此日期)版本应该如下所示(如果没有,你可能需要更新它):
摘要
不要使用您的操作系统包管理器来安装NODE.JS或NPM - 您将得到非常糟糕的结果,因为似乎没有操作系统保持这些包(甚至不接近)当前。如果您发现npm
运行缓慢且不是您的计算机或互联网,则很可能是因为版本过时。