Yarn与Lerna管理monorepo使用详解

 更新时间:2022年07月07日 15:04:56   作者:我是leon  
这篇文章主要为大家介绍了Yarn与Lerna管理monorepo的使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

什么是 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 installyarn 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使用详解的详细内容,更多关于Yarn Lerna管理monorepo的资料请关注脚本之家其它相关文章!

相关文章

  • vue 插槽简介及使用示例

    vue 插槽简介及使用示例

    这篇文章主要介绍了vue 插槽简介及使用示例,帮助大家更好的理解和学习vue框架,感兴趣的朋友可以了解下
    2020-11-11
  • 安装vue-cli的简易过程

    安装vue-cli的简易过程

    安装vue-cli的前提是你已经安装了npm,安装npm你可以直接下载node的安装包进行安装。接下来通过本文给大家介绍安装vue-cli的简易过程,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • Vue+ElementUI前端添加展开收起搜索框按钮完整示例

    Vue+ElementUI前端添加展开收起搜索框按钮完整示例

    最近一直在用element ui做后台项目,下面这篇文章主要给大家介绍了关于Vue+ElementUI前端添加展开收起搜索框按钮的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • Vue登录页面的动态粒子背景插件实现

    Vue登录页面的动态粒子背景插件实现

    本文主要介绍了Vue登录页面的动态粒子背景插件实现,将登录组件背景设置为 "粒子背景",具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • vue 实现动态设置元素的高度

    vue 实现动态设置元素的高度

    这篇文章主要介绍了在vue中实现动态设置元素的高度,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • webpack+vue.js实现组件化详解

    webpack+vue.js实现组件化详解

    vue的开发体验还是比较愉悦的。首先文档非常友好,所以上手会比较快。其次,配合webpack和vue-loader,每个页面都是一个.vue文件,写起来很方便。所以很适合做组件化开发,这篇文章我们就来一起看看webpack+vue.js如何实现组件化。
    2016-10-10
  • openlayers6之地图覆盖物overlay三种常用用法(popup弹窗marker标注text文本)

    openlayers6之地图覆盖物overlay三种常用用法(popup弹窗marker标注text文本)

    这篇文章主要介绍了openlayers6之地图覆盖物overlay三种常用用法(popup弹窗marker标注text文本),主要讲overlay三种最常用的案例,感兴趣的朋友一起看看吧
    2021-09-09
  • vue上传文件formData上传的解决全流程

    vue上传文件formData上传的解决全流程

    这篇文章主要介绍了vue上传文件formData上传的解决全流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Vue-Luckysheet的使用方法及遇到问题解决方法

    Vue-Luckysheet的使用方法及遇到问题解决方法

    Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源,这篇文章主要介绍了Vue-Luckysheet的使用方法,需要的朋友可以参考下
    2022-08-08
  • vue.js页面加载执行created,mounted的先后顺序说明

    vue.js页面加载执行created,mounted的先后顺序说明

    这篇文章主要介绍了vue.js页面加载执行created,mounted的先后顺序说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论