为什么"npm install"真的很慢?

Kra*_*ime 42 node.js npm

设置我的包时我做错了什么?有什么方法可以加快速度吗?

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"
}
Run Code Online (Sandbox Code Playgroud)

如果我跑的话,在文件夹里面

npm install
Run Code Online (Sandbox Code Playgroud)

我得到以下可能需要数小时才能完全设置:

npm安装卡住了

这不是一般的计算或硬件问题.比较速度如下:

  1. 运行packages.json :以计算非索引mysql表中超过100万条记录的所有距离所花费的时间明显减少.(计算)

  2. 在极短的时间内下载完整的Linux(双层DVD ISO)安装.(带宽)

我怀疑我haversine或我正在运行的命令有问题packages.json.从图像中,似乎有许多尝试来检索相同的文件.可能有办法迫使npm install从更稳定的镜子中取回?可能它默认使用的镜像选择是不是很难?只是一些建议 - 我不知道具体的原因,这就是我要问的原因.

这个问题也出现在我的Linode,数字海洋和VULTR盒子上 - 所以我怀疑它是特定的东西npm,我使用的方式(缺少的东西),或者我的npm.

Kra*_*ime 25

我能够从评论部分解决这个问题; 概述下面的过程.

从评论

AndreFigueiredo说:

我使用你的package.json和npm v3.5.2以及node v4.2.6在不到1分钟的时间里安装了模块.我建议你更新node和npm.


v1.3.0甚至没有在v3上引入平坦的依赖关系来解决许多恼人的问题

LINKIWI说:

一般来说,不要依赖包管理器来保持最新的软件.我强烈建议从apt中清除你安装的node/npm组合,并按照nodejs.org上的说明安装最新版本.

意见

继他们的意见,我注意到,CentOS的,Ubuntu的,和Debian都使用非常的过时的版本nodejsnpm检索时,当前使用的版本aptyum(视操作系统主要包管理器).

摆脱过时的nodejsnpm

为了尽可能减少头痛,我运行了以下命令(在Ubuntu上):

apt-get purge --auto-remove nodejs npm
Run Code Online (Sandbox Code Playgroud)

这清除了陈旧的制度nodejsnpm以及它已不再需要所有的依赖

安装电流nodejs和兼容npm

下一个目标是让两者的当前版本nodejsnpm我可以嵌入nodejs直接从这里,要么编译或使用二进制,但是这并不能使它容易掉的版本,因为我需要(取决于项目的年龄).

我遇到了一个名为nvm的优秀软件包(到目前为止)似乎很好地管理了这个任务.要安装当前稳定版本7的最新版本nodejs:

安装 nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
Run Code Online (Sandbox Code Playgroud)

资源 .bashrc

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

用NVM安装nodejs7.x版

nvm install 7
Run Code Online (Sandbox Code Playgroud)

在安装之后,我对它的快速性能感到惊喜,npm现在它也显示了一个非常好的进度条,同时还在试用包装.

对于那些好奇的人来说,当前(截至此日期)版本npm应该如下所示(如果没有,你可能需要更新它):

当前npm正在运行

摘要

不要使用您的操作系统包管理器来安装NODE.JS或NPM - 您将得到非常糟糕的结果,因为似乎没有操作系统保持这些包(甚至不接近)当前.如果您发现npm正在运行速度慢,这是不是你的电脑或互联网,它是最有可能的,因为一个严重过时的版本.


Abd*_*eed 6

我正在使用Linux并具有nvm并使用超过7个版本的节点 。根据我的经验,我在最新项目中遇到了相同的情况(实际上不是几小时,而是几分钟,因为每小时的项目我不能等上几个小时:))

免责声明:在您了解缓存清理的工作原理之前,请不要尝试以下选项

npm cache clean --force

然后对我来说一切正常,因此看起来npm的缓存有时会与不同版本的Node混淆。

Npm缓存的官方文档可以在 这里找到

  • 我认为在此处添加有关缓存清理的工作原理(或至少是链接)的简要说明会更好。 (6认同)

Col*_*n D 5

我从您的屏幕截图中看到您在 Windows 上使用 WSL。而且,Windows 自带病毒扫描程序,病毒扫描会使 NPM 安装速度非常慢!

在安装过程中添加豁免或禁用病毒扫描可以大大加快速度,但鉴于恶意 NPM 包的可能性,这可能是不可取的

一个链接建议三重安装时间https://ikriv.com/blog/?p=2174

虽然我没有广泛地介绍自己