为什么要用yarn替代npm?
ttop5 opened this issue · 0 comments
ttop5 commented
自动锁定版本
这是我坚定不移的使用yarn替换npm的最大原因,只因一次对老项目的问题排查(说多了都是泪 😭 )。
一般使用如 npm install lodash
的时候package.json里面写入的是类似于 "lodash": "^2.4.0"
,默认项目的依赖包每次安装都取最新版,依赖包的更新避免不了的会对我们自己的项目造成巨大的影响,所以我们需要锁定版本。
当然,对此npm官方推出了 shrinkwrap
用来锁定你的依赖版本,你页可以在 package.json
中手动锁定版本(不使用 ^
的宽泛版本管理),但是由于npm的安装包的层次结构,你对你项目所依赖的三方包的依赖没办法进行控制,任何一个三方包不严谨的版本依赖就可能破坏你的依赖管理。使用yarn这些问题就不复存在!
扁平依赖和嵌套依赖
扁平化模式 — 对于不匹配的依赖版本的包创立一个独立的包,避免创建重复的包。
很快,非常快
yarn 缓存了每次你下载的模块,所以同样模块同样的版本不会发送第二次下载请求,对于没有缓存的模块, yarn 也可以通过并行的网络请求最大限度利用网络资源。现在真的是没有什么几十秒安装不完的依赖的。一个 50 个依赖的 webpack + babel 项目可以在 20 秒左右安装完成。有人拿 lockfile 说事,这。。。去掉一个默认的特性还有什么好对比的,你可以参考官方对比 npm 的区别 Compare Yarn Performance
安全、可靠
yarn 在开始安装一个包之前会先用 checksums 来验证,你不用担心本地的缓存的包被破坏了导致安装失败。FB开发、使用和维护,靠谱~