美文网首页nodejs
包管理工具 — yarn

包管理工具 — yarn

作者: YINdevelop | 来源:发表于2019-05-10 15:04 被阅读0次

    1.cnpm存在的问题

    1. 之前在npm更换成淘宝镜像源以及cnpm文章中讲到过,cnpm安装一个模块,会出现2个文件夹,如果同时安装很多模块,会导致文件夹更多的问题。
    2. 之前在package-lock.json文章中讲到过,npm安装可以生成package-lock.json来固定版本,cnpm不支持的问题。

    所以,我找到了一个包管理工具——yarn,既能避免npm下载速度过慢问题,又能避免上述cnpm存在的问题,很好的满足了我的需求。

    2.包管理工具——yarn

    FaceBook 开源的一个新的包管理器, 和npm的作用是一样的,但是解决了一些npm的痛点。如果上面所说的问题(cnpm文件夹过多、cnpm不支持lock文件),以及npm下载慢问题。还有其他优点我就不一一介绍了,可以参[中文文档](https://yarnpkg.com/zh-Hans/)。

    3.yarn的安装

    1. 安装node
    2. 如果安装了npm,可以使用npm install -g yarn安装,如果没有,也可以去官网下载安装包来安装
    3. 安装过后 yarn -v 可以查看是否安装成功

    4.yarn.lock文件

    和package-lock.json文件几乎一样(包括作用、生成位置以及和package.json改动同步更新)。
    只有两个区别:

    1. 生成方式(yarn:使用yarn install生成,且生成的是yarn.lock文件,npm:使用npm install生成,且生成的是package-lock.json文件)
    2. yarn.lock和package-lock.json格式不一样。
      我大致截个图,可以看下yarn.lock格式:

    5.yarn install安装的目录

    使用yarn install安装后的node_modules,和使用npm install安装的node_modules基本一样,并且不存在cnpm多个文件夹的情况,不过yarn会在node_modules中多了个.yarn-integrity文件,里面记录了依赖包的来源等。

    6.yarn的常用命令

    npm yarn
    npm init yarn init
    npm install yarn install
    npm install --no-package-lock yarn install --no-package-lock
    npm install xxx --save yarn add xxx
    npm install xxx --save-dev yarn add xxx --dev
    npm uninstall xxx --save yarn remove xxx
    yarn add xx@version npm install xx@vision
    yarn upgrade xx npm update xx
    yarn upgrade xx@version npm update xx@vision
    yarn why xx -
    yarn config list npm config list

    注:

    1. 不能使用yarn install xx,会报类似这种错

      error install has been replaced with add to add new dependencies. Run "yarn add lodash" instead.`

    2. 使用yarn why xx命令,可以查看xx模块为什么会别安装(即谁依赖的)。

       //测试moment模块
       $ yarn why moment
      
       //结果
       yarn why v1.16.0
       [1/4] Why do we have the module "moment"...?
       [2/4] Initialising dependency graph...
       [3/4] Finding dependency...
       [4/4] Calculating file sizes...
       => Found "moment@2.24.0"
       info Reasons this module exists
       - "antd" depends on it
       - Hoisted from "antd#moment"
       - Hoisted from "antd#rc-calendar#moment"
       - Hoisted from "antd#rc-time-picker#moment"
       Done in 0.41s.
      

    相关文章

      网友评论

        本文标题:包管理工具 — yarn

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