Yarn介绍

作者: 张歆琳 | 来源:发表于2017-04-21 00:01 被阅读7222次
    Yarn是facebook发布的一款取代npm的包管理工具。鉴于facebook在前端界的影响力,yarn一面世就很受瞩目,将学习使用后的心得整理成本篇。

    yarn的背景知识可以看CSS魔法分享的这篇文章。看下来相比npm,主要的优势在于:速度快,离线模式,版本控制。

    先说速度快。npm会等一个包完全安装完才跳到下一个包,但yarn会并行执行包,因此速度会快很多。网上有不少比较npm和yarn安装同样多依赖的执行速度,yarn在速度方面优势明显。实际项目中体验一下真是飞一样的速度,谁有试过谁知道~

    关于离线模式,本人能力有限,对CI系统的了解比较浅薄,因此对facebook介绍的无法离线使用npm的痛点感受不深。离线的原理比较简单,安装过的包会被保存进缓存目录,以后安装就直接从缓存中复制过来。

    最后说说版本控制。npm用下来比较强的一个痛点就是:当包 的依赖层次比较深时,版本控制不够精确。会出现相同package.json,但不同人的电脑上安装出不同版本的依赖包,出现类似 “我电脑上是好的,没问题呀”的bug很难查找。你可以使用npm-shrinkwrap来实现版本固化,版本信息会写入npm-shrinkwrap.json文件中,但它毕竟不是npm的标准配置。

    而yarn天生就能实现版本固化。会生成一个类似npm-shrinkwrap.json的yarn.lock文件,文件内会描述包自身的版本号,还会锁定所有它依赖的包的版本号:

    yarn.lock存储这你的每个包的确切依赖版本,能确保从本地开发到生产环境,所有机器上都有精确相同的依赖版本。

    yarn的常用命令

    安装yarn:

    npm install -g yarn
    

    成功安装后,可以查看版本号:

    yarn --version
    

    开始项目命令:

    yarn init   //同npm init,执行输入信息后,会生成package.json文件
    

    yarn的配置项:

    yarn config list                                           //显示所有配置项
    yarn config get <key>                                //显示某配置项
    yarn config delete <key>                            //删除某配置项
    yarn config set <key> <value> [-g|--global] //设置配置项
    

    安装包:

    yarn install                      //安装package.json里所有包,并将包及它的所有依赖项保存进yarn.lock
    yarn install --flat           //安装一个包的单一版本
    yarn install --force           //强制重新下载所有包
    yarn install --production   //只安装dependencies里的包
    yarn install --no-lockfile  //不读取或生成yarn.lock
    yarn install --pure-lockfile //不生成yarn.lock
    

    添加包(会更新package.json和yarn.lock):

    yarn add [package]
    yarn add [package]@[version]
    yarn add [package]@[tag]
    
    //不指定依赖类型默认安装到dependencies里,你也可以指定依赖类型:
    yarn add --dev/-D        //加到 devDependencies
    yarn add --peer/-P       //加到 peerDependencies
    yarn add --optional/-O  //加到 optionalDependencies
    
    //默认安装包的主要版本里的最新版本,下面两个命令可以指定版本:
    yarn add --exact/-E //安装包的精确版本。例如yarn add foo@1.2.3会接受1.9.1版,但是yarn add foo@1.2.3 --exact只会接受1.2.3版
    yarn add --tilde/-T      //安装包的次要版本里的最新版。例如yarn add foo@1.2.3 --tilde会接受1.2.9,但不接受1.3.0
    

    补充说明1:上述添加命令默认会从npm registry里去添加包,但yarn也支持你从其他路径去添加包,add命令可以添加具体路径,详见官网

    补充说明2:yarn推荐你将包安装在项目中,但同npm一样,你也可以全局安装包,用yarn global add就行了。yarn global可用在add,upgrade,remove命令前。但注意global必须紧接在yarn后面,例如yarn add global是非法的,yarn会尝试去安装一个名为“global”的包

    升级 / 移除单个包(均会更新package.json和yarn.lock):

    yarn upgrade [package]
    yarn upgrade [package]@[version]
    yarn upgrade [package]@[tag]
    
    yarn remove [package]
    

    yarn会将安装的包缓存起来:

    yarn cache ls         //列出所有本地缓存了的包
    yarn cache dir      //列出本地缓存的位置
    yarn cache clean    //清除本地缓存
    

    检查包:

    yarn check                  //检查package.json里的依赖版本和yarn.lock里是否一致
    yarn check --integrity  //检查package.json里的依赖版本的hash值和yarn.lock里是否一致,有助于验证包依赖没有更改
    

    下面这些命令和对应的npm命令差不多,有npm基础应该不难理解:

    yarn run
    yarn login/logout
    yarn owner add  
    yarn owner rm  
    yarn publish
    yarn version
    

    因为yarn和npm一样使用package.json,因此如果你的项目中正在使用npm可以无缝对接yarn。如果用下来实在不喜欢yarn,只要删除项目中的yarn.lock文件,继续使用npm命令就行了。但我相信你用过yarn,就再也回不去了~

    相关文章

      网友评论

        本文标题:Yarn介绍

        本文链接:https://www.haomeiwen.com/subject/icurzttx.html