v2 的各位大佬,求问一下前端多项目,有什么好的方案可以共享代码?
就比如说 ng 或者 react 或者 vue 。假设,组内有 2 个前端,一个用 ng 做桌面 web 端,一个做移动端(分为两个项目)。但是因为 service 、utils 、config 配置文件或者 一些 api 封装之类的代码几乎是 100%可以复用的。桌面端跟移动端只是 ui 层面有所不同,其它逻辑是完全一样的。想问下目前有什么方案比较好实现这种复用。
我知道有 npm 这种方案,但是感觉用起来有点麻烦,尤其是代码变动比较频繁的时候。总是不断的修改、发包、重新引入,版本控制。复杂度一下子就起来了。
搜了一下,发现现在大多用的是 monorepo ,无奈没之方面经验。有 lerna ,rush ,nx 这几种方案可以选,不知道选哪个,有哪些坑?
请各位指导一下,谢谢。
![]() |
1
LiHaiWordGe 108 天前 ![]() git submodule 可行?
|
![]() |
2
nicebird 108 天前
不太了解前端,放一个库里不行吗?
|
![]() |
3
maichael 108 天前
之前看过像 https://github.com/teambit/bit 这种的,不知道你适用不适用。
|
![]() |
4
xiangyuecn 108 天前
永不过时:Ctrl+C Ctrl+V ,人肉搬运
|
![]() |
5
seki 108 天前
如果没有什么一定需要跨项目的,可以写到一起
monorepo 可以解决相对路径引用太复杂的问题,也方便组织代码,但不是必须的。 lerna 之类的是便于统一执行命令,没有发布包之类的需求也可以不用,直接裸 yarn/npm workspaces 就行 |
![]() |
6
Torpedo 108 天前
用 monorepo ,然后上 pnpm
|
![]() |
7
zhouyg 108 天前
pnpm workspace 就可以了,体验很好
|
![]() |
8
tq0106 108 天前
通用文件打包成库放 npm 上
|
![]() |
9
WhiteHu 108 天前
monorepo 正解
|
![]() |
10
MinonHeart 108 天前
如果只是复用,不用 npm 发布的话。全放一个仓库就行了,算是半个 monorepo
git submodule 不太行,麻烦 npm packages 改的频繁,觉得也很麻烦 |
![]() |
11
MinonHeart 108 天前
接上文:这种不需要 lerna 来管理,用 npm7 的 workspace 按目录或者 package 分就行了
|
12
WispZhan 108 天前 via Android
分 npm 包,做库用,上 ci
|
![]() |
13
Tonni 108 天前
用过 npm 的方案,把东西丢到一个 repo 里,npm 安装的时候直接从 repo 安装就好了,也可以指定特定的 branch 或者 commit id ,还是挺方便的。
|
![]() |
14
jin5354 108 天前
没有 npm 包发布需求,连 lerna 都不用引。
你就直接放到一个仓库里就行,src 下面放仨文件夹,pc ,mobile 和 common ,共享逻辑写 common 里,pc 和 mobile 随便引。 |
15
dylanxult 107 天前
retool 这个工具是不是挺合适
|
16
m1911star 107 天前
monorepo nx
|
![]() |
17
Mutoo 107 天前 via iPhone
webpack module federation 可以,在项目中实践过。可以把 webpack 打的包共享给不同的项目使用。
|
![]() |
18
DSKcpp 107 天前
pnpm 天下第一
|
![]() |
19
aleen42 107 天前 via Android
感覺 npm 或者 git submodules 都沒 single module 來得直接,現在都很流行一個 repo 包含多個 package
|
![]() |
20
kobezone 107 天前 via Android
gitsubmodules 更好管控权限 个人更推荐 大团队配合 lerna+monorepo 是主流 小的项目可以采用
|
![]() |
21
elone OP 我用了 pnpm workspace 。感觉挺好的
|