【发布时间】:2020-07-21 23:24:43
【问题描述】:
我对@987654323@ 有一个常见(或不太常见)的场景,但在网上找不到适合我的指南。
yarn 工作区看起来像这样:
- monorepo
- packages
- client
- admin
- theme
- lib
- Client 用作我们的最终用户,它是一个 React 项目
- Admin 用作管理员用户的后台,它也内置在 react 中
-
主题 用于所有 UI 工具包(组件)和故事书。我们在
client和admin中使用 UI 工具包 项目,这是经典的“monorepo 风格”(lerna)在 2 个项目之间共享组件。此文件夹应仅为此项目共享。 - Lib 用于所有 API 并在多个项目之间共享“业务逻辑”。我有 4 个项目,它们对 API 请求、身份验证、Redux 等使用相同的库功能。
附加信息:
-
monorepo是带有.gitmodules的根存储库 - 每个子文件夹都是不同的 git 存储库
- 我们使用工作区是为了同时在
theme和client和admin项目上轻松开发。
问题:
我们只在client 项目和admin 项目中运行yarn start。两个项目都使用相同的theme 和相同的lib 功能。因为lib 与其他项目共享,所以每周更新一次:
- 如何防止它在项目之间更新?我应该在 git 存储库中使用
tags还是应该从 monorepo 工作空间中删除lib并将其作为npm package使用(重点是在我们更改lib文件时有简单的开发过程不需要一遍又一遍地npm update。 - 如果
lib将是npm 包,我如何告诉monorepo 在我运行yarn start时使用工作区并在我运行yarn build时使用npm 版本?
请就这种情况的最佳做法提出建议。
提前致谢, 狮子座。
【问题讨论】:
-
您是否引用了此链接:smashingmagazine.com/2019/07/… toptal.com/front-end/guide-to-monorepos 如果没有,请参考那些他们有很好建议的链接
标签: lerna monorepo yarn-workspaces