npm与yarn

2019-01-09  本文已影响0人  书虫和泰迪熊

yarn是由Facebook,Google,Exponent,Tilde联合推出的一个新的JS包管理工具,yarn是为了弥补npm的一些缺陷而出现的。

npm的一些坑

(1). npm install 巨慢,特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。
(2). 同一个项目安装时无法保证一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义
-"5.0.3" : 表示安装指定的5.0.3版本;
-"~5.0.3" :表示安装新的版本;
-"^5.0.3" :表示安装5.X.X中最新的版本,
这样就麻烦了,常常出现在同一个项目中,有的同事是ok的,有的同事会由于安装的版本不一致出现bug。
(3). 安装的时候,包会在同一时间下载和安装,中途某个时候,一个包抛出错误,但是npm会继续下载和安装包。因为npm会把所有日志输出到终端,有关错误包的信息就会在一大堆npm打印的警告中丢失掉,并且你不会注意到实际发生的错误。
带着而这些坑,开始了yarn的优势及其解决的问题

yarn的优点

(1). 速度快
· 并行安装
· 离线模式
(2). 安装版本统一
(3). 更简洁的输出
(4). 多注册来源处理
(5). 更好的语义化

  1. yarn和npm命令对比
npm yarn 功能
npm install xxx --global(-g) yarn global(-g) add xxx 全局安装依赖包
npm install yarn install 根据package.json安装项目所需的依赖包
npm update --global(-g) yarn global(-g) upgrade 全局更新依赖包
npm install --save-dev yarn add xxx --dev 安装所需的依赖包,并将该包的记录写到package.json文件的 devDependencies 选项中
npm uninstall xxx yarn remove xxx 卸载
npm version major yarn version --major 更新依赖包的版本
  1. npm的的未来:npm5.0
    有了yarn的压力后,npm做了相应的改进
    (1). 默认增加了类似于yarn.lock的package-lock.json
    (2). git依赖支持优化:这个特性在需要安装大量内部项目(例如在没有自建源的内网开发),或需要使用某些依赖的未发布版本时很有用。在这之前可能需要使用指定 commit_id 的方式来控制版本。
    (3).文件依赖优化:在之前的版本,如果将本地目录作为依赖来安装,将会把文件目录作为副本拷贝到 node_modules 中。而在 npm5 中,将改为使用创建 symlinks 的方式来实现(使用本地 tarball 包除外),而不再执行文件拷贝。这将会提升安装速度。目前yarn还不支持。
上一篇下一篇

猜你喜欢

热点阅读