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