我有一个常见(或不太常见)的场景yarn workspaces
并且在网上没有找到适合我的指南。
纱线工作区看起来像这样:
- monorepo
- packages
- client
- admin
- theme
- lib
-
Client用作我们的最终用户,它是一个react项目
-
Admin用作管理员用户的后台,它也是在 React 中构建的
-
Theme用于所有 UI 套件(组件)和故事书。我们使用 UI 套件
client
and admin
项目,这是经典的“monorepo 风格”(lerna),用于在两个项目之间共享组件。该文件夹应仅为该项目共享。
-
Lib用于多个项目之间的所有 API 和共享“业务逻辑”。我有 4 个项目,它们使用相同的库功能来处理 API 请求、身份验证、Redux 等。
附加信息:
-
monorepo
是根存储库.gitmodules
- 每个子文件夹都是一个不同的git存储库
- 我们使用工作区是为了轻松开发
theme
并在client
and admin
项目同时进行。
问题:
We run yarn start
只有在client
项目和admin
项目。两个项目都使用相同的theme
和一样lib
功能。因为lib
与其他项目共享,每周更新一次:
- 我如何防止它从一个项目更新到另一个项目?我应该和
tags
在 git 存储库中还是应该删除lib
从 monorepo 工作区并将其用作npm package
(重点是当我们改变lib
文件我们不需要npm update
一次又一次。
- If
lib
将是 npm 包,我如何告诉 monorepo 在运行时使用工作区yarn start
并在运行时使用 npm 版本yarn build
?
请提供有关此场景的最佳实践的建议。
提前致谢,
利奥.
最终答案:我找到了最好的解决方案for me我在开发过程中尝试了 6 周(最佳实践)。
我最终得到了这个结构:
- monorepo // git MAIN repository
- packages
- client // git 子存储库
- admin // git 子存储库
- 主题 // git 子存储库
- lib // git 子存储库
The client
and admin
使用theme
as yarn workspaces
https://classic.yarnpkg.com/en/docs/workspaces/ https://classic.yarnpkg.com/en/docs/workspaces/
lib
用作 Git npm 包git+ssh://[email protected] /cdn-cgi/l/email-protection:xxxx/xxx/lib.git#v1.0.1
主/子存储库结构使我能够分别管理每个项目的版本控制,同时按版本使用共享“主题”(工作空间)和“lib”核心(npm)。
Tip:为了方便开发,我建议添加lib
as yarn workspace
因为当我们跑步时yarn start
它实时热重载更改。当我们这样做时yarn build
我们使用 lib 作为带有 ssh 链接的 npm 包。
祝你好运!
利奥.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)