Turborepo and monorepo architecture have a specialised vocabulary that's essential for discussing large-scale JavaScript projects, CI optimisation, and package sharing strategies.
0 / 5 completed
1 / 5
A developer says: 'We use Turborepo to manage our monorepo.' What is a monorepo?
A monorepo stores multiple packages/apps in one repository: apps/web, apps/api, packages/ui, packages/utils. This enables code sharing, atomic commits across packages, and consistent tooling. Turborepo is a build system that adds task caching and parallelisation on top of a monorepo setup. In discussions: 'we're using a monorepo' signals all related code lives together, not in separate repos.
2 / 5
A developer says: 'Turborepo caches the build output — it won't rebuild unchanged packages.' What does this mean?
Turborepo's task caching hashes all inputs (source files, env vars, dependencies) and stores task outputs (build artifacts, test results). On the next run, if inputs are unchanged, Turborepo restores from cache without re-running the task. This is called a cache hit. With Remote Caching (Vercel), the cache is shared across CI runs and team members, avoiding redundant builds.
3 / 5
A developer mentions the task pipeline in turbo.json. What is a pipeline?
The Turborepo pipeline in turbo.json declares how tasks relate to each other: 'build': { 'dependsOn': ['^build'], 'outputs': ['dist/**'] }. The ^ prefix means 'run the same task in dependencies first.' Turborepo uses this to parallelise tasks correctly and know what to cache. In discussions: 'define it in the pipeline' means add the task to turbo.json with its dependencies and output directories.
4 / 5
A developer says: 'Share the UI package between the web and docs apps.' What is a package in Turborepo context?
In a Turborepo monorepo, a package is a workspace (subdirectory with its own package.json) that can export code for other packages/apps to import. packages/ui might export React components; packages/tsconfig might export shared TypeScript config. Apps import them like npm packages: import { Button } from '@company/ui'. In discussions: 'create a shared package' means extract reusable code into its own workspace.
5 / 5
A developer says: 'Run turbo run build --filter=web to only build the web app and its dependencies.' What does filter do?
Turborepo's --filter flag restricts which packages the command runs in. --filter=web runs build in the web app AND any packages it depends on (Turborepo resolves the dependency graph). This avoids rebuilding unrelated packages. In CI: 'use --filter for affected packages' means only run tasks for changed code and its dependents, speeding up CI significantly.