Replies: 1 comment 1 reply
-
|
啊……终于要抽象重构了,现在稍微做点大的到处找,加一个要改10个地方 PS:electron本地打包真阴间,每次要删79个文件 |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
摘要
本 RFC 提出将 LobeChat 项目从当前的单体仓库架构重构为完整的 Monorepo 架构,以支持多平台应用开发(Web、Desktop、Mobile App、Chrome Plugin 等)并提高代码复用性和维护效率。
背景与动机
当前状况
LobeChat 项目目前已经初步实现了部分模块的 packages 化,包括:
@lobechat/file-loaders- 文件加载器@lobechat/web-crawler- 网页爬虫@lobechat/electron-client-ipc/@lobechat/electron-server-ipc- Electron IPC 通信驱动因素
目标架构设计
整体结构
包设计原则
详细包规划
2.
@lobechat/database4.
@lobechat/utils平台特定包
应用层设计 (apps/)
2.
apps/desktop3.
apps/mobile(计划)4.
apps/extension(计划)迁移计划
核心思想:渐进式迁移,每一步迁移不造成破坏性变更。
Step1: 目录结构调整
types、const 、database 等目录结构从 src 迁移至 packages 独立包。由于不希望变更在 web 的引入逻辑,通过在 alias 完成路径关联:
tsconfig.json
{ "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { "paths": { "@/const/*": ["./packages/const/src/*"], "@/types/*": ["./packages/types/src/*", "./src/types/*"], "@/*": ["./src/*"] } }vitest.config.ts
这种做法可以实现最小 git diff 情况下变更。
Step2: 包导入替换
各个包的引用逐一替换成
@lobechat/xxx,并且在这个过程中逐步梳理现有引用实现的合理性,如存在必要重构的部分则进行重构。Step3: 删除 alias
等所有引入迁移完毕后,最后删除 tsconfig 和 vitest 的 alias 引用关系,至此完成迁移实现。
进展
@lobechat/promptspacakge #8810@lobechat/prompts#88752025.08.22 更新:
一期 6 个基础模块完成迁移,同时重构 test workflow 实现子包并行测试,顺利将耗时从 13 分钟减少到 8 分钟
Beta Was this translation helpful? Give feedback.
All reactions