V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Gaays
V2EX  ›  前端开发

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

  •  
  •   Gaays · 2023-05-30 16:19:41 +08:00 · 1036 次点击
    这是一个创建于 571 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    6 条回复    2023-06-14 17:33:31 +08:00
    mygao666
        1
    mygao666  
       2023-05-30 18:36:40 +08:00
    设置下代理,解决跨域问题
    molvqingtai
        2
    molvqingtai  
       2023-05-30 18:39:01 +08:00
    为什么要写完整 url , 每个 packge 都应该放一个 .env 文件
    Gaays
        3
    Gaays  
    OP
       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
        4
    gengliangcais  
       2023-06-02 16:30:54 +08:00
    各自代理,各自请求,看你项目的情况,当然也可以统一
    chnwillliu
        5
    chnwillliu  
       2023-06-14 17:26:45 +08:00 via Android
    Monorepo 中的包分 app 包和 lib 包,app 包作为 runtime 的入口,保证每个 app 能有相同 schema 的 app config 在运行时可用。任何 app 内的代码和 lib 包也只管放心用 app config, 当然前提是在 app initialize config 之后。app config 本身也可以根据 mode 取到不同的 config , 解决本地开发和生产环境的问题。
    chnwillliu
        6
    chnwillliu  
       2023-06-14 17:33:31 +08:00 via Android
    某个 lib 要发请求就从 app config 里拿 apiBaseUrl ,哪个 app 要用这个 lib 就要保证有正确的 apiBaseUrl 在自己的 appConfig 中。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2727 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:53 · PVG 20:53 · LAX 04:53 · JFK 07:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.