【直播切片工作台】第3章:Monorepo 工程结构

简介: 本章详解Monorepo工程结构:pnpm workspace统一管理React前端,Go后端自治(go.mod),根package.json串联命令。目录严格分层——`cmd`/`internal`/`docker`/`docs`边界清晰,前后端路径与职责对仗,支持全栈并行开发。(239字)

第3章:Monorepo 工程结构

本章从仓库物理布局出发,讲清 pnpm workspace 如何同时管理 Go 后端与 React 前端、根 package.json 承担什么职责、以及 cmd / internal / docker / docs 的边界约定。理解目录约定后,任何新成员都能凭文件路径推断职责归属。

流程

仓库根目录只有六个条目:backend/、frontend/、docs/、LICENSE、根 package.json、pnpm-workspace.yaml。pnpm 把 frontend(还有未来可能的其他 JS 包)纳入统一 workspace 管理;Go 后端自带 go.mod,与 pnpm 互不干涉——两者通过根 package.json 的 scripts 串成一条命令链(例如一键安装、一键构建)。

后端内部遵循 Go 社区标准布局:cmd/ 放可执行入口(webserver 主服务、envinit 初始化工具、test 试验场),internal/ 放全部私有代码(编译器强制禁止外部导入,天然模块边界),docker/ 放镜像与编排,migrations/ 放 SQL 参考脚本,backend/docs/ 放 swaggo 生成的 Swagger 产物。前端的 src/ 按 pages / services / utils / components / layouts / routes / context / hooks 分层,与后端的 handler / service 命名形成心智对仗。

输入是「一个人维护全栈」的现实,输出是一套前端一条 pnpm 命令、后端一条 go 命令即可各自开发测试的并行工作流:

flowchart TD
    R[仓库根] --> B[backend: go.mod 自治]
    R --> F[frontend: pnpm workspace 包]
    R --> P[根 package.json: 串联脚本]
    B --> C1[cmd/webserver · cmd/envinit]
    B --> C2[internal/ 12 个领域包]
    F --> C3[src/pages 业务页面]
    F --> C4[src/services API 层]

实现

几个值得注意的工程细节:

  • .github/workflows/ci.yml 在根目录而非 backend,说明 CI 视角是整个 monorepo(第 50 章)。
  • .husky/pre-commit + lint-staged 提交前只对暂存文件跑 lint/format,前端代码质量门禁前移。
  • backend/internal/config/config.yaml 被 gitignore,仓库提供 config.yaml.example:本地密钥永不入库,示例文件与新配置项同步维护是仓库纪律(README 明确要求)。
  • .cursor/rules/toast-notify.mdc:为 AI 辅助编码准备的规则文件,约束前端提示组件的使用方式——工具链配置也是工程的一部分。
  • cmd/test/main.go 充当临时实验入口,避免污染正式命令;正式入口保持极薄(webserver 的 main 只有装配逻辑,见第 5 章)。

前端的路径别名 ~/ 指向 src/(vite.config.mts + tsconfig.json 双处配置),所以 import 全是 ~/services/http 风格,杜绝 ../../ 相对路径漂移。

📌 设计决策

  • pnpm workspace 而非把前端塞进根 package.json:版本与依赖隔离清晰,未来可加 e2e 包、shared-types 包。
  • backend 与 frontend 完全不共享构建产物:前后端仅通过 OpenAPI 契约(Swagger 页面)耦合,是典型的契约优先协作。
  • internal/ 而非 pkg/(顶层):所有代码都是应用私有,没有对外开源 SDK 的诉求。

代码示例

workspace 定义极简,只圈定 JS 侧:

# pnpm-workspace.yaml
packages:
  - frontend

根 package.json 把两侧常用动作收敛为脚本入口(节选示意):

{
   
  "name": "live-mixer",
  "private": true,
  "scripts": {
   
    "dev": "pnpm --filter base-ui dev",
    "build": "pnpm --filter base-ui build",
    "test": "pnpm --filter base-ui test"
  },
  "devDependencies": {
   
    "husky": "^9.0.0",
    "lint-staged": "^15.5.1"
  }
}

小结

  • 仓库 = Go 自治模块 + pnpm workspace 前端 + 根级 CI/Husky 门禁。
  • cmd/ 薄入口、internal/ 强边界、配置示例文件同步是三条硬纪律。
  • 前后端仅通过 OpenAPI 契约协作,目录结构对仗便于全栈切换。

思考题

  1. 若要抽出前后端共享的 TypeScript 类型(按 Swagger 生成),workspace 结构应如何扩展?
  2. cmd/test 这种试验入口长期存在会有什么风险?更好的替代是什么?

项目信息

  • GitHub仓库:github.com/Chyona/live-mixer
  • 项目案例:gogoshine.com
