对于yarn workspaces
,我有一个常见的情况(或不太熟悉),并且没有在线找到适合我的指南。
纱线工作区如下:
- monorepo
- packages
- client
- admin
- theme
- lib
client
和admin
中使用UI工具包
项目,这是经典的“ monorepo风格”(lerna),可在2个项目之间共享组件。此文件夹应仅为此项目共享。其他信息:
monorepo
是带有.gitmodules
的根存储库theme
和client
和admin
项目上进行轻松开发。问题:
我们仅在yarn start
项目和client
项目中运行admin
。两个项目都使用相同的theme
和相同的lib
功能。由于lib
与其他项目共享,因此每周更新一次:
tags
还是应该从monorepo工作区中删除lib
并以npm package
的身份使用它(整个要点是,当我们更改lib
个文件,我们不需要一次又一次npm update
。lib
将是npm软件包,如何在运行yarn start
时告诉monorepo使用工作区,并在运行yarn build
时如何使用npm版本?请针对这种情况的最佳做法提供建议。
预先感谢, 狮子座。
答案 0 :(得分:0)
这是我的个人喜好。
- monorepo
- packages
- client
- admin
- core
我认为lib可以移到核心,主题对我来说更像npm包。
答案 1 :(得分:-1)
最终答案: 我找到了最适合我的解决方案 ,并在开发过程中尝试了6周(最佳实践)。
我最终得到了这样的结构:
client
和admin
使用theme
作为yarn workspaces
https://classic.yarnpkg.com/en/docs/workspaces/
lib
与git+ssh://git@gitlab.com:xxxx/xxx/lib.git#v1.0.1
一起用作Git npm软件包
主/子存储库结构使我能够分别管理每个项目的版本控制,并同时使用各个版本的共享“主题”(工作区)和“ lib”核心(npm)。
提示:
为了便于开发,我建议将lib
添加为yarn workspace
,因为当我们运行yarn start
时,它将实时重新加载更改。当我们执行yarn build
时,我们使用带有ssh链接的lib作为npm软件包。
祝你好运! 狮子座。