Core Concepts

--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.

Last updated on May 13, 2022