Skip to content

Monorepo 协作

核心配置文件

文件作用
pnpm-workspace.yaml声明 workspace 包路径
turbo.json构建依赖图:build 时先执行依赖包的 ^build
package.json编排脚本,不含业务代码
.npmrc镜像、Electron hoisted、postinstall 策略

workspace 依赖

子包通过 workspace:^ 互相引用:

json
"@xichen-full-stack/types": "workspace:^"

pnpm 会链接到 packages/shared/types,改源码后 consumer 立即感知(TS 包需 build 出 dist)。

Turbo pipeline

json
{
  "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] },
  "dev": { "cache": false, "persistent": true }
}

执行 pnpm build 时,会先 build 所有被依赖的 shared 包,再 build web/desktop 等。

包发现范围

yaml
packages:
  - "packages/*"
  - "packages/shared/*"

包含:web、desktop、mobile、server-java、server-python、shared 下所有子包。

Java / Python 与 Turbo

后端使用 Maven / pip,通常 纳入 Turbo build pipeline,独立启动:

bash
pnpm --filter @xichen-full-stack/server-java dev

Electron 特殊配置

.npmrc 中:

  • node-linker=hoisted — electron-builder 在 monorepo 下需要扁平 node_modules
  • ELECTRON_MIRROR — 国内下载 Electron 二进制
  • allowBuilds.electron: true — 允许 electron postinstall

相关文档

Xichen Full Stack 内部文档