为什么“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万条logging的所有距离需要的时间显着减less。 (计算) -
下载完整安装的Linux(双层DVD ISO)的时间要less得多。 (带宽)
我怀疑我的packages.json
或者我运行npm install
的命令有问题。 从图像看来,有很多尝试检索相同的文件。 可能有办法强制npm
从一个更稳定的镜子检索? 可能它默认使用的镜像select是不可靠的? 只是一些build议 – 我不知道这是为什么我问的具体原因。
这个问题也发生在我的Linode,Digital Ocean和VULTR盒子上 – 所以我怀疑它是用npm
,我使用的方式(缺less的东西)或我的packages.json
。
我能够从评论部分解决这个问题; 概述下面的过程。
从评论
AndreFigueiredo表示:
我用npm v3.5.2和node v4.2.6在package.json中用不到1分钟的时间安装了模块。 我build议你更新节点和NPM。
v1.3.0甚至没有在v3上引入扁平化的依赖,解决了很多烦人的问题
LINKIWI表示:
一般来说,不要依赖软件包pipe理员喜欢维护最新的软件。 我强烈build议清除你从apt安装的node / npm组合,并按照nodejs.org上的说明安装最新版本。
意见
根据他们的build议,我注意到当CentOS,Ubuntu和Debian使用apt
或yum
(取决于操作系统主包pipe理器)检索当前版本时,都使用非常过时的nodejs
和npm
版本。
摆脱过时的nodejs
和npm
为了尽可能减less头痛,我运行了下面的命令(在Ubuntu上):
apt-get purge --auto-remove nodejs npm
这清除了古老的nodejs
和npm
系统以及不再需要的所有依赖关系
安装当前的nodejs
和兼容的npm
接下来的目标是获得当前版本的nodejs
和npm
,我可以直接从这里 nodejs
,然后编译或者使用这个二进制文件,但是这样做并不容易根据需要交换版本(取决于项目的年龄)。
我遇到了一个叫做nvm的软件包, 到目前为止 ,它似乎很好地处理了这个任务。 要安装nodejs
版本7的当前稳定的最新版本:
安装nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
使用nvm安装nodejs
7.x nvm install 7
安装之后,我惊喜地发现npm
性能要快得多 ,现在它也显示了一个漂亮的进度条。
对于那些好奇的人来说,目前(截止到这个date)的npm
版本应该如下所示(如果不是这样,你可能需要更新它):
概要
不要使用你的操作系统包pipe理器来安装NODE.JS或NPM – 你会得到非常糟糕的结果,因为看起来OS没有保持这些包(甚至不接近)。 如果您发现npm
运行缓慢 ,并且不是您的计算机或互联网,最有可能是因为严重过时的版本。
问题 :如果不保持最新状态,则NPM效果不佳。 不过,过去的版本已经为我打破了。
解决scheme :正如Kraang所说,使用节点版本pipe理器nvm ,并带有–lts标志
安装它:
curl -o- https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
然后经常使用它来升级到NPM的最新“长期支持”版本:
nvm install --lts
需要注意的是 :当你得到一个新的npm版本时,你可能不得不重新安装所有的软件包。
我注意到的一件事是,如果你在新项目(文件夹)中工作,你必须重新configuration特定path的代理设置
-
Cd(更改terminal窗口path到目标文件夹。
-
npmconfiguration设置代理http://(ip地址):(端口)
-
npm config set https-proxy http://(ip address):(端口)
-
npm install -g @ angular / cli