Workspaces
Define workspace package paths in aube-workspace.yaml at the repository root. If the project already has pnpm-workspace.yaml, keep it: aube reads and updates that file in place. If both exist, aube-workspace.yaml takes precedence.
Each matched package needs its own package.json with a name. For example:
packages:
- "packages/*"
- "apps/*"Install from the workspace root, then run a script across packages:
aube install
aube -r run buildRecursive builds run in dependency order by default. Use the explicit workspace: protocol when a dependency must resolve to a local package.
Workspace protocol
{
"dependencies": {
"@acme/ui": "workspace:*",
"@acme/config": "workspace:^"
}
}Workspace dependencies are linked to local packages during development and converted to concrete versions for publishing/deploy flows.
Filters
aube -F api run build
aube -F '@acme/*' test
aube -F './apps/web' install
aube -F 'api...' run build
aube -F '...web' run test
aube -F '!legacy' -r run lintSupported selector forms:
- Exact package names.
- Globs such as
@acme/*. - Paths such as
./apps/web. - Dependency graph selectors such as
api...andapi^.... - Dependent graph selectors such as
...weband...^web. - Git-ref selectors such as
[origin/main]. - Exclusions such as
!legacy.
Recursive mode
aube -r run build
aube -r list --depth 0-r runs over every workspace package unless an explicit filter is present.
Catalogs
Catalogs keep shared version ranges in the workspace YAML. Define them in aube-workspace.yaml or the existing pnpm-workspace.yaml:
catalog:
react: ^19.0.0
catalogs:
test:
vitest: ^3.0.0{
"dependencies": {
"react": "catalog:",
"vitest": "catalog:test"
}
}Deploy
aube -F api deploy dist/apideploy copies the selected workspace package's publishable files, rewrites workspace dependencies to concrete versions, and installs dependencies in the target directory.