Turborepo "--filter" Matched No Packages in CI
A turbo run ... --filter=<pattern> matched no packages, so turbo ran nothing. The filter does not resolve - a wrong package name, a bad scope glob, or a [git-range] filter that finds no changes (often because the clone is shallow).
What this error means
turbo prints "No package found with name" or "no tasks to run" and exits successfully having done nothing. CI silently builds/tests zero packages, which can mask real work being skipped.
× No package found with name "@acme/uii" in workspace
# or, with a git filter on a shallow clone:
• Packages in scope:
• Running build in 0 packagesCommon causes
Filter name or scope does not match
A typo in the package name or a scope glob (@acme/*) that matches nothing leaves the filter empty.
Git-range filter finds no changes
A --filter=...[origin/main] filter compares against a base. On a shallow CI clone the base is missing, so turbo sees no changed packages and runs nothing.
How to fix it
Confirm what the filter resolves to
Dry-run the filter to see which packages it selects before committing it to CI.
turbo run build --filter="@acme/*" --dry=json | jq '.packages'Fetch history for git-range filters
Provide full history so [base] filters can diff against a present commit.
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: turbo run build --filter="...[origin/main]"How to prevent it
- Validate filters with
--dryso an empty match is caught, not silently skipped. - Use
fetch-depth: 0for[git-range]filters. - Reference packages by their exact
namein filters.