博客文章系列“Ledger Live Monorepo 项目”的第二篇文章,一位 Ledger 开发人员向我们讲述了 Ledger Live 代码库大规模迁移到 Mono 存储库的故事。 如果您错过了第 1 部分,请在此处查看:
在确定 monorepo 架构是一个可行的解决方案后,我们开始研究可用的工具来实施我们的计划。
处理多个项目
在 Ledger Live 团队中,我们在 JavaScript 生态系统中导航,幸运的是,我们已经知道使用包管理器处理多个项目的几种方法。 其中一些可能的解决方案包括:
- NPM (支持工作区但有更好的选择),
- 纱线1 (变得太旧了,更好、更有效的替代方案),
- 纱线≥2 (有趣的想法,但即插即用并没有得到很好的支持,尤其是 React Native),
- PNPM (符号链接,考虑到工作空间而构建,磁盘效率高)。
看完所有这些之后,我们决定去 PNPM 为:
- 磁盘效率(它使用虚拟 商店 和 符号链接,因此包仅下载一次,然后从虚拟商店符号链接到您的node_modules),
- 速度(由于包被缓存,后续安装速度更快),
- 内置对工作区/monorepo 架构的支持(别名、编排等……)。
在纸上 PNPM 绝对是一个宝石,但正确设置符号链接有点奇怪(同样,特别是使用 React Native)。
好的,我们的选择已经做出,我们会选择 PNPM。
脚本编排
即使 PNPM 为其功能添加了越来越多的编排,但它仍然没有涵盖我们想做的所有事情,例如:
- 顺序构建,
- 缓存。
对于这些,我们发现了两个有趣的竞争者,我们需要看看:
我们对两者都进行了概念验证。
NX 有更多的功能、生成器、自动化、强大的依赖图等……但是,它增加了很多开销,而且由于它非常固执己见,我们必须遵循他们的约定。
涡轮回购 另一方面,这是非常基本的功能。 然而,它是一种方便的即插即用解决方案,如果有需要,我们可以很快进行更改。
即使 涡轮回购 特征少于 NX,它做了我们正在寻找的两件事:
- 尊重依赖树(和并发构建)的构建编排,
- 缓存(如果代码未更改,则构建会被缓存并“重播”)。
再加上方便的进出,让我们选择了街区里的新孩子, 涡轮回购.
版本
我们也研究了几种解决方案,但最终决定使用 https://github.com/changesets/changesets 因为它是 TurboRepo 推荐的一个工具,并且在阅读了一些文档后,它似乎符合我们的需求。
开发人员需要在开发流程中更加严格并提供 changesets
(描述其代码更改的库的文件,严重性如下 服务器 惯例,以及变更的描述)。 这些 changesets
然后用于根据给定的严重性自动升级软件包的版本,并自动生成 变更日志。 最重要的是,这些工具允许 pre release
模式,🍰 上的 🍒。
下一步是什么 ?
决定了工具之后,就该开始工作了。 在下一篇博客文章中,我们将讨论单存储库上下文中的构建系统和所有开发操作/自动化/持续集成。
瓦伦丁·德·阿尔梅达
开发者体验和核心技术 – Ledger Live
- :具有
- :是
- :不是
- :在哪里
- 1
- a
- 关于
- 绝对
- 添加
- 添加
- 后
- 再次
- 所有类型
- 允许
- 已经
- 替代品
- an
- 和
- 角度方向
- 公布
- 架构
- 保健
- 刊文
- AS
- At
- 自动化
- 自动
- 自动化和干细胞工程
- 可使用
- 基本包
- BE
- 成为
- 更好
- 位
- 阻止
- 博客
- 博客文章
- 都
- 建立
- 建立
- 建
- 但是
- by
- 更改
- 变
- 更改
- 查
- 选择
- 码
- 代码库
- 购买的订单均
- 执行
- 概念
- 并发
- 上下文
- 连续
- 便捷
- 公约
- 核心
- 正确地
- 可以
- 外壳
- 决定
- 决定
- 依赖
- 描述
- 描述
- 开发
- 开发商
- DID
- do
- 文件
- 不会
- 下降
- 易
- 生态系统
- 效率
- 高效
- 条目
- 特别
- 建立
- 醚(ETH)
- EVER
- 一切
- 到处
- 体验
- 快
- 专栏
- 特征
- 文件
- 流
- 遵循
- 以下
- 针对
- 幸好
- 发现
- 止
- 宝石
- 代
- 发电机
- 特定
- Go
- 图表
- 大
- 民政事务总署
- 手
- 处理
- 有
- 相关信息
- HTTPS
- 巨大
- 主意
- if
- in
- 包括
- 积分
- 有趣
- 成
- IT
- 它的
- JavaScript的
- 只是
- 小子
- 莱杰
- Ledger Live
- 减
- 自学资料库
- 生活
- 看
- 看着
- 寻找
- 占地
- 制成
- 使
- 经理
- 最大宽度
- 移民
- 介意
- 错过
- 时尚
- 更多
- 更高效
- 许多
- 多
- 本地人
- 导航
- 需求
- 打印车票
- 需要
- 全新
- 下页
- 现在
- of
- 老
- on
- 一旦
- 一
- 仅由
- 自以为是
- 管弦乐编曲
- 其他名称
- 我们的
- 输出
- 包
- 包
- 纸类
- 部分
- 地方
- 计划
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 播放
- 插头
- 即插即用
- 加
- 可能
- 帖子
- 漂亮
- 项目
- 项目
- 证明
- 概念验证
- 提供
- 放
- 很快
- 应对
- 反应本机
- 阅读
- 建议
- 知识库
- 关于
- 严格
- 似乎
- 系列
- 格局
- 几个
- 严重
- 闪耀
- 自
- So
- 方案,
- 解决方案
- 一些
- 特别
- 速度
- 开始
- 开始
- 仍
- 商店
- 故事
- 随后
- 这样
- SUPPORT
- 支持
- 系统
- 采取
- 谈论
- 团队
- 科技
- 告诉
- 比
- 这
- 该座
- 其
- 然后
- 博曼
- 事
- 那些
- 虽然?
- 次
- 至
- 也有
- 工具
- 工具
- 最佳
- 树
- 二
- 最终
- us
- 用过的
- 使用
- v1
- 版本
- 非常
- 可行
- 在线会议
- 通缉
- 是
- 方法
- we
- 井
- 为
- ,尤其是
- 这
- 将
- WISE
- 加工
- 将
- 但
- 您
- 您一站式解决方案
- 和风网