相关文章
|
2月前
|
人工智能 编解码 数据可视化
AI 漫剧本地部署实战|AI 音色克隆集成,漫剧配音素材与工程落地
本文详解AI漫剧本地化量产方案,聚焦语音配音短板,提供1000+克隆必备音色素材合集(含青年/少年/中老年/情绪向等分类),配套预训练音色调用与AI声音克隆双模式Python工程代码,支持ComfyUI集成、显存优化及版权合规指南,实现端到端离线漫剧全自动生产。
|
2月前
|
缓存 人工智能 自然语言处理
阿里云qwen3.7-max模型详解:模型能力、价格、上下文限制及使用注意事项参考
本文介绍阿里云通义千问系列面向智能体时代的旗舰模型Qwen3.7-Max,系统梳理其作为综合能力最强的Max模型的核心特性与适用场景。该模型2026年5月推出基础文本版本,同年6月增强版引入原生图像与视频输入多模态能力,专为复杂智能体任务设计,在编程、办公自动化及长周期自主执行等高阶场景表现卓越。模型在全球五大区域同步部署,功能存在差异化(如批量推理仅限北京区域),支持百万级超长上下文与结构化输出等高级功能,同时提供清晰的梯度定价策略。
|
10月前
|
JSON API 数据安全/隐私保护
【剪映小助手】批量向现有草稿中添加音频素材
批量向现有草稿中添加音频素材。该接口支持添加多个音频文件到剪映草稿,为视频创建背景音乐、音效、旁白等音频内容。音频将被添加到独立的音频轨道中,不会影响视频内容。
|
Ruby
|
4月前
|
前端开发 中间件 API
【开源剪映小助手】技术栈概览
CapCut Mate(剪映小助手)是一款视频草稿自动化处理工具,基于Python(FastAPI+uiautomation)后端与Electron+React桌面客户端,实现草稿下载、素材管理、智能生成及一键导出。支持容器化部署,架构清晰、扩展性强。(239字)
|
28天前
|
机器学习/深度学习 人工智能 自然语言处理
2026测试Skill大爆发:从“会写脚本”到“会设计智能体”
2026年测试行业正经历结构性变革:手工测试需求降47%,全栈测开增340%。“熟悉MCP协议”“具备Skill封装与工程化能力”已成硬性门槛,而非加分项。测试核心正从“写脚本”跃迁为“设计智能体”——验证对象由功能转向AI决策能力,底层资产从用例库升级为可复用Skill库。
|
2月前
|
人工智能 数据挖掘 测试技术
每天都在“点点点”,功能测试的下一步到底在哪?
这是一篇面向功能测试工程师的深度职业指南:剖析“忙而无积累”的困境,指出焦虑根源并非工作量,而是缺乏可沉淀的技术能力与质量思维。文章以真实学员案例切入,倡导从高频重复场景(如登录支付链路)切入自动化,强调“先解决问题再选工具”,并提出用线上数据驱动测试、提升质量工程能力等进阶路径,助力测试人突破职业瓶颈。
|
2月前
|
人工智能 缓存 API
Codex接入DeepSeek‑V4‑Flash实操指南:两套方案补齐识图能力完整保姆级教程
在AI编程Agent工具生态之中,Codex凭借强大的本地工程读写、代码修改、终端命令执行能力,成为开发者做项目调试、代码重构、问题定位的高频客户端。DeepSeek‑V4‑Flash作为一款高性价比文本大模型,拥有百万级超大上下文窗口,在Agent任务规划、代码生成、复杂逻辑推演场景表现突出,API调用成本低廉,非常适合作为Codex底层推理基座。但该模型属于纯文本推理模型,原生并不支持图像输入,当开发者把报错截图、UI界面截图、架构示意图、数据图表粘贴进会话,模型会直接提示无法解析图片内容,大量开发场景直接被阻断。
365 3
|
2月前
|
SQL JavaScript 前端开发
Hawa Code Code mode 支持上万级别 MCP 工具数量调用
Code Mode 是 Hawa Code 内置的 JavaScript 编程接口,支持调用任意已配置 MCP 工具(如 Supabase、GitHub),可搜索发现、组合编排、保存复用;按需加载不占上下文,显著降低 Token 消耗,提升复杂任务执行效率。(239字)
105 3
|
2月前
|
人工智能 自然语言处理 API
LangChain+LangGraph架构拆解:基于复杂AI任务编排与状态管理的大模型应用开发21.4
本文深度解析LangChain与LangGraph两大主流大模型开发框架:LangChain以链式组件封装实现快速入门与轻量应用;LangGraph则通过有向状态图支持分支、循环、多智能体等复杂编排。二者互补协同,构成从Demo到生产级AI应用的完整技术栈。
207 2

热门文章

最新文章