资讯专栏INFORMATION COLUMN

说明Yarn与Lerna管理monorepo使用

3403771864 / 574人阅读

  

       我们先说下 Yarn workspace

  首先Yarn workspace 是 Yarn 提供的 monorepo 下,管理依赖的机制。这就说主要对代码仓库下,多个 package 的依赖,进行管理:将共同的依赖,做 hosting(提升)。前述这样就可以有效的防止 package 中的包重复安装。 workspace 机制,会在根目录下,统一安装依赖到 node_module,并生成 yarn.lock。单个 package 下,不需要再生成 yarn.lock。

  如何使用 Yarn workspace

  1.Yarn 启用工作区

  yarn config set workspaces-experimental true

  命令的含义:添加workspaces-experimental true到系统全局的.yarnrc中。

  2.修改根目录的 package.json,添加如下内容:

  {
  "private": true,
  ...
  "workspaces": ["packages/*"]
  }

  配置项含义: private - 禁止发布根目录内容 workspaces - 设置工作区,在这份声明 workspace 中 package 的路径。值是一个字符串数组,支持 Glob 通配符。

  Lerna 安装依赖的方式

  Lerna 安装依赖的方式,是使用命令lerna bootstrap。 该命令的作用,是 cd 到 package 文件夹下的每个子文件夹,运行npm install或yarn install,在子文件夹中生成版本lock文件和node_module,多带带对依赖进行管理。

  Yarn workspace 与 Lerna 结合

  结合的方式

  配置 lerna.json

  {
  ...
  "npmClient": "yarn",
  "useWorkspaces": true
  }

  配置 package.json

  {
  "private": true,
  ...
  "workspaces": ["packages/*"]
  }

  角色的分配

  其中Yarn 负责管理依赖,这就的话,workspace 会自动对 package 的引用 ,设置软链接(symlink),并且软链接仅在当前 workspace 中生效。 Lerna 负责版本的发布工作,对 package 相互之间的依赖,做好版本管理。

  现在我们说说有优点

  可以有效的减少项目的磁盘占用空间

  也可以让Yarn 将项目中的共同依赖,提升到根目录下进行安装

  还有就是自动设置软链接,方便调试

  Yarn 的 workspace 会自动对 package 的引用,设置 symlink

  所有 package 使用同一个 yarn.lock,更少造成冲突且易于审查

  再来说的就是使用

  首次安装依赖lerna bootstrap

  安装dependencies依赖 `yarn add -W [pkg]

  安装devDependencies依赖yarn add -D -W [pkg]

  -W的含义: 安装依赖到 workspace -D的含义: 安装依赖到devDependencies`

  以上就是本篇文章关于Yarn与Lerna管理monorepo使用详细解析,欢迎大家关注后续更多精彩内容。



文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129037.html

相关文章

  • Monorepo——大型前端项目的代码管理方式

    摘要:目前最常见的解决方案是和的特性。具体的使用方法移步官网而使用作为包管理器的同学,可以在中以字段声明,就会以的方式管理。这样的话,无论你的包管理器是还是,都能发挥的优势要是包管理是,就会把依赖安装交给处理。 最近我接手了一个项目,代码量比较大、有点复杂。仓库 clone 下来代码有 50+ MB,npm install 安装完体积飚到了近 2GB …… 熟悉了一下,这个项目比较复杂,采用...

    ziwenxie 评论0 收藏0
  • lerna管理package

    摘要:最近发现公司一个项目的目录组织挺奇怪的,所有的子项目都放在了目录里,还有这种骚操作特意查了下资料,发现是一种比较流行的项目管理模式。 最近发现公司一个项目的目录组织挺奇怪的,所有的子项目都放在了packages目录里,还有这种骚操作?特意查了下资料,发现是一种比较流行的monorepo项目管理模式。近几年比较火的React,Vue,Babel都是用的这种模式: showImg(http...

    PumpkinDylan 评论0 收藏0
  • 精读《Monorepo 的优势》

    摘要:引言本周精读的文章是。精读总的来说,虽然拆分子仓库拆分子包是进行项目隔离的天然方案,但当仓库内容出现关联时,没有任何一种调试方式比源码放在一起更高效。前端精读帮你筛选靠谱的内容。 1. 引言 本周精读的文章是 The many Benefits of Using a Monorepo。 现在介绍 Monorepo 的文章很多,可以分为如下几类:直接介绍 Lerna API 的;介绍如何...

    xcc3641 评论0 收藏0
  • 解析ahooks整体架构及React工具库源码

     这是讲 ahooks 源码的第一篇文章,简要就是以下几点:  加深对 React hooks 的理解。  学习如何抽象自定义 hooks。构建属于自己的 React hooks 工具库。  培养阅读学习源码的习惯,工具库是一个对源码阅读不错的选择。  注:本系列对 ahooks 的源码解析是基于v3.3.13。自己 folk 了一份源码,主要是对源码做了一些解读,可见详情。  第一篇主要介绍 a...

    3403771864 评论0 收藏0
  • 打造个人or团队适用的开源项目规范

    摘要:打造个人团队适用的开源项目规范是一个用来优化托管在上的多代码库的工作流的一个管理工具可以让你在主项目下管理多个子项目,从而解决了多个包互相依赖,且发布时需要手动维护多个包的问题。 打造个人or团队适用的开源项目规范 lerna Lerna 是一个用来优化托管在gitnpm上的多package代码库的工作流的一个管理工具,可以让你在主项目下管理多个子项目,从而解决了多个包互相依赖,且发布...

    huangjinnan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<