前端如果跨项目共享代码?

2022-03-11 09:57:38 +08:00
 elone

v2 的各位大佬,求问一下前端多项目,有什么好的方案可以共享代码?

就比如说 ng 或者 react 或者 vue 。假设,组内有 2 个前端,一个用 ng 做桌面 web 端,一个做移动端(分为两个项目)。但是因为 service 、utils 、config 配置文件或者 一些 api 封装之类的代码几乎是 100%可以复用的。桌面端跟移动端只是 ui 层面有所不同,其它逻辑是完全一样的。想问下目前有什么方案比较好实现这种复用。

我知道有 npm 这种方案,但是感觉用起来有点麻烦,尤其是代码变动比较频繁的时候。总是不断的修改、发包、重新引入,版本控制。复杂度一下子就起来了。

搜了一下,发现现在大多用的是 monorepo ,无奈没之方面经验。有 lerna ,rush ,nx 这几种方案可以选,不知道选哪个,有哪些坑?

请各位指导一下,谢谢。

3186 次点击
所在节点    前端开发
21 条回复
LiHaiWordGe
2022-03-11 10:00:28 +08:00
git submodule 可行?
nicebird
2022-03-11 10:22:47 +08:00
不太了解前端,放一个库里不行吗?
maichael
2022-03-11 10:27:52 +08:00
之前看过像 https://github.com/teambit/bit 这种的,不知道你适用不适用。
xiangyuecn
2022-03-11 10:31:43 +08:00
永不过时:Ctrl+C Ctrl+V ,人肉搬运
seki
2022-03-11 10:33:38 +08:00
如果没有什么一定需要跨项目的,可以写到一起

monorepo 可以解决相对路径引用太复杂的问题,也方便组织代码,但不是必须的。

lerna 之类的是便于统一执行命令,没有发布包之类的需求也可以不用,直接裸 yarn/npm workspaces 就行
Torpedo
2022-03-11 10:34:03 +08:00
用 monorepo ,然后上 pnpm
zhouyg
2022-03-11 10:56:43 +08:00
pnpm workspace 就可以了,体验很好
tq0106
2022-03-11 10:58:32 +08:00
通用文件打包成库放 npm 上
WhiteHu
2022-03-11 10:59:44 +08:00
monorepo 正解
MinonHeart
2022-03-11 12:18:40 +08:00
如果只是复用,不用 npm 发布的话。全放一个仓库就行了,算是半个 monorepo
git submodule 不太行,麻烦
npm packages 改的频繁,觉得也很麻烦
MinonHeart
2022-03-11 12:19:58 +08:00
接上文:这种不需要 lerna 来管理,用 npm7 的 workspace 按目录或者 package 分就行了
WispZhan
2022-03-11 13:05:04 +08:00
分 npm 包,做库用,上 ci
Tonni
2022-03-11 13:38:40 +08:00
用过 npm 的方案,把东西丢到一个 repo 里,npm 安装的时候直接从 repo 安装就好了,也可以指定特定的 branch 或者 commit id ,还是挺方便的。
jin5354
2022-03-11 14:08:00 +08:00
没有 npm 包发布需求,连 lerna 都不用引。
你就直接放到一个仓库里就行,src 下面放仨文件夹,pc ,mobile 和 common ,共享逻辑写 common 里,pc 和 mobile 随便引。
dylanxult
2022-03-11 17:15:36 +08:00
retool 这个工具是不是挺合适
m1911star
2022-03-11 17:17:38 +08:00
monorepo nx
Mutoo
2022-03-11 17:20:01 +08:00
webpack module federation 可以,在项目中实践过。可以把 webpack 打的包共享给不同的项目使用。
DSKcpp
2022-03-11 19:34:22 +08:00
pnpm 天下第一
aleen42
2022-03-11 19:51:07 +08:00
感覺 npm 或者 git submodules 都沒 single module 來得直接,現在都很流行一個 repo 包含多個 package
kobezone
2022-03-12 13:22:22 +08:00
gitsubmodules 更好管控权限 个人更推荐 大团队配合 lerna+monorepo 是主流 小的项目可以采用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/839588

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX