为什么使用yarn

yarn刚出来的时候并不能理解它存在的意义,所以之前一直都未曾使用。但是最近经常遇到两个让人很郁闷的问题。

  • 另一个人clone项目后npm install,发现运行不起来,去node_modules里面查看依赖库的版本号和我本地的不同。然后只好把package.json中依赖库的版本号从^2.3.0 变成了 2.3.0,指定版本。
  • 还有上面搞不定的情况,例如: 我在开发的项目中依赖了库gulp:3.9.1, 但是 gulp又依赖了minimist:^1.1.0,如果minimist这个库升级变成了1.1.1,那么最近安装的人这个库就变成了minimist:1.1.1。如果minimist:1.1.1并没有做到兼容,但是版本号却按这种兼容的方式写了,很有可能项目就启不起来了。
  • npm5之前的版本的npm install的速度真的太慢了,特别是react-native的项目。

机制

yarn正是解决了上面的痛点, 准确速度

初次执行生成yarn.lock文件

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


abab@^1.0.3:
  version "1.0.3"
  resolved "http://registry.npm.taobao.org/abab/download/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"

abbrev@1:
  version "1.1.0"
  resolved "http://registry.npm.taobao.org/abbrev/download/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"

abbrev@1.0.x:
  version "1.0.9"
  resolved "http://registry.npm.taobao.org/abbrev/download/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"

accepts@~1.3.3:
  version "1.3.4"
  resolved "http://registry.npm.taobao.org/accepts/download/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f"
  dependencies:
    mime-types "~2.1.16"
    negotiator "0.6.1"

acorn-globals@^3.1.0:
  version "3.1.0"
  resolved "http://registry.npm.taobao.org/acorn-globals/download/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
  dependencies:
    acorn "^4.0.4"

acorn-jsx@^3.0.0:
  version "3.0.1"
  resolved "http://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
  dependencies:
    acorn "^3.0.4"

acorn@^3.0.0, acorn@^3.0.4:
  version "3.3.0"
  resolved "http://registry.npm.taobao.org/acorn/download/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"

acorn@^4.0.4:
  version "4.0.13"
  resolved "http://registry.npm.taobao.org/acorn/download/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"

acorn@^5.1.1:
  version "5.1.2"
  resolved "http://registry.npm.taobao.org/acorn/download/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7"

可以看到每个url最后都有一个hashcode,初次执行的时候都会给每个包分配好这个hashcode

在已有yarn.lock文件的项目中执行安装依赖包

安装过程中会省去从node_modules中分析出依赖树的过程,因为已经有了依赖树yarn.lock。所以安装过程会快很多。并且,由于hashcode的存在,能够保证每一个人安装的库都是一致的。

怎么使用

安装(npm的方式)

npm install yarn -g

初始化yarn.lock

yarn

安装依赖库

yarn install 等同于 npm install yarn add package-name 等同于 npm install package-name

查看设置

yarn config list

设置淘宝镜像/内部库

yarn config set registry http://registry.cnpm.dev.private.com

其他

官方文档

results matching ""

    No results matching ""