# 你必须知道的yarn

yarn的起源 (opens new window)已经解释了为什么要创建一个新的javascript包管理器,这里笔者也推荐大家从npm切换为yarn。npm4就不说了,速度太慢了,npm5借鉴了很多yarn的机制,比如简单的版本锁、重写cache模块等,减少了与yarn的差距。但依然有些地方做的不如yarn,这篇文章 (opens new window)记录了npm5和yarn的实验对比,结论是:在没有缓存时,yarn和npm5速度差不多;在有缓存时,yarn比npm5快2倍。

# yarn优势

以下针对npm5前:

  • yarn 离线安装。 下载的时候 Yarn 缓存了所有的包以至于不需要再次从网络下载
  • yarn并行下载,使得时间更快。 通过并行操作最大限度地提高资源利用率,以至于再次下载的时候安装时间比之前更快。npm5之前是等上一个安装完后再执行下一个,串行下载。
  • yarn锁包yarn-lock,保证引用包正确。 yarn.lock 文件准确的锁定了所有被下载和项目依赖的包版本。通过这个文件,你能确定你的工程师团队的每一位成员都能安装准确的包,并且可以更容易的部署,而没有意外 bug出现。

# 指令

  • 常用
    • yarn init,初始化项目,相当于npm init。
    • yarn install 简写为yarn ,相当于npm install(i),用来安装。
    // 不生成 yarn.lock 鎖定文件,並且,如果需要更新則會失敗。
    // 服务器上编译通常加该参数,以保证yarn-lock.json一致
    yarn install --frozen-lockfile
    
    • yarn add ,安装模块,相当于npm install 。

    • yarn run,运行项目,相当于npm run。

  • 其他
    • yarn remove,卸载模块,相当于npm uninstall(un)。
    • yarn upgrade,更新模块,相当于npm update。
    • yarn link 这指令需要在你想要依赖的依赖包中执行,该指令会注册成功一个package名称
    • yarn link [package] 这指令应用到你的项目包中
    $ cd react
    $ yarn link
    success Registered "react".
    
    $ cd ../react-relay
    $ yarn link react
    
    • yarn bin, 打印出执行脚本的位置,可以被yarn run执行。相当于npm bin
    • yarn login/yarn publish npm登录和发布。相当于npm login/npm publish
    • yarn cache clean,清除缓存,相当于npm cache clean。
    • yarn list 列出当前所有依赖的包
    • yarn config list 显示所有配置设置
    yarn config set version-git-tag 1.0.0
    yarn config get version-git-tag
    yarn config delete version-git-tag
    

# 参考文章