yarn的介绍及workspace的使用

yarn介绍及使用

  1. yarn工作流
    yarn工作流与npm类似 都是使用package.json文件,yarn会重组node_modules文件,且不会与npm冲突,并会自动生成yarn.lock文件,保证团队依赖版本一致性,但如果之前使用了package-lock.json时,那么锁定的版本可能依然存在冲突的可能,这时需要团队之间同时切换到 Yarn;
  2. yarn-cli命令行工具常见命令
    对于经常用到的项目初始化,对包的安装、卸载、升级、发布等操作,Yarn 都提供了丰富而简洁的命令:
yarn add <package...> [option]:为当前正在开发的包新增一个依赖包,默认添加到 dependencies 中;
yarn global <add/bin/list/remove/upgrade> [--prefix]:yarn global 注意,这两个词整体作为一个命令前缀;
yarn init:交互式创建或更新 package.json 文件;
yarn [install]:安装 package.json 文件里定义的所有依赖包;
yarn publish:发布一个包到包管理器;
yarn remove:从当前包里移除一个未使用的包

  1. workspace的介绍和使用。
    workspace是除缓存外yarn区别于npm最大的优势
    1. workspace的作用:
      (1). 能帮助你更好地管理多个子project的repo,这样你可以在每个子project里使用独立的package.json管理你的依赖,又不用分别进到每一个子project里去yarn install/upfrade安装/升级依赖,而是使用一条yarn命令去处理所有依赖就像只有一个package.json一样
      (2). yarn会根据就依赖关系帮助你分析所有子project的共用依赖,保证所有的project公用的依赖只会被下载和安装一次。
    2. workspace的使用
      yarn workspace并不需要安装什么其他的包,只需要简单的更改package.json便可以工作。 首先我们需要确定workspace root,一般来说workspace root都会是repo的根目录
    • yarn workspace目录结构树:


      image
    • package.json:
    {
        //当private为true时workspace才会被启用
        "private": true,
        "workspace": ["workspace-a","workspace-b"]
    }
    workspaces属性的值为一个字符串数组,每一项指代一个workspace路径,支持全局匹配,这里的路径指向指的是package.json所在文件夹文件夹名。
    
    
    • workspace-a子project的package.json
    {
        "name": "workspace-a",
        "version": "1.0.0",
        "dependencies": {
            "cross-env": 5.0.5
        }
    }
    
    • workspace-b子project的package.json
    {
        "name": "workspace-b",
        "version": "1.0.0",
        "dependencies": {
            "cross-env": "5.0.5",
            "workspace-a": "1.0.5"
        }
    }
    
    
    • 在根目录执行yarn insatll


      image

      你会发现整个repo只生成了一份yarn.lock,绝大多数的依赖包都被提升到了根目录下的node_modules之内。各个子project的node_modules里面不会重复存在依赖,只会有针对根目录下cross-env的引用。不仅如此,你会发现,对于repo内部的依赖关系(比如workspace-b依赖于workspace-a),yarn也能很好的进行管理。

    1. workspace有哪些不足和限制
      1. yarn workspace并没有像lerna那样封装大量的高层API,整个workspace整体上还是依赖于整个yarn命令体系。
      2. workspace不能嵌套(只能有一个根workspace)
      3. workspace采用的是向上遍历,所以workspace并不能识别根workspace之外的依赖。
        参考资料:
        yarn中文文档
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Yarn 对你的代码来说是一个包管理器, 你可以通过它使用全世界开发者的代码, 或者分享自己的代码。Yarn 做这...
    古德毛宁_39de阅读 12,293评论 0 2
  • 常用命令 通过 npm 安装 执行 set PATH=%PATH%;C:\.yarn\bin 来重新设置环境。 初...
    majun00阅读 5,642评论 0 3
  • Yarn 初始化一个项目 yarn init 相当 npm init yarn add添加一个包 相当 ...
    FConfidence阅读 28,916评论 5 19
  • 水龙吟_次韵苏章《扬花词》 扛上步枪 桂华流瓦过湖,莲蓬抬头叶枯坠。 寒蝉轻泣,有声无意,乱了心思。 独坐孤亭,只...
    扛上步枪阅读 3,034评论 0 0
  • 昨晚是我早睡的第二天,23 : 00。 001 开始掌握早睡的节奏 昨晚8:30加完班,我回宿舍做的第一件事,就是...
    爱吃彩虹糖的猫阅读 1,027评论 0 3