工程化管理:Monorepo、构建、测试、发布
1. Monorepo 管理策略
来自根 package.json 与 scripts/build:
- Yarn v1 workspace 管理多包
- build 脚本仅对部分 Node 目标包做编译(并非全仓库)
- JS 包采用统一结构约束(
src/、wrapper entry、exports 约束)
意义:降低包间风格漂移、减少发布期不可预期差异。
2. 构建与类型产物链路
scripts/build/README.md + scripts/build/config.js:
- 编译会输出
dist/、Flow defs、可选 TS defs - 通过配置表显式纳入参与构建的包
- 使用统一 babel/ts 目标(Node 侧)
这是“按需编译 + 统一产物格式”的典型工程化策略。
3. 测试体系分层
可从根脚本与 rn-tester 文档观察到:
- JS 层:Jest、TS 类型检查、ESLint、Flow
- Native 层:Android/iOS 测试任务
- 集成层:RNTester(含 unit/integration)
- 发布前验证:release testing 脚本
技术讨论中可以强调“不是单测覆盖,而是多语言多平台测试网”。
4. 发布流水线
scripts/releases/README.md:
set-version统一 bump workspace 与 native 相关版本信息- release commit 触发发布链路
- 主分支特殊版本占位(
1000.0.0)与实际发布版本解耦
优点:主干开发与版本发布节奏分离,降低冲突。
5. 典型工程治理思路(可迁移到业务团队)
- 建立“跨语言产物前置生成”机制(类似 codegen/prebuild)
- 把脚本式约定沉淀到插件(类似 Gradle Plugin / Pods helper)
- 把“本地能跑”提升为“CI 可复制可发布”的标准路径