# Workspaces 与 Monorepo

## 最小结构

```json title="deno.json"
{
  "workspace": ["./apps/api", "./packages/core"],
  "tasks": {
    "check": "deno task --recursive check"
  }
}
```

成员可以拥有自己的 `deno.json` 与任务。工作区让成员共享锁文件和根级配置，同时保留包边界。

```text
repo/
├── deno.json
├── deno.lock
├── apps/api/deno.json
└── packages/core/deno.json
```

## 设计原则

- 根任务只做编排，成员任务负责本包验证。
- 内部包通过 workspace 解析，不用发布版本绕一圈。
- 公开包明确 `exports`、许可证和发布文件。
- 不在根配置里放所有成员都不需要的宽权限。

## 验证

```bash
deno task --recursive check
deno test
```

从 workspace 根运行 `deno test` 会发现成员测试；`deno task --recursive` 用于在成员中执行同名 task。过滤参数与 npm workspace 混用行为会随版本演进，复杂任务图先运行 `deno help task` 并核对当前官方文档。

官方参考：[Workspaces](https://docs.deno.com/runtime/fundamentals/workspaces/)。
