我们先说下 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
...了近 2GB …… 熟悉了一下,这个项目比较复杂,采用了 monorepo 的方式进行代码的管理。折腾几天后,对 monorepo 也有个大概的了解…… Monorepo Monorepo 是管理项目代码的一个方式,指在一个项目仓库 (repo) 中管理多个模块/包 (package...
...有这种骚操作?特意查了下资料,发现是一种比较流行的monorepo项目管理模式。近几年比较火的React,Vue,Babel都是用的这种模式: 我们平常一般采用的都是multiple repositories的项目管理模式:把一个大项目拆分成若干个小项目,每个...
1. 引言 本周精读的文章是 The many Benefits of Using a Monorepo。 现在介绍 Monorepo 的文章很多,可以分为如下几类:直接介绍 Lerna API 的;介绍如何从独立仓库迁移到 Lerna 的;通过举例子说明 Monorepo 重要性的。 本文属于第三种,从 ...
...场景而生的文档工具。</p><p> 该项目是一个monoRepo。它的项目管理是通过lerna进行管理的。</p><p> 单元测试是通过 jest 实现。</p><p> 在目录结构中,明显看到docs 中存放仓库公共文档。packages 中...
...用来优化托管在gitnpm上的多package代码库的工作流的一个管理工具,可以让你在主项目下管理多个子项目,从而解决了多个包互相依赖,且发布时需要手动维护多个包的问题。 lerna的文件树: my-lerna-repo/ package.json packages/ packa...
阅读 32·2023-03-27 18:33
阅读 35·2023-03-27 17:49
阅读 45·2023-03-26 17:27
阅读 29·2023-03-26 17:14
阅读 33·2023-03-17 21:13
阅读 29·2023-03-17 08:28
阅读 525·2023-02-27 22:32
阅读 191·2023-02-27 22:27