精品 cnpm@beta 测试:征集 npm install 非常慢的应用
发布于 9 年前 作者 fengmk2 10773 次预览 最后一次回复是 9 年前 来自 分享
cnpm 高速版本 beta 征集
cnpm 高速版本目前正在 beta,为了更加大范围地支持 npm install 很慢的项目,需要大家来帮忙测试。
- 如果你当前日常的项目每次重新 npm install 你都需要走开去喝咖啡喝茶的,那么你就是我们这次发布的重点关注对象了。
- 如果你是公司里面负责前端工程的同学,你是不是每天都在吐槽“尼玛 build 一个 react app 比 build Java 还慢”?回答 yes?那么你就是我们这次发布的重点关注对象了。
- 在 Twitter 上每天都有很多人抱怨 npm install 超级慢,你是不是也在抱怨呢?回答 yes?那么你就是我们这次发布的重点关注对象了。
如何参加 beta 测试
直接安装 cnpm@beta 版本即可
$ npm i -g cnpm[@beta](/user/beta) --registry=https://registry.npm.taobao.org
$ cnpm -v
4.2.0-beta.3
能快多少?
目前我测试下来,安装 cnpmjs.org 这个模块能大大节约 npm install 时间:
- Before:
cnpm@3.4.1
$ cnpm cache clean
$ time cnpm install cnpmjs.org
real 0m24.370s
user 0m12.982s
sys 0m4.170s
- After:
cnpm@4.2.0
$ cnpm cache clean
$ time cnpm install cnpmjs.org --no-cache
[cnpmjs.org@*] installed at node_modules/.npminstall/cnpmjs.org/2.8.0/cnpmjs.org (0 packages, use 5s, speed 1.04MB/s, json 1.44MB, tarball 3.74MB)
All packages installed (215 packages installed from npm registry, use 5s, speed 1.03MB/s, json 266(1.44MB), tarball 3.74MB)
real 0m6.220s
user 0m4.871s
sys 0m2.072s
Why we can improve the install speed? Check out npminstall and take a look.
本周某个时间,等大家的反馈稳定后,cnpm 将合并 https://github.com/cnpm/cnpm/pull/72 代码发布正式版本。
41 回复
现在cnpm好像把 node-pre-gyp 放在 s3 的那些东西也代理是吧, 装一个 electron-prebuilt 好快啊~给赞~
@magicdawn 是的,在这里 https://github.com/cnpm/mirrors
node sass 很慢
node sass基本装不上
@jinwyp cnpm 也很慢?
@jinwyp 我试了一下挺快的,7s 就安装完了。
大家帮忙一起测测哈~
简单说来,就是 cnpm 升了 npm 3
@alsotang @fengmk2 能弱弱的问一句,npm为什么会慢么?
顺便建议一下置顶~
@XGHeaven 看看上面提到的npminstall github readme 说明
@alsotang 主要是npminstall,不是npm3。
使用npminstall安装模块,用webpack会有点问题
@fengmk2 哦。。看少了。。
@leizongmin 具体是什么表现?给个package.json? 自豪地采用 CNodeJS ionic
@fengmk2 我看了一下,为什么 pnpm 会使用
_这个中间目录,而cnpm不用呢?(其实没太看懂原文中说跟npm ls有什么关系)-. - cnpm 不是很早就有了么,为什么这次突然大张旗鼓起来
记得babel好慢。。。
@xadillax 这次是一个大更新,主要可以提升安装速度。
@fengmk2 似乎是webpack自身的问题:http://webpack.github.io/docs/troubleshooting.html#npm-linked-modules-doesn-t-find-their-dependencies 链接过来的模块在webpack中编译会报错
找不到模块这些奇怪的错误是啥东西?
@leizongmin 为啥会去 npmsjs.org 安装的呢?
@reverland 我是了 babel 和 babel-cli 都安装很快
@xadillax 这次是全新的实现,彻底解决 npm install 速度问题了。
@fengmk2 能否选择支持 npm 和 npminstall 切换,因为我有一些旧的项目是使用 npm3 安装的,和 npminstall 似乎是不兼容吧。还有,能否有进度条显示,就算是跟 npm2 时代的 /|- 一样也行呀。
@fengmk2 应该是我忘记加
-c参数了@leizongmin 直接安装 cnpm@beta 来玩吧。
@fengmk2 求告知详细细节 0. 0 具体做了哪些方面的优化(好奇心害死猫
strong-loop
@xadillax 大概看了一下打印出来的信息,原理应该是这样的:
node_modules目录下只会有一份node_modules目录下所有模块目录直接链接到.npminstall/模块名/版本@fengmk2 没在Windows下测试过,不知道是否支持?
@leizongmin 原来如此,利用软链啊。
话说升到
npm3了?那不是强制 flatten 了?@leizongmin https://ci.appveyor.com/project/fengmk2/npminstall appveyor 上有配置单元测试。可以的
@xadillax npm3 是尽量 flatten,但是还是很多情况下没法 flatten 的
@leizongmin 目录结构可以看这个 https://github.com/cnpm/npminstall#node_modules-directory 详细说明。
原理可以看 pnpm https://github.com/rstacruz/pnpm/blob/master/docs/vs-npm.md
@xadillax 原理看回复 https://cnodejs.org/topic/56dcd2cc502596633dc2c3e9#56dff4a4f5d830306e2f0f34
其实就是将 npm 认为无法并行的任务并行了。只要你的 cpu 和网络够快,安装速度就够快。而且还完成支持 lib 模式,你的应用也可以动态安装模块,实现类似 https://tonicdev.com/npm/chalk 的功能了。
@XGHeaven 你选择使用旧版本就 ok 了。
npm install cnpm@3@fengmk2 但是我讨厌 flatten,我希望完全 nested-。 -
@xadillax npminstall 的做法就是保持跟 npm2一致
弱弱的问一下
cnpm 4.2.0-beta.3与npm 3.x.x有什么区别?环境:
本地cnpm.org仓库,cnpm install 非常慢(十几分钟),领导快怒了。一共才安装快两百个三方包,node-sass binary 也已经使用本地缓存了
另外请教一下,cnpm.org 如何升级?以及 node 升级需要重新安装吗?