Workspaces 与 Monorepo
在单个 deno.json 中组织成员、共享依赖、任务与发布边界
最小结构
{
"workspace": ["./apps/api", "./packages/core"],
"tasks": {
"check": "deno task --recursive check"
}
}
成员可以拥有自己的 deno.json 与任务。工作区让成员共享锁文件和根级配置,同时保留包边界。
repo/
├── deno.json
├── deno.lock
├── apps/api/deno.json
└── packages/core/deno.json
设计原则
- 根任务只做编排,成员任务负责本包验证。
- 内部包通过 workspace 解析,不用发布版本绕一圈。
- 公开包明确
exports、许可证和发布文件。 - 不在根配置里放所有成员都不需要的宽权限。
验证
deno task --recursive check
deno test
从 workspace 根运行 deno test 会发现成员测试;deno task --recursive 用于在成员中执行同名 task。过滤参数与 npm workspace 混用行为会随版本演进,复杂任务图先运行 deno help task 并核对当前官方文档。
官方参考:Workspaces。