--scope
is deprecated in 1.2.x
. Please use --filter
instead.
Scoped Tasks
Scoping task execution can speed up the process especially if there are distinct clusters of packages that are not related to each other within your repository. Turborepo has a scope
option that allows the task running to proceed up to the packages found that matches the scope
argument. It's useful to think of scope
as an "entry point" into your monorepo's package/task graph. This is a string matcher based on the name of the packages (not the package path).
It is important to note that dependents and dependencies refer to the package and task.
Scoped tasks with all its dependents
By default, it is helpful to be able to run tasks on all affected packages within a scope. Packages that changed will affect downstream consumers. In this case, pass along the scope
to build all the dependencies as well.
You can use wildcard character: *
. This is particularly helpful when
packages are named by group or by scope.
turbo run build --scope=*build-tools*
Scoped tasks with no dependents & their dependencies
Sometimes we want to run the tasks needed to satisfy the build
script of all the packages that has the build-tools
string in their names. Think of this as running tasks up and including the package matched in the scope. Add a --no-deps
flag to run up to a package task.
turbo run build --scope=*build-tools* --no-deps --include-dependencies
Turborepo's Scoped Tasks API design and docs were/are inspired Microsoft's Lage project --scope
flag which was inspired by Lerna's.
We are working toward a new, more expressive task filtering/scoping syntax. Read the RFC here.