Skip to main content Skills Marktplatz Entdecken und erkunden Sie KI-Skills, die von der Community erstellt wurden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Prompt kopierenPrompt-Details anzeigen Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
npx skills add https://github.com/BEKO2210/Firstbrain --skill turborepo-cachingDer Befehl bleibt in einer Zeile. Scrollen Sie horizontal, um ihn vor dem Kopieren vollständig zu prüfen.
Sie bevorzugen eine lokale Kopie? Laden Sie die Dateien herunter, die SkillsMP derzeit vorliegen.
ZIP herunterladen Herunterladen... Mehr aus diesem Repository Verwandte Berufe SOC
Basierend auf der SOC-Berufsklassifikation
name turborepo-caching description Configure Turborepo for efficient monorepo builds with local and remote caching. Use when setting up Turborepo, optimizing build pipelines, or implementing distributed caching. type skill created 2026-02-27T00:00:00.000Z domain software-development category architecture risk critical source community tags ["skill","software-development","architecture","turborepo","caching"]
Turborepo Caching
Production patterns for Turborepo build optimization.
Do not use this skill when
The task is unrelated to turborepo caching
You need a different domain or tool outside this scope
Instructions
Clarify goals, constraints, and required inputs.
Apply relevant best practices and validate outcomes.
Provide actionable steps and verification.
If detailed examples are required, open resources/implementation-playbook.md.
Use this skill when
Setting up new Turborepo projects
Configuring build pipelines
Implementing remote caching
Optimizing CI/CD performance
Migrating from other monorepo tools
Debugging cache misses
Core Concepts
1. Turborepo Architecture
Workspace Root/
├── apps/
│ ├── web/
│ │ └── package.json
│ └── docs/
│ └── package.json
├── packages/
│ ├── ui/
│ │ └── package.json
│ └── config/
│ └── package.json
├── turbo.json
└── package.json
2. Pipeline Concepts
Concept Description dependsOn Tasks that must complete first cache Whether to cache outputs outputs Files to cache inputs Files that affect cache key persistent Long-running tasks (dev servers)
Templates
Template 1: turbo.json Configuration
{
"$schema" : "https://turbo.build/schema.json" ,
"globalDependencies" : [
".env" ,
".env.local"
] ,
"globalEnv" :
[
"NODE_ENV"
,
"VERCEL_URL"
]
,
"pipeline"
:
{
"build"
:
{
"dependsOn"
:
[
"^build"
]
,
"outputs"
:
[
"dist/**"
,
".next/**"
,
"!.next/cache/**"
]
,
"env"
:
[
"API_URL"
,
"NEXT_PUBLIC_*"
]
}
,
"test"
:
{
"dependsOn"
:
[
"build"
]
,
"outputs"
:
[
"coverage/**"
]
,
"inputs"
:
[
"src/**/*.tsx"
,
"src/**/*.ts"
,
"test/**/*.ts"
]
}
,
"lint"
:
{
"outputs"
:
[
]
,
"cache"
:
true
}
,
"typecheck"
:
{
"dependsOn"
:
[
"^build"
]
,
"outputs"
:
[
]
}
,
"dev"
:
{
"cache"
:
false
,
"persistent"
:
true
}
,
"clean"
:
{
"cache"
:
false
}
}
}
Template 2: Package-Specific Pipeline
{
"$schema" : "https://turbo.build/schema.json" ,
"extends" : [ "//" ] ,
"pipeline" : {
"build" : {
"outputs" : [ ".next/**" , "!.next/cache/**" ] ,
"env" : [
"NEXT_PUBLIC_API_URL" ,
"NEXT_PUBLIC_ANALYTICS_ID"
]
} ,
"test" : {
"outputs" : [ "coverage/**" ] ,
"inputs" : [
"src/**" ,
"tests/**" ,
"jest.config.js"
]
}
}
}
Template 3: Remote Caching with Vercel
npx turbo login
npx turbo link
turbo build --remote-only
TURBO_TOKEN=your-token
TURBO_TEAM=your-team
name: CI
on:
push:
branches: [main ]
pull_request:
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build
run: npx turbo build --filter='...[origin/main]'
- name: Test
run: npx turbo test --filter='...[origin/main]'
Template 4: Self-Hosted Remote Cache
import express from 'express' ;
import { createReadStream, createWriteStream } from 'fs' ;
import { mkdir } from 'fs/promises' ;
import { join } from 'path' ;
const app = express ();
const CACHE_DIR = './cache' ;
app.get ('/v8/artifacts/:hash' , async (req, res) => {
const { hash } = req.params ;
const team = req.query .teamId || 'default' ;
const filePath = join (CACHE_DIR , team, hash);
try {
const stream = createReadStream (filePath);
stream.pipe (res);
} catch {
res.status (404 ).send ('Not found' );
}
});
app.put ('/v8/artifacts/:hash' , async (req, res) => {
const { hash } = req.params ;
const team = req.query .teamId || 'default' ;
const dir = join (CACHE_DIR , team);
const filePath = join (dir, hash);
await mkdir (dir, { recursive : true });
const stream = createWriteStream (filePath);
req.pipe (stream);
stream.on ('finish' , () => {
res.json ({ urls : [`${req.protocol} ://${req.get('host' )} /v8/artifacts/${hash} ` ] });
});
});
app.head ('/v8/artifacts/:hash' , async (req, res) => {
const { hash } = req.params ;
const team = req.query .teamId || 'default' ;
const filePath = join (CACHE_DIR , team, hash);
try {
await fs.access (filePath);
res.status (200 ).end ();
} catch {
res.status (404 ).end ();
}
});
app.listen (3000 );
{
"remoteCache" : {
"signature" : false
}
}
turbo build --api="http://localhost:3000" --token="my-token" --team="my-team"
Template 5: Filtering and Scoping
turbo build --filter=@myorg/web
turbo build --filter=@myorg/web...
turbo build --filter=...@myorg/ui
turbo build --filter='...[origin/main]'
turbo build --filter='./apps/*'
turbo build --filter=@myorg/web --filter=@myorg/docs
turbo build --filter='!@myorg/docs'
turbo build --filter='...[HEAD^1]...'
Template 6: Advanced Pipeline Configuration {
"$schema" : "https://turbo.build/schema.json" ,
"pipeline" : {
"build" : {
"dependsOn" : [ "^build" ] ,
"outputs" : [ "dist/**" ] ,
"inputs" : [
"$TURBO_DEFAULT$" ,
"!**/*.md" ,
"!**/*.test.*"
]
} ,
"test" : {
"dependsOn" : [ "^build" ] ,
"outputs" : [ "coverage/**" ] ,
"inputs" : [
"src/**" ,
"tests/**" ,
"*.config.*"
] ,
"env" : [ "CI" , "NODE_ENV" ]
} ,
"test:e2e" : {
"dependsOn" : [ "build" ] ,
"outputs" : [ ] ,
"cache" : false
} ,
"deploy" : {
"dependsOn" : [ "build" , "test" , "lint" ] ,
"outputs" : [ ] ,
"cache" : false
} ,
"db:generate" : {
"cache" : false
} ,
"db:push" : {
"cache" : false ,
"dependsOn" : [ "db:generate" ]
} ,
"@myorg/web#build" : {
"dependsOn" : [ "^build" , "@myorg/db#db:generate" ] ,
"outputs" : [ ".next/**" ] ,
"env" : [ "NEXT_PUBLIC_*" ]
}
}
}
Template 7: Root package.json Setup {
"name" : "my-turborepo" ,
"private" : true ,
"workspaces" : [
"apps/*" ,
"packages/*"
] ,
"scripts" : {
"build" : "turbo build" ,
"dev" : "turbo dev" ,
"lint" : "turbo lint" ,
"test" : "turbo test" ,
"clean" : "turbo clean && rm -rf node_modules" ,
"format" : "prettier --write \"**/*.{ts,tsx,md}\"" ,
"changeset" : "changeset" ,
"version-packages" : "changeset version" ,
"release" : "turbo build --filter=./packages/* && changeset publish"
} ,
"devDependencies" : {
"turbo" : "^1.10.0" ,
"prettier" : "^3.0.0" ,
"@changesets/cli" : "^2.26.0"
} ,
"packageManager" : "npm@10.0.0"
}
Debugging Cache
turbo build --dry-run
turbo build --verbosity=2
turbo build --graph
turbo build --force
turbo build --summarize
TURBO_LOG_VERBOSITY=debug turbo build --filter=@myorg/web
Best Practices
Do's
Define explicit inputs - Avoid cache invalidation
Use workspace protocol - "@myorg/ui": "workspace:*"
Enable remote caching - Share across CI and local
Filter in CI - Build only affected packages
Cache build outputs - Not source files
Don'ts
Don't cache dev servers - Use persistent: true
Don't include secrets in env - Use runtime env vars
Don't ignore dependsOn - Causes race conditions
Don't over-filter - May miss dependencies
Resources
Connections
Domain: [[Software Entwicklung]]
Kategorie: [[Software Architektur]]
Navigation: [[Skills Uebersicht]], [[Home]]