请教一下各位用 monorepo 管理多个项目的公共方法问题

2023-05-30 16:19:41 +08:00
 Gaays

现在前端这边用 monorepo 管理了多个项目,把要把公有的 ui 组件、api 、方法都抽出来。 假设文件树是这样的: -monorepo file -package -app1 -app2 -globalFuncion

我有个疑问,假设抽出一个单独的 package 包,比如有个全局方法包含网络请求的,app1 和 app2 都会用到,那我将这个方法包含网络请求都放到 globalFunction 中吗?网络请求直接写完整的后台接口 url 的话,在本地会报跨域问题,应该如何处理本地调试时的 app1 调 globalFunciton 产生的跨域问题呢?

如果我的理解或表达不对,烦请大家指正,谢谢

1013 次点击
所在节点    前端开发
6 条回复
mygao666
2023-05-30 18:36:40 +08:00
设置下代理,解决跨域问题
molvqingtai
2023-05-30 18:39:01 +08:00
为什么要写完整 url , 每个 packge 都应该放一个 .env 文件
Gaays
2023-05-30 21:13:43 +08:00
@molvqingtai 你的意思是每个 package 都要有 dev server ,比如 webpack 或者 vite ?那另一个 package ( app1 )引用的时候好像也不会起 globalFunction 的 dev server 吧?
@mygao666 设置代理,指的是给 app1 设置 dev server 的代理还是给 globalFunction 设置代理呢? globalFunction 里面只是 js 文件,咋设置代理呀?

我不是很懂,我的理解是这样的,大佬们能否讲一下如何在 monorepo 中处理带网络请求的全局方法,dev 环境会有跨域问题
gengliangcais
2023-06-02 16:30:54 +08:00
各自代理,各自请求,看你项目的情况,当然也可以统一
chnwillliu
2023-06-14 17:26:45 +08:00
Monorepo 中的包分 app 包和 lib 包,app 包作为 runtime 的入口,保证每个 app 能有相同 schema 的 app config 在运行时可用。任何 app 内的代码和 lib 包也只管放心用 app config, 当然前提是在 app initialize config 之后。app config 本身也可以根据 mode 取到不同的 config , 解决本地开发和生产环境的问题。
chnwillliu
2023-06-14 17:33:31 +08:00
某个 lib 要发请求就从 app config 里拿 apiBaseUrl ,哪个 app 要用这个 lib 就要保证有正确的 apiBaseUrl 在自己的 appConfig 中。

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

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

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

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

© 2021 V2EX