[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-jetbrains-turborepo":3,"mdc-4v3hes-key":35,"related-repo-jetbrains-turborepo":10318,"related-org-jetbrains-turborepo":10439},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"turborepo","configure Turborepo monorepo build systems","Turborepo monorepo build system guidance. Triggers on: turbo.json, task pipelines,\ndependsOn, caching, remote cache, the \"turbo\" CLI, --filter, --affected, CI optimization, environment\nvariables, internal packages, monorepo structure\u002Fbest practices, and boundaries.\n\nUse when user: configures tasks\u002Fworkflows\u002Fpipelines, creates packages, sets up\nmonorepo, shares code between apps, runs changed\u002Faffected packages, debugs cache,\nor has apps\u002Fpackages directories.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"jetbrains","JetBrains","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fjetbrains.png",[12,16,19,21],{"name":13,"slug":14,"type":15},"Performance","performance","tag",{"name":17,"slug":18,"type":15},"Build","build",{"name":20,"slug":4,"type":15},"Turborepo",{"name":22,"slug":23,"type":15},"CI\u002FCD","ci-cd",252,"https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fskills","2026-07-13T06:39:18.552976",null,17,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"Curated agent skills collection verified by JetBrains","https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fskills\u002Ftree\u002FHEAD\u002Fturborepo","---\nname: turborepo\ndescription: |\n  Turborepo monorepo build system guidance. Triggers on: turbo.json, task pipelines,\n  dependsOn, caching, remote cache, the \"turbo\" CLI, --filter, --affected, CI optimization, environment\n  variables, internal packages, monorepo structure\u002Fbest practices, and boundaries.\n\n  Use when user: configures tasks\u002Fworkflows\u002Fpipelines, creates packages, sets up\n  monorepo, shares code between apps, runs changed\u002Faffected packages, debugs cache,\n  or has apps\u002Fpackages directories.\nmetadata:\n  short-description: \"Structure and optimize Turborepo monorepos\"\n  author: Anthony Fu\n  version: 2.8.18-canary.7\n  source: https:\u002F\u002Fgithub.com\u002Fantfu\u002Fskills\u002Ftree\u002Fmain\u002Fskills\u002Fturborepo\n---\n\n# Turborepo Skill\n\nBuild system for JavaScript\u002FTypeScript monorepos. Turborepo caches task outputs and runs tasks in parallel based on dependency graph.\n\n## IMPORTANT: Package Tasks, Not Root Tasks\n\n**DO NOT create Root Tasks. ALWAYS create package tasks.**\n\nWhen creating tasks\u002Fscripts\u002Fpipelines, you MUST:\n\n1. Add the script to each relevant package's `package.json`\n2. Register the task in root `turbo.json`\n3. Root `package.json` only delegates via `turbo run \u003Ctask>`\n\n**DO NOT** put task logic in root `package.json`. This defeats Turborepo's parallelization.\n\n```json\n\u002F\u002F DO THIS: Scripts in each package\n\u002F\u002F apps\u002Fweb\u002Fpackage.json\n{ \"scripts\": { \"build\": \"next build\", \"lint\": \"eslint .\", \"test\": \"vitest\" } }\n\n\u002F\u002F apps\u002Fapi\u002Fpackage.json\n{ \"scripts\": { \"build\": \"tsc\", \"lint\": \"eslint .\", \"test\": \"vitest\" } }\n\n\u002F\u002F packages\u002Fui\u002Fpackage.json\n{ \"scripts\": { \"build\": \"tsc\", \"lint\": \"eslint .\", \"test\": \"vitest\" } }\n```\n\n```json\n\u002F\u002F turbo.json - register tasks\n{\n  \"tasks\": {\n    \"build\": { \"dependsOn\": [\"^build\"], \"outputs\": [\"dist\u002F**\"] },\n    \"lint\": {},\n    \"test\": { \"dependsOn\": [\"build\"] }\n  }\n}\n```\n\n```json\n\u002F\u002F Root package.json - ONLY delegates, no task logic\n{\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"lint\": \"turbo run lint\",\n    \"test\": \"turbo run test\"\n  }\n}\n```\n\n```json\n\u002F\u002F DO NOT DO THIS - defeats parallelization\n\u002F\u002F Root package.json\n{\n  \"scripts\": {\n    \"build\": \"cd apps\u002Fweb && next build && cd ..\u002Fapi && tsc\",\n    \"lint\": \"eslint apps\u002F packages\u002F\",\n    \"test\": \"vitest\"\n  }\n}\n```\n\nRoot Tasks (`\u002F\u002F#taskname`) are ONLY for tasks that truly cannot exist in packages (rare).\n\n## Secondary Rule: `turbo run` vs `turbo`\n\n**Always use `turbo run` when the command is written into code:**\n\n```json\n\u002F\u002F package.json - ALWAYS \"turbo run\"\n{\n  \"scripts\": {\n    \"build\": \"turbo run build\"\n  }\n}\n```\n\n```yaml\n# CI workflows - ALWAYS \"turbo run\"\n- run: turbo run build --affected\n```\n\n**The shorthand `turbo \u003Ctasks>` is ONLY for one-off terminal commands** typed directly by humans or agents. Never write `turbo build` into package.json, CI, or scripts.\n\n## Quick Decision Trees\n\n### \"I need to configure a task\"\n\n```\nConfigure a task?\n├─ Define task dependencies → references\u002Fconfiguration\u002Ftasks.md\n├─ Lint\u002Fcheck-types (parallel + caching) → Use Transit Nodes pattern (see below)\n├─ Specify build outputs → references\u002Fconfiguration\u002Ftasks.md#outputs\n├─ Handle environment variables → references\u002Fenvironment\u002FRULE.md\n├─ Set up dev\u002Fwatch tasks → references\u002Fconfiguration\u002Ftasks.md#persistent\n├─ Package-specific config → references\u002Fconfiguration\u002FRULE.md#package-configurations\n└─ Global settings (cacheDir, daemon) → references\u002Fconfiguration\u002Fglobal-options.md\n```\n\n### \"My cache isn't working\"\n\n```\nCache problems?\n├─ Tasks run but outputs not restored → Missing `outputs` key\n├─ Cache misses unexpectedly → references\u002Fcaching\u002Fgotchas.md\n├─ Need to debug hash inputs → Use --summarize or --dry\n├─ Want to skip cache entirely → Use --force or cache: false\n├─ Remote cache not working → references\u002Fcaching\u002Fremote-cache.md\n└─ Environment causing misses → references\u002Fenvironment\u002Fgotchas.md\n```\n\n### \"I want to run only changed packages\"\n\n```\nRun only what changed?\n├─ Changed packages + dependents (RECOMMENDED) → turbo run build --affected\n├─ Custom base branch → --affected --affected-base=origin\u002Fdevelop\n├─ Manual git comparison → --filter=...[origin\u002Fmain]\n└─ See all filter options → references\u002Ffiltering\u002FRULE.md\n```\n\n**`--affected` is the primary way to run only changed packages.** It automatically compares against the default branch and includes dependents.\n\n### \"I want to filter packages\"\n\n```\nFilter packages?\n├─ Only changed packages → --affected (see above)\n├─ By package name → --filter=web\n├─ By directory → --filter=.\u002Fapps\u002F*\n├─ Package + dependencies → --filter=web...\n├─ Package + dependents → --filter=...web\n└─ Complex combinations → references\u002Ffiltering\u002Fpatterns.md\n```\n\n### \"Environment variables aren't working\"\n\n```\nEnvironment issues?\n├─ Vars not available at runtime → Strict mode filtering (default)\n├─ Cache hits with wrong env → Var not in `env` key\n├─ .env changes not causing rebuilds → .env not in `inputs`\n├─ CI variables missing → references\u002Fenvironment\u002Fgotchas.md\n└─ Framework vars (NEXT_PUBLIC_*) → Auto-included via inference\n```\n\n### \"I need to set up CI\"\n\n```\nCI setup?\n├─ GitHub Actions → references\u002Fci\u002Fgithub-actions.md\n├─ Vercel deployment → references\u002Fci\u002Fvercel.md\n├─ Remote cache in CI → references\u002Fcaching\u002Fremote-cache.md\n├─ Only build changed packages → --affected flag\n├─ Skip unnecessary builds → turbo-ignore (references\u002Fcli\u002Fcommands.md)\n└─ Skip container setup when no changes → turbo-ignore\n```\n\n### \"I want to watch for changes during development\"\n\n```\nWatch mode?\n├─ Re-run tasks on change → turbo watch (references\u002Fwatch\u002FRULE.md)\n├─ Dev servers with dependencies → Use `with` key (references\u002Fconfiguration\u002Ftasks.md#with)\n├─ Restart dev server on dep change → Use `interruptible: true`\n└─ Persistent dev tasks → Use `persistent: true`\n```\n\n### \"I need to create\u002Fstructure a package\"\n\n```\nPackage creation\u002Fstructure?\n├─ Create an internal package → references\u002Fbest-practices\u002Fpackages.md\n├─ Repository structure → references\u002Fbest-practices\u002Fstructure.md\n├─ Dependency management → references\u002Fbest-practices\u002Fdependencies.md\n├─ Best practices overview → references\u002Fbest-practices\u002FRULE.md\n├─ JIT vs Compiled packages → references\u002Fbest-practices\u002Fpackages.md#compilation-strategies\n└─ Sharing code between apps → references\u002Fbest-practices\u002FRULE.md#package-types\n```\n\n### \"How should I structure my monorepo?\"\n\n```\nMonorepo structure?\n├─ Standard layout (apps\u002F, packages\u002F) → references\u002Fbest-practices\u002FRULE.md\n├─ Package types (apps vs libraries) → references\u002Fbest-practices\u002FRULE.md#package-types\n├─ Creating internal packages → references\u002Fbest-practices\u002Fpackages.md\n├─ TypeScript configuration → references\u002Fbest-practices\u002Fstructure.md#typescript-configuration\n├─ ESLint configuration → references\u002Fbest-practices\u002Fstructure.md#eslint-configuration\n├─ Dependency management → references\u002Fbest-practices\u002Fdependencies.md\n└─ Enforce package boundaries → references\u002Fboundaries\u002FRULE.md\n```\n\n### \"I want to enforce architectural boundaries\"\n\n```\nEnforce boundaries?\n├─ Check for violations → turbo boundaries\n├─ Tag packages → references\u002Fboundaries\u002FRULE.md#tags\n├─ Restrict which packages can import others → references\u002Fboundaries\u002FRULE.md#rule-types\n└─ Prevent cross-package file imports → references\u002Fboundaries\u002FRULE.md\n```\n\n## Critical Anti-Patterns\n\n### Using `turbo` Shorthand in Code\n\n**`turbo run` is recommended in package.json scripts and CI pipelines.** The shorthand `turbo \u003Ctask>` is intended for interactive terminal use.\n\n```json\n\u002F\u002F WRONG - using shorthand in package.json\n{\n  \"scripts\": {\n    \"build\": \"turbo build\",\n    \"dev\": \"turbo dev\"\n  }\n}\n\n\u002F\u002F CORRECT\n{\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"dev\": \"turbo run dev\"\n  }\n}\n```\n\n```yaml\n# WRONG - using shorthand in CI\n- run: turbo build --affected\n\n# CORRECT\n- run: turbo run build --affected\n```\n\n### Root Scripts Bypassing Turbo\n\nRoot `package.json` scripts MUST delegate to `turbo run`, not run tasks directly.\n\n```json\n\u002F\u002F WRONG - bypasses turbo entirely\n{\n  \"scripts\": {\n    \"build\": \"bun build\",\n    \"dev\": \"bun dev\"\n  }\n}\n\n\u002F\u002F CORRECT - delegates to turbo\n{\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"dev\": \"turbo run dev\"\n  }\n}\n```\n\n### Using `&&` to Chain Turbo Tasks\n\nDon't chain turbo tasks with `&&`. Let turbo orchestrate.\n\n```json\n\u002F\u002F WRONG - turbo task not using turbo run\n{\n  \"scripts\": {\n    \"changeset:publish\": \"bun build && changeset publish\"\n  }\n}\n\n\u002F\u002F CORRECT\n{\n  \"scripts\": {\n    \"changeset:publish\": \"turbo run build && changeset publish\"\n  }\n}\n```\n\n### `prebuild` Scripts That Manually Build Dependencies\n\nScripts like `prebuild` that manually build other packages bypass Turborepo's dependency graph.\n\n```json\n\u002F\u002F WRONG - manually building dependencies\n{\n  \"scripts\": {\n    \"prebuild\": \"cd ..\u002F..\u002Fpackages\u002Ftypes && bun run build && cd ..\u002Futils && bun run build\",\n    \"build\": \"next build\"\n  }\n}\n```\n\n**However, the fix depends on whether workspace dependencies are declared:**\n\n1. **If dependencies ARE declared** (e.g., `\"@repo\u002Ftypes\": \"workspace:*\"` in package.json), remove the `prebuild` script. Turbo's `dependsOn: [\"^build\"]` handles this automatically.\n\n2. **If dependencies are NOT declared**, the `prebuild` exists because `^build` won't trigger without a dependency relationship. The fix is to:\n   - Add the dependency to package.json: `\"@repo\u002Ftypes\": \"workspace:*\"`\n   - Then remove the `prebuild` script\n\n```json\n\u002F\u002F CORRECT - declare dependency, let turbo handle build order\n\u002F\u002F package.json\n{\n  \"dependencies\": {\n    \"@repo\u002Ftypes\": \"workspace:*\",\n    \"@repo\u002Futils\": \"workspace:*\"\n  },\n  \"scripts\": {\n    \"build\": \"next build\"\n  }\n}\n\n\u002F\u002F turbo.json\n{\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"]\n    }\n  }\n}\n```\n\n**Key insight:** `^build` only runs build in packages listed as dependencies. No dependency declaration = no automatic build ordering.\n\n### Overly Broad `globalDependencies`\n\n`globalDependencies` affects ALL tasks in ALL packages. Be specific.\n\n```json\n\u002F\u002F WRONG - heavy hammer, affects all hashes\n{\n  \"globalDependencies\": [\"**\u002F.env.*local\"]\n}\n\n\u002F\u002F BETTER - move to task-level inputs\n{\n  \"globalDependencies\": [\".env\"],\n  \"tasks\": {\n    \"build\": {\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"],\n      \"outputs\": [\"dist\u002F**\"]\n    }\n  }\n}\n```\n\n### Repetitive Task Configuration\n\nLook for repeated configuration across tasks that can be collapsed. Turborepo supports shared configuration patterns.\n\n```json\n\u002F\u002F WRONG - repetitive env and inputs across tasks\n{\n  \"tasks\": {\n    \"build\": {\n      \"env\": [\"API_URL\", \"DATABASE_URL\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"]\n    },\n    \"test\": {\n      \"env\": [\"API_URL\", \"DATABASE_URL\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"]\n    },\n    \"dev\": {\n      \"env\": [\"API_URL\", \"DATABASE_URL\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"],\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n\n\u002F\u002F BETTER - use globalEnv and globalDependencies for shared config\n{\n  \"globalEnv\": [\"API_URL\", \"DATABASE_URL\"],\n  \"globalDependencies\": [\".env*\"],\n  \"tasks\": {\n    \"build\": {},\n    \"test\": {},\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n```\n\n**When to use global vs task-level:**\n\n- `globalEnv` \u002F `globalDependencies` - affects ALL tasks, use for truly shared config\n- Task-level `env` \u002F `inputs` - use when only specific tasks need it\n\n### NOT an Anti-Pattern: Large `env` Arrays\n\nA large `env` array (even 50+ variables) is **not** a problem. It usually means the user was thorough about declaring their build's environment dependencies. Do not flag this as an issue.\n\n### Using `--parallel` Flag\n\nThe `--parallel` flag bypasses Turborepo's dependency graph. If tasks need parallel execution, configure `dependsOn` correctly instead.\n\n```bash\n# WRONG - bypasses dependency graph\nturbo run lint --parallel\n\n# CORRECT - configure tasks to allow parallel execution\n# In turbo.json, set dependsOn appropriately (or use transit nodes)\nturbo run lint\n```\n\n### Package-Specific Task Overrides in Root turbo.json\n\nWhen multiple packages need different task configurations, use **Package Configurations** (`turbo.json` in each package) instead of cluttering root `turbo.json` with `package#task` overrides.\n\n```json\n\u002F\u002F WRONG - root turbo.json with many package-specific overrides\n{\n  \"tasks\": {\n    \"test\": { \"dependsOn\": [\"build\"] },\n    \"@repo\u002Fweb#test\": { \"outputs\": [\"coverage\u002F**\"] },\n    \"@repo\u002Fapi#test\": { \"outputs\": [\"coverage\u002F**\"] },\n    \"@repo\u002Futils#test\": { \"outputs\": [] },\n    \"@repo\u002Fcli#test\": { \"outputs\": [] },\n    \"@repo\u002Fcore#test\": { \"outputs\": [] }\n  }\n}\n\n\u002F\u002F CORRECT - use Package Configurations\n\u002F\u002F Root turbo.json - base config only\n{\n  \"tasks\": {\n    \"test\": { \"dependsOn\": [\"build\"] }\n  }\n}\n\n\u002F\u002F packages\u002Fweb\u002Fturbo.json - package-specific override\n{\n  \"extends\": [\"\u002F\u002F\"],\n  \"tasks\": {\n    \"test\": { \"outputs\": [\"coverage\u002F**\"] }\n  }\n}\n\n\u002F\u002F packages\u002Fapi\u002Fturbo.json\n{\n  \"extends\": [\"\u002F\u002F\"],\n  \"tasks\": {\n    \"test\": { \"outputs\": [\"coverage\u002F**\"] }\n  }\n}\n```\n\n**Benefits of Package Configurations:**\n\n- Keeps configuration close to the code it affects\n- Root turbo.json stays clean and focused on base patterns\n- Easier to understand what's special about each package\n- Works with `$TURBO_EXTENDS$` to inherit + extend arrays\n\n**When to use `package#task` in root:**\n\n- Single package needs a unique dependency (e.g., `\"deploy\": { \"dependsOn\": [\"web#build\"] }`)\n- Temporary override while migrating\n\nSee `references\u002Fconfiguration\u002FRULE.md#package-configurations` for full details.\n\n### Using `..\u002F` to Traverse Out of Package in `inputs`\n\nDon't use relative paths like `..\u002F` to reference files outside the package. Use `$TURBO_ROOT$` instead.\n\n```json\n\u002F\u002F WRONG - traversing out of package\n{\n  \"tasks\": {\n    \"build\": {\n      \"inputs\": [\"$TURBO_DEFAULT$\", \"..\u002Fshared-config.json\"]\n    }\n  }\n}\n\n\u002F\u002F CORRECT - use $TURBO_ROOT$ for repo root\n{\n  \"tasks\": {\n    \"build\": {\n      \"inputs\": [\"$TURBO_DEFAULT$\", \"$TURBO_ROOT$\u002Fshared-config.json\"]\n    }\n  }\n}\n```\n\n### Missing `outputs` for File-Producing Tasks\n\n**Before flagging missing `outputs`, check what the task actually produces:**\n\n1. Read the package's script (e.g., `\"build\": \"tsc\"`, `\"test\": \"vitest\"`)\n2. Determine if it writes files to disk or only outputs to stdout\n3. Only flag if the task produces files that should be cached\n\n```json\n\u002F\u002F WRONG: build produces files but they're not cached\n{\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"]\n    }\n  }\n}\n\n\u002F\u002F CORRECT: build outputs are cached\n{\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist\u002F**\"]\n    }\n  }\n}\n```\n\nCommon outputs by framework:\n\n- Next.js: `[\".next\u002F**\", \"!.next\u002Fcache\u002F**\"]`\n- Vite\u002FRollup: `[\"dist\u002F**\"]`\n- tsc: `[\"dist\u002F**\"]` or custom `outDir`\n\n**TypeScript `--noEmit` can still produce cache files:**\n\nWhen `incremental: true` in tsconfig.json, `tsc --noEmit` writes `.tsbuildinfo` files even without emitting JS. Check the tsconfig before assuming no outputs:\n\n```json\n\u002F\u002F If tsconfig has incremental: true, tsc --noEmit produces cache files\n{\n  \"tasks\": {\n    \"typecheck\": {\n      \"outputs\": [\"node_modules\u002F.cache\u002Ftsbuildinfo.json\"] \u002F\u002F or wherever tsBuildInfoFile points\n    }\n  }\n}\n```\n\nTo determine correct outputs for TypeScript tasks:\n\n1. Check if `incremental` or `composite` is enabled in tsconfig\n2. Check `tsBuildInfoFile` for custom cache location (default: alongside `outDir` or in project root)\n3. If no incremental mode, `tsc --noEmit` produces no files\n\n### `^build` vs `build` Confusion\n\n```json\n{\n  \"tasks\": {\n    \u002F\u002F ^build = run build in DEPENDENCIES first (other packages this one imports)\n    \"build\": {\n      \"dependsOn\": [\"^build\"]\n    },\n    \u002F\u002F build (no ^) = run build in SAME PACKAGE first\n    \"test\": {\n      \"dependsOn\": [\"build\"]\n    },\n    \u002F\u002F pkg#task = specific package's task\n    \"deploy\": {\n      \"dependsOn\": [\"web#build\"]\n    }\n  }\n}\n```\n\n### Environment Variables Not Hashed\n\n```json\n\u002F\u002F WRONG: API_URL changes won't cause rebuilds\n{\n  \"tasks\": {\n    \"build\": {\n      \"outputs\": [\"dist\u002F**\"]\n    }\n  }\n}\n\n\u002F\u002F CORRECT: API_URL changes invalidate cache\n{\n  \"tasks\": {\n    \"build\": {\n      \"outputs\": [\"dist\u002F**\"],\n      \"env\": [\"API_URL\", \"API_KEY\"]\n    }\n  }\n}\n```\n\n### `.env` Files Not in Inputs\n\nTurbo does NOT load `.env` files - your framework does. But Turbo needs to know about changes:\n\n```json\n\u002F\u002F WRONG: .env changes don't invalidate cache\n{\n  \"tasks\": {\n    \"build\": {\n      \"env\": [\"API_URL\"]\n    }\n  }\n}\n\n\u002F\u002F CORRECT: .env file changes invalidate cache\n{\n  \"tasks\": {\n    \"build\": {\n      \"env\": [\"API_URL\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env\", \".env.*\"]\n    }\n  }\n}\n```\n\n### Root `.env` File in Monorepo\n\nA `.env` file at the repo root is an anti-pattern — even for small monorepos or starter templates. It creates implicit coupling between packages and makes it unclear which packages depend on which variables.\n\n```\n\u002F\u002F WRONG - root .env affects all packages implicitly\nmy-monorepo\u002F\n├── .env              # Which packages use this?\n├── apps\u002F\n│   ├── web\u002F\n│   └── api\u002F\n└── packages\u002F\n\n\u002F\u002F CORRECT - .env files in packages that need them\nmy-monorepo\u002F\n├── apps\u002F\n│   ├── web\u002F\n│   │   └── .env      # Clear: web needs DATABASE_URL\n│   └── api\u002F\n│       └── .env      # Clear: api needs API_KEY\n└── packages\u002F\n```\n\n**Problems with root `.env`:**\n\n- Unclear which packages consume which variables\n- All packages get all variables (even ones they don't need)\n- Cache invalidation is coarse-grained (root .env change invalidates everything)\n- Security risk: packages may accidentally access sensitive vars meant for others\n- Bad habits start small — starter templates should model correct patterns\n\n**If you must share variables**, use `globalEnv` to be explicit about what's shared, and document why.\n\n### Strict Mode Filtering CI Variables\n\nBy default, Turborepo filters environment variables to only those in `env`\u002F`globalEnv`. CI variables may be missing:\n\n```json\n\u002F\u002F If CI scripts need GITHUB_TOKEN but it's not in env:\n{\n  \"globalPassThroughEnv\": [\"GITHUB_TOKEN\", \"CI\"],\n  \"tasks\": { ... }\n}\n```\n\nOr use `--env-mode=loose` (not recommended for production).\n\n### Shared Code in Apps (Should Be a Package)\n\n```\n\u002F\u002F WRONG: Shared code inside an app\napps\u002F\n  web\u002F\n    shared\u002F          # This breaks monorepo principles!\n      utils.ts\n\n\u002F\u002F CORRECT: Extract to a package\npackages\u002F\n  utils\u002F\n    src\u002Futils.ts\n```\n\n### Accessing Files Across Package Boundaries\n\n```typescript\n\u002F\u002F WRONG: Reaching into another package's internals\nimport { Button } from \"..\u002F..\u002Fpackages\u002Fui\u002Fsrc\u002Fbutton\";\n\n\u002F\u002F CORRECT: Install and import properly\nimport { Button } from \"@repo\u002Fui\u002Fbutton\";\n```\n\n### Too Many Root Dependencies\n\n```json\n\u002F\u002F WRONG: App dependencies in root\n{\n  \"dependencies\": {\n    \"react\": \"^18\",\n    \"next\": \"^14\"\n  }\n}\n\n\u002F\u002F CORRECT: Only repo tools in root\n{\n  \"devDependencies\": {\n    \"turbo\": \"latest\"\n  }\n}\n```\n\n## Common Task Configurations\n\n### Standard Build Pipeline\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fv2-8-18-canary-7.turborepo.dev\u002Fschema.json\",\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist\u002F**\", \".next\u002F**\", \"!.next\u002Fcache\u002F**\"]\n    },\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n```\n\nAdd a `transit` task if you have tasks that need parallel execution with cache invalidation (see below).\n\n### Dev Task with `^dev` Pattern (for `turbo watch`)\n\nA `dev` task with `dependsOn: [\"^dev\"]` and `persistent: false` in root turbo.json may look unusual but is **correct for `turbo watch` workflows**:\n\n```json\n\u002F\u002F Root turbo.json\n{\n  \"tasks\": {\n    \"dev\": {\n      \"dependsOn\": [\"^dev\"],\n      \"cache\": false,\n      \"persistent\": false  \u002F\u002F Packages have one-shot dev scripts\n    }\n  }\n}\n\n\u002F\u002F Package turbo.json (apps\u002Fweb\u002Fturbo.json)\n{\n  \"extends\": [\"\u002F\u002F\"],\n  \"tasks\": {\n    \"dev\": {\n      \"persistent\": true  \u002F\u002F Apps run long-running dev servers\n    }\n  }\n}\n```\n\n**Why this works:**\n\n- **Packages** (e.g., `@acme\u002Fdb`, `@acme\u002Fvalidators`) have `\"dev\": \"tsc\"` — one-shot type generation that completes quickly\n- **Apps** override with `persistent: true` for actual dev servers (Next.js, etc.)\n- **`turbo watch`** re-runs the one-shot package `dev` scripts when source files change, keeping types in sync\n\n**Intended usage:** Run `turbo watch dev` (not `turbo run dev`). Watch mode re-executes one-shot tasks on file changes while keeping persistent tasks running.\n\n**Alternative pattern:** Use a separate task name like `prepare` or `generate` for one-shot dependency builds to make the intent clearer:\n\n```json\n{\n  \"tasks\": {\n    \"prepare\": {\n      \"dependsOn\": [\"^prepare\"],\n      \"outputs\": [\"dist\u002F**\"]\n    },\n    \"dev\": {\n      \"dependsOn\": [\"prepare\"],\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n```\n\n### Transit Nodes for Parallel Tasks with Cache Invalidation\n\nSome tasks can run in parallel (don't need built output from dependencies) but must invalidate cache when dependency source code changes.\n\n**The problem with `dependsOn: [\"^taskname\"]`:**\n\n- Forces sequential execution (slow)\n\n**The problem with `dependsOn: []` (no dependencies):**\n\n- Allows parallel execution (fast)\n- But cache is INCORRECT - changing dependency source won't invalidate cache\n\n**Transit Nodes solve both:**\n\n```json\n{\n  \"tasks\": {\n    \"transit\": { \"dependsOn\": [\"^transit\"] },\n    \"my-task\": { \"dependsOn\": [\"transit\"] }\n  }\n}\n```\n\nThe `transit` task creates dependency relationships without matching any actual script, so tasks run in parallel with correct cache invalidation.\n\n**How to identify tasks that need this pattern:** Look for tasks that read source files from dependencies but don't need their build outputs.\n\n### With Environment Variables\n\n```json\n{\n  \"globalEnv\": [\"NODE_ENV\"],\n  \"globalDependencies\": [\".env\"],\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist\u002F**\"],\n      \"env\": [\"API_URL\", \"DATABASE_URL\"]\n    }\n  }\n}\n```\n\n## Reference Index\n\n### Configuration\n\n| File                                                                            | Purpose                                                  |\n| ------------------------------------------------------------------------------- | -------------------------------------------------------- |\n| [configuration\u002FRULE.md](.\u002Freferences\u002Fconfiguration\u002FRULE.md)                     | turbo.json overview, Package Configurations              |\n| [configuration\u002Ftasks.md](.\u002Freferences\u002Fconfiguration\u002Ftasks.md)                   | dependsOn, outputs, inputs, env, cache, persistent       |\n| [configuration\u002Fglobal-options.md](.\u002Freferences\u002Fconfiguration\u002Fglobal-options.md) | globalEnv, globalDependencies, cacheDir, daemon, envMode |\n| [configuration\u002Fgotchas.md](.\u002Freferences\u002Fconfiguration\u002Fgotchas.md)               | Common configuration mistakes                            |\n\n### Caching\n\n| File                                                            | Purpose                                      |\n| --------------------------------------------------------------- | -------------------------------------------- |\n| [caching\u002FRULE.md](.\u002Freferences\u002Fcaching\u002FRULE.md)                 | How caching works, hash inputs               |\n| [caching\u002Fremote-cache.md](.\u002Freferences\u002Fcaching\u002Fremote-cache.md) | Vercel Remote Cache, self-hosted, login\u002Flink |\n| [caching\u002Fgotchas.md](.\u002Freferences\u002Fcaching\u002Fgotchas.md)           | Debugging cache misses, --summarize, --dry   |\n\n### Environment Variables\n\n| File                                                          | Purpose                                   |\n| ------------------------------------------------------------- | ----------------------------------------- |\n| [environment\u002FRULE.md](.\u002Freferences\u002Fenvironment\u002FRULE.md)       | env, globalEnv, passThroughEnv            |\n| [environment\u002Fmodes.md](.\u002Freferences\u002Fenvironment\u002Fmodes.md)     | Strict vs Loose mode, framework inference |\n| [environment\u002Fgotchas.md](.\u002Freferences\u002Fenvironment\u002Fgotchas.md) | .env files, CI issues                     |\n\n### Filtering\n\n| File                                                        | Purpose                  |\n| ----------------------------------------------------------- | ------------------------ |\n| [filtering\u002FRULE.md](.\u002Freferences\u002Ffiltering\u002FRULE.md)         | --filter syntax overview |\n| [filtering\u002Fpatterns.md](.\u002Freferences\u002Ffiltering\u002Fpatterns.md) | Common filter patterns   |\n\n### CI\u002FCD\n\n| File                                                      | Purpose                         |\n| --------------------------------------------------------- | ------------------------------- |\n| [ci\u002FRULE.md](.\u002Freferences\u002Fci\u002FRULE.md)                     | General CI principles           |\n| [ci\u002Fgithub-actions.md](.\u002Freferences\u002Fci\u002Fgithub-actions.md) | Complete GitHub Actions setup   |\n| [ci\u002Fvercel.md](.\u002Freferences\u002Fci\u002Fvercel.md)                 | Vercel deployment, turbo-ignore |\n| [ci\u002Fpatterns.md](.\u002Freferences\u002Fci\u002Fpatterns.md)             | --affected, caching strategies  |\n\n### CLI\n\n| File                                            | Purpose                                       |\n| ----------------------------------------------- | --------------------------------------------- |\n| [cli\u002FRULE.md](.\u002Freferences\u002Fcli\u002FRULE.md)         | turbo run basics                              |\n| [cli\u002Fcommands.md](.\u002Freferences\u002Fcli\u002Fcommands.md) | turbo run flags, turbo-ignore, other commands |\n\n### Best Practices\n\n| File                                                                          | Purpose                                                         |\n| ----------------------------------------------------------------------------- | --------------------------------------------------------------- |\n| [best-practices\u002FRULE.md](.\u002Freferences\u002Fbest-practices\u002FRULE.md)                 | Monorepo best practices overview                                |\n| [best-practices\u002Fstructure.md](.\u002Freferences\u002Fbest-practices\u002Fstructure.md)       | Repository structure, workspace config, TypeScript\u002FESLint setup |\n| [best-practices\u002Fpackages.md](.\u002Freferences\u002Fbest-practices\u002Fpackages.md)         | Creating internal packages, JIT vs Compiled, exports            |\n| [best-practices\u002Fdependencies.md](.\u002Freferences\u002Fbest-practices\u002Fdependencies.md) | Dependency management, installing, version sync                 |\n\n### Watch Mode\n\n| File                                        | Purpose                                         |\n| ------------------------------------------- | ----------------------------------------------- |\n| [watch\u002FRULE.md](.\u002Freferences\u002Fwatch\u002FRULE.md) | turbo watch, interruptible tasks, dev workflows |\n\n### Boundaries (Experimental)\n\n| File                                                  | Purpose                                               |\n| ----------------------------------------------------- | ----------------------------------------------------- |\n| [boundaries\u002FRULE.md](.\u002Freferences\u002Fboundaries\u002FRULE.md) | Enforce package isolation, tag-based dependency rules |\n\n## Source Documentation\n\nThis skill is based on the official Turborepo documentation at:\n\n- Source: `apps\u002Fdocs\u002Fcontent\u002Fdocs\u002F` in the Turborepo repository\n- Live: https:\u002F\u002Fturborepo.dev\u002Fdocs\n",{"data":36,"body":42},{"name":4,"description":6,"metadata":37},{"short-description":38,"author":39,"version":40,"source":41},"Structure and optimize Turborepo monorepos","Anthony Fu","2.8.18-canary.7","https:\u002F\u002Fgithub.com\u002Fantfu\u002Fskills\u002Ftree\u002Fmain\u002Fskills\u002Fturborepo",{"type":43,"children":44},"root",[45,54,60,67,76,81,127,144,615,876,1041,1211,1224,1244,1259,1349,1389,1415,1421,1428,1438,1444,1453,1459,1468,1484,1490,1499,1505,1514,1520,1529,1535,1544,1550,1559,1565,1574,1580,1589,1595,1608,1631,1890,1959,1965,1983,2235,2248,2260,2442,2454,2466,2592,2600,2686,3020,3037,3049,3059,3355,3361,3366,4188,4196,4234,4247,4266,4279,4298,4375,4381,4415,5267,5275,5306,5321,5342,5355,5373,5393,5683,5696,5711,5744,6039,6044,6087,6103,6132,6267,6272,6328,6345,6629,6635,6947,6958,6970,7298,7310,7322,7331,7345,7373,7390,7396,7415,7535,7548,7554,7563,7569,7686,7692,7913,7919,7925,8231,8244,8265,8305,8642,8650,8723,8748,8773,9048,9054,9059,9074,9082,9097,9110,9118,9297,9308,9318,9324,9617,9623,9629,9726,9732,9803,9809,9880,9886,9940,9945,10033,10039,10093,10099,10187,10193,10230,10236,10273,10279,10284,10312],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"turborepo-skill",[51],{"type":52,"value":53},"text","Turborepo Skill",{"type":46,"tag":55,"props":56,"children":57},"p",{},[58],{"type":52,"value":59},"Build system for JavaScript\u002FTypeScript monorepos. Turborepo caches task outputs and runs tasks in parallel based on dependency graph.",{"type":46,"tag":61,"props":62,"children":64},"h2",{"id":63},"important-package-tasks-not-root-tasks",[65],{"type":52,"value":66},"IMPORTANT: Package Tasks, Not Root Tasks",{"type":46,"tag":55,"props":68,"children":69},{},[70],{"type":46,"tag":71,"props":72,"children":73},"strong",{},[74],{"type":52,"value":75},"DO NOT create Root Tasks. ALWAYS create package tasks.",{"type":46,"tag":55,"props":77,"children":78},{},[79],{"type":52,"value":80},"When creating tasks\u002Fscripts\u002Fpipelines, you MUST:",{"type":46,"tag":82,"props":83,"children":84},"ol",{},[85,98,109],{"type":46,"tag":86,"props":87,"children":88},"li",{},[89,91],{"type":52,"value":90},"Add the script to each relevant package's ",{"type":46,"tag":92,"props":93,"children":95},"code",{"className":94},[],[96],{"type":52,"value":97},"package.json",{"type":46,"tag":86,"props":99,"children":100},{},[101,103],{"type":52,"value":102},"Register the task in root ",{"type":46,"tag":92,"props":104,"children":106},{"className":105},[],[107],{"type":52,"value":108},"turbo.json",{"type":46,"tag":86,"props":110,"children":111},{},[112,114,119,121],{"type":52,"value":113},"Root ",{"type":46,"tag":92,"props":115,"children":117},{"className":116},[],[118],{"type":52,"value":97},{"type":52,"value":120}," only delegates via ",{"type":46,"tag":92,"props":122,"children":124},{"className":123},[],[125],{"type":52,"value":126},"turbo run \u003Ctask>",{"type":46,"tag":55,"props":128,"children":129},{},[130,135,137,142],{"type":46,"tag":71,"props":131,"children":132},{},[133],{"type":52,"value":134},"DO NOT",{"type":52,"value":136}," put task logic in root ",{"type":46,"tag":92,"props":138,"children":140},{"className":139},[],[141],{"type":52,"value":97},{"type":52,"value":143},". This defeats Turborepo's parallelization.",{"type":46,"tag":145,"props":146,"children":151},"pre",{"className":147,"code":148,"language":149,"meta":150,"style":150},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F DO THIS: Scripts in each package\n\u002F\u002F apps\u002Fweb\u002Fpackage.json\n{ \"scripts\": { \"build\": \"next build\", \"lint\": \"eslint .\", \"test\": \"vitest\" } }\n\n\u002F\u002F apps\u002Fapi\u002Fpackage.json\n{ \"scripts\": { \"build\": \"tsc\", \"lint\": \"eslint .\", \"test\": \"vitest\" } }\n\n\u002F\u002F packages\u002Fui\u002Fpackage.json\n{ \"scripts\": { \"build\": \"tsc\", \"lint\": \"eslint .\", \"test\": \"vitest\" } }\n","json","",[152],{"type":46,"tag":92,"props":153,"children":154},{"__ignoreMap":150},[155,167,176,322,332,341,470,478,487],{"type":46,"tag":156,"props":157,"children":160},"span",{"class":158,"line":159},"line",1,[161],{"type":46,"tag":156,"props":162,"children":164},{"style":163},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[165],{"type":52,"value":166},"\u002F\u002F DO THIS: Scripts in each package\n",{"type":46,"tag":156,"props":168,"children":170},{"class":158,"line":169},2,[171],{"type":46,"tag":156,"props":172,"children":173},{"style":163},[174],{"type":52,"value":175},"\u002F\u002F apps\u002Fweb\u002Fpackage.json\n",{"type":46,"tag":156,"props":177,"children":179},{"class":158,"line":178},3,[180,186,191,197,202,207,212,216,221,225,229,233,239,243,248,252,257,261,265,269,274,278,282,286,291,295,299,303,308,312,317],{"type":46,"tag":156,"props":181,"children":183},{"style":182},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[184],{"type":52,"value":185},"{",{"type":46,"tag":156,"props":187,"children":188},{"style":182},[189],{"type":52,"value":190}," \"",{"type":46,"tag":156,"props":192,"children":194},{"style":193},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[195],{"type":52,"value":196},"scripts",{"type":46,"tag":156,"props":198,"children":199},{"style":182},[200],{"type":52,"value":201},"\"",{"type":46,"tag":156,"props":203,"children":204},{"style":182},[205],{"type":52,"value":206},":",{"type":46,"tag":156,"props":208,"children":209},{"style":182},[210],{"type":52,"value":211}," {",{"type":46,"tag":156,"props":213,"children":214},{"style":182},[215],{"type":52,"value":190},{"type":46,"tag":156,"props":217,"children":219},{"style":218},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[220],{"type":52,"value":18},{"type":46,"tag":156,"props":222,"children":223},{"style":182},[224],{"type":52,"value":201},{"type":46,"tag":156,"props":226,"children":227},{"style":182},[228],{"type":52,"value":206},{"type":46,"tag":156,"props":230,"children":231},{"style":182},[232],{"type":52,"value":190},{"type":46,"tag":156,"props":234,"children":236},{"style":235},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[237],{"type":52,"value":238},"next build",{"type":46,"tag":156,"props":240,"children":241},{"style":182},[242],{"type":52,"value":201},{"type":46,"tag":156,"props":244,"children":245},{"style":182},[246],{"type":52,"value":247},",",{"type":46,"tag":156,"props":249,"children":250},{"style":182},[251],{"type":52,"value":190},{"type":46,"tag":156,"props":253,"children":254},{"style":218},[255],{"type":52,"value":256},"lint",{"type":46,"tag":156,"props":258,"children":259},{"style":182},[260],{"type":52,"value":201},{"type":46,"tag":156,"props":262,"children":263},{"style":182},[264],{"type":52,"value":206},{"type":46,"tag":156,"props":266,"children":267},{"style":182},[268],{"type":52,"value":190},{"type":46,"tag":156,"props":270,"children":271},{"style":235},[272],{"type":52,"value":273},"eslint .",{"type":46,"tag":156,"props":275,"children":276},{"style":182},[277],{"type":52,"value":201},{"type":46,"tag":156,"props":279,"children":280},{"style":182},[281],{"type":52,"value":247},{"type":46,"tag":156,"props":283,"children":284},{"style":182},[285],{"type":52,"value":190},{"type":46,"tag":156,"props":287,"children":288},{"style":218},[289],{"type":52,"value":290},"test",{"type":46,"tag":156,"props":292,"children":293},{"style":182},[294],{"type":52,"value":201},{"type":46,"tag":156,"props":296,"children":297},{"style":182},[298],{"type":52,"value":206},{"type":46,"tag":156,"props":300,"children":301},{"style":182},[302],{"type":52,"value":190},{"type":46,"tag":156,"props":304,"children":305},{"style":235},[306],{"type":52,"value":307},"vitest",{"type":46,"tag":156,"props":309,"children":310},{"style":182},[311],{"type":52,"value":201},{"type":46,"tag":156,"props":313,"children":314},{"style":182},[315],{"type":52,"value":316}," }",{"type":46,"tag":156,"props":318,"children":319},{"style":182},[320],{"type":52,"value":321}," }\n",{"type":46,"tag":156,"props":323,"children":325},{"class":158,"line":324},4,[326],{"type":46,"tag":156,"props":327,"children":329},{"emptyLinePlaceholder":328},true,[330],{"type":52,"value":331},"\n",{"type":46,"tag":156,"props":333,"children":335},{"class":158,"line":334},5,[336],{"type":46,"tag":156,"props":337,"children":338},{"style":163},[339],{"type":52,"value":340},"\u002F\u002F apps\u002Fapi\u002Fpackage.json\n",{"type":46,"tag":156,"props":342,"children":344},{"class":158,"line":343},6,[345,349,353,357,361,365,369,373,377,381,385,389,394,398,402,406,410,414,418,422,426,430,434,438,442,446,450,454,458,462,466],{"type":46,"tag":156,"props":346,"children":347},{"style":182},[348],{"type":52,"value":185},{"type":46,"tag":156,"props":350,"children":351},{"style":182},[352],{"type":52,"value":190},{"type":46,"tag":156,"props":354,"children":355},{"style":193},[356],{"type":52,"value":196},{"type":46,"tag":156,"props":358,"children":359},{"style":182},[360],{"type":52,"value":201},{"type":46,"tag":156,"props":362,"children":363},{"style":182},[364],{"type":52,"value":206},{"type":46,"tag":156,"props":366,"children":367},{"style":182},[368],{"type":52,"value":211},{"type":46,"tag":156,"props":370,"children":371},{"style":182},[372],{"type":52,"value":190},{"type":46,"tag":156,"props":374,"children":375},{"style":218},[376],{"type":52,"value":18},{"type":46,"tag":156,"props":378,"children":379},{"style":182},[380],{"type":52,"value":201},{"type":46,"tag":156,"props":382,"children":383},{"style":182},[384],{"type":52,"value":206},{"type":46,"tag":156,"props":386,"children":387},{"style":182},[388],{"type":52,"value":190},{"type":46,"tag":156,"props":390,"children":391},{"style":235},[392],{"type":52,"value":393},"tsc",{"type":46,"tag":156,"props":395,"children":396},{"style":182},[397],{"type":52,"value":201},{"type":46,"tag":156,"props":399,"children":400},{"style":182},[401],{"type":52,"value":247},{"type":46,"tag":156,"props":403,"children":404},{"style":182},[405],{"type":52,"value":190},{"type":46,"tag":156,"props":407,"children":408},{"style":218},[409],{"type":52,"value":256},{"type":46,"tag":156,"props":411,"children":412},{"style":182},[413],{"type":52,"value":201},{"type":46,"tag":156,"props":415,"children":416},{"style":182},[417],{"type":52,"value":206},{"type":46,"tag":156,"props":419,"children":420},{"style":182},[421],{"type":52,"value":190},{"type":46,"tag":156,"props":423,"children":424},{"style":235},[425],{"type":52,"value":273},{"type":46,"tag":156,"props":427,"children":428},{"style":182},[429],{"type":52,"value":201},{"type":46,"tag":156,"props":431,"children":432},{"style":182},[433],{"type":52,"value":247},{"type":46,"tag":156,"props":435,"children":436},{"style":182},[437],{"type":52,"value":190},{"type":46,"tag":156,"props":439,"children":440},{"style":218},[441],{"type":52,"value":290},{"type":46,"tag":156,"props":443,"children":444},{"style":182},[445],{"type":52,"value":201},{"type":46,"tag":156,"props":447,"children":448},{"style":182},[449],{"type":52,"value":206},{"type":46,"tag":156,"props":451,"children":452},{"style":182},[453],{"type":52,"value":190},{"type":46,"tag":156,"props":455,"children":456},{"style":235},[457],{"type":52,"value":307},{"type":46,"tag":156,"props":459,"children":460},{"style":182},[461],{"type":52,"value":201},{"type":46,"tag":156,"props":463,"children":464},{"style":182},[465],{"type":52,"value":316},{"type":46,"tag":156,"props":467,"children":468},{"style":182},[469],{"type":52,"value":321},{"type":46,"tag":156,"props":471,"children":473},{"class":158,"line":472},7,[474],{"type":46,"tag":156,"props":475,"children":476},{"emptyLinePlaceholder":328},[477],{"type":52,"value":331},{"type":46,"tag":156,"props":479,"children":481},{"class":158,"line":480},8,[482],{"type":46,"tag":156,"props":483,"children":484},{"style":163},[485],{"type":52,"value":486},"\u002F\u002F packages\u002Fui\u002Fpackage.json\n",{"type":46,"tag":156,"props":488,"children":490},{"class":158,"line":489},9,[491,495,499,503,507,511,515,519,523,527,531,535,539,543,547,551,555,559,563,567,571,575,579,583,587,591,595,599,603,607,611],{"type":46,"tag":156,"props":492,"children":493},{"style":182},[494],{"type":52,"value":185},{"type":46,"tag":156,"props":496,"children":497},{"style":182},[498],{"type":52,"value":190},{"type":46,"tag":156,"props":500,"children":501},{"style":193},[502],{"type":52,"value":196},{"type":46,"tag":156,"props":504,"children":505},{"style":182},[506],{"type":52,"value":201},{"type":46,"tag":156,"props":508,"children":509},{"style":182},[510],{"type":52,"value":206},{"type":46,"tag":156,"props":512,"children":513},{"style":182},[514],{"type":52,"value":211},{"type":46,"tag":156,"props":516,"children":517},{"style":182},[518],{"type":52,"value":190},{"type":46,"tag":156,"props":520,"children":521},{"style":218},[522],{"type":52,"value":18},{"type":46,"tag":156,"props":524,"children":525},{"style":182},[526],{"type":52,"value":201},{"type":46,"tag":156,"props":528,"children":529},{"style":182},[530],{"type":52,"value":206},{"type":46,"tag":156,"props":532,"children":533},{"style":182},[534],{"type":52,"value":190},{"type":46,"tag":156,"props":536,"children":537},{"style":235},[538],{"type":52,"value":393},{"type":46,"tag":156,"props":540,"children":541},{"style":182},[542],{"type":52,"value":201},{"type":46,"tag":156,"props":544,"children":545},{"style":182},[546],{"type":52,"value":247},{"type":46,"tag":156,"props":548,"children":549},{"style":182},[550],{"type":52,"value":190},{"type":46,"tag":156,"props":552,"children":553},{"style":218},[554],{"type":52,"value":256},{"type":46,"tag":156,"props":556,"children":557},{"style":182},[558],{"type":52,"value":201},{"type":46,"tag":156,"props":560,"children":561},{"style":182},[562],{"type":52,"value":206},{"type":46,"tag":156,"props":564,"children":565},{"style":182},[566],{"type":52,"value":190},{"type":46,"tag":156,"props":568,"children":569},{"style":235},[570],{"type":52,"value":273},{"type":46,"tag":156,"props":572,"children":573},{"style":182},[574],{"type":52,"value":201},{"type":46,"tag":156,"props":576,"children":577},{"style":182},[578],{"type":52,"value":247},{"type":46,"tag":156,"props":580,"children":581},{"style":182},[582],{"type":52,"value":190},{"type":46,"tag":156,"props":584,"children":585},{"style":218},[586],{"type":52,"value":290},{"type":46,"tag":156,"props":588,"children":589},{"style":182},[590],{"type":52,"value":201},{"type":46,"tag":156,"props":592,"children":593},{"style":182},[594],{"type":52,"value":206},{"type":46,"tag":156,"props":596,"children":597},{"style":182},[598],{"type":52,"value":190},{"type":46,"tag":156,"props":600,"children":601},{"style":235},[602],{"type":52,"value":307},{"type":46,"tag":156,"props":604,"children":605},{"style":182},[606],{"type":52,"value":201},{"type":46,"tag":156,"props":608,"children":609},{"style":182},[610],{"type":52,"value":316},{"type":46,"tag":156,"props":612,"children":613},{"style":182},[614],{"type":52,"value":321},{"type":46,"tag":145,"props":616,"children":618},{"className":147,"code":617,"language":149,"meta":150,"style":150},"\u002F\u002F turbo.json - register tasks\n{\n  \"tasks\": {\n    \"build\": { \"dependsOn\": [\"^build\"], \"outputs\": [\"dist\u002F**\"] },\n    \"lint\": {},\n    \"test\": { \"dependsOn\": [\"build\"] }\n  }\n}\n",[619],{"type":46,"tag":92,"props":620,"children":621},{"__ignoreMap":150},[622,630,638,664,773,797,860,868],{"type":46,"tag":156,"props":623,"children":624},{"class":158,"line":159},[625],{"type":46,"tag":156,"props":626,"children":627},{"style":163},[628],{"type":52,"value":629},"\u002F\u002F turbo.json - register tasks\n",{"type":46,"tag":156,"props":631,"children":632},{"class":158,"line":169},[633],{"type":46,"tag":156,"props":634,"children":635},{"style":182},[636],{"type":52,"value":637},"{\n",{"type":46,"tag":156,"props":639,"children":640},{"class":158,"line":178},[641,646,651,655,659],{"type":46,"tag":156,"props":642,"children":643},{"style":182},[644],{"type":52,"value":645},"  \"",{"type":46,"tag":156,"props":647,"children":648},{"style":193},[649],{"type":52,"value":650},"tasks",{"type":46,"tag":156,"props":652,"children":653},{"style":182},[654],{"type":52,"value":201},{"type":46,"tag":156,"props":656,"children":657},{"style":182},[658],{"type":52,"value":206},{"type":46,"tag":156,"props":660,"children":661},{"style":182},[662],{"type":52,"value":663}," {\n",{"type":46,"tag":156,"props":665,"children":666},{"class":158,"line":324},[667,672,676,680,684,688,692,698,702,706,711,715,720,724,729,733,738,742,746,750,754,759,763,768],{"type":46,"tag":156,"props":668,"children":669},{"style":182},[670],{"type":52,"value":671},"    \"",{"type":46,"tag":156,"props":673,"children":674},{"style":218},[675],{"type":52,"value":18},{"type":46,"tag":156,"props":677,"children":678},{"style":182},[679],{"type":52,"value":201},{"type":46,"tag":156,"props":681,"children":682},{"style":182},[683],{"type":52,"value":206},{"type":46,"tag":156,"props":685,"children":686},{"style":182},[687],{"type":52,"value":211},{"type":46,"tag":156,"props":689,"children":690},{"style":182},[691],{"type":52,"value":190},{"type":46,"tag":156,"props":693,"children":695},{"style":694},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[696],{"type":52,"value":697},"dependsOn",{"type":46,"tag":156,"props":699,"children":700},{"style":182},[701],{"type":52,"value":201},{"type":46,"tag":156,"props":703,"children":704},{"style":182},[705],{"type":52,"value":206},{"type":46,"tag":156,"props":707,"children":708},{"style":182},[709],{"type":52,"value":710}," [",{"type":46,"tag":156,"props":712,"children":713},{"style":182},[714],{"type":52,"value":201},{"type":46,"tag":156,"props":716,"children":717},{"style":235},[718],{"type":52,"value":719},"^build",{"type":46,"tag":156,"props":721,"children":722},{"style":182},[723],{"type":52,"value":201},{"type":46,"tag":156,"props":725,"children":726},{"style":182},[727],{"type":52,"value":728},"],",{"type":46,"tag":156,"props":730,"children":731},{"style":182},[732],{"type":52,"value":190},{"type":46,"tag":156,"props":734,"children":735},{"style":694},[736],{"type":52,"value":737},"outputs",{"type":46,"tag":156,"props":739,"children":740},{"style":182},[741],{"type":52,"value":201},{"type":46,"tag":156,"props":743,"children":744},{"style":182},[745],{"type":52,"value":206},{"type":46,"tag":156,"props":747,"children":748},{"style":182},[749],{"type":52,"value":710},{"type":46,"tag":156,"props":751,"children":752},{"style":182},[753],{"type":52,"value":201},{"type":46,"tag":156,"props":755,"children":756},{"style":235},[757],{"type":52,"value":758},"dist\u002F**",{"type":46,"tag":156,"props":760,"children":761},{"style":182},[762],{"type":52,"value":201},{"type":46,"tag":156,"props":764,"children":765},{"style":182},[766],{"type":52,"value":767},"]",{"type":46,"tag":156,"props":769,"children":770},{"style":182},[771],{"type":52,"value":772}," },\n",{"type":46,"tag":156,"props":774,"children":775},{"class":158,"line":334},[776,780,784,788,792],{"type":46,"tag":156,"props":777,"children":778},{"style":182},[779],{"type":52,"value":671},{"type":46,"tag":156,"props":781,"children":782},{"style":218},[783],{"type":52,"value":256},{"type":46,"tag":156,"props":785,"children":786},{"style":182},[787],{"type":52,"value":201},{"type":46,"tag":156,"props":789,"children":790},{"style":182},[791],{"type":52,"value":206},{"type":46,"tag":156,"props":793,"children":794},{"style":182},[795],{"type":52,"value":796}," {},\n",{"type":46,"tag":156,"props":798,"children":799},{"class":158,"line":343},[800,804,808,812,816,820,824,828,832,836,840,844,848,852,856],{"type":46,"tag":156,"props":801,"children":802},{"style":182},[803],{"type":52,"value":671},{"type":46,"tag":156,"props":805,"children":806},{"style":218},[807],{"type":52,"value":290},{"type":46,"tag":156,"props":809,"children":810},{"style":182},[811],{"type":52,"value":201},{"type":46,"tag":156,"props":813,"children":814},{"style":182},[815],{"type":52,"value":206},{"type":46,"tag":156,"props":817,"children":818},{"style":182},[819],{"type":52,"value":211},{"type":46,"tag":156,"props":821,"children":822},{"style":182},[823],{"type":52,"value":190},{"type":46,"tag":156,"props":825,"children":826},{"style":694},[827],{"type":52,"value":697},{"type":46,"tag":156,"props":829,"children":830},{"style":182},[831],{"type":52,"value":201},{"type":46,"tag":156,"props":833,"children":834},{"style":182},[835],{"type":52,"value":206},{"type":46,"tag":156,"props":837,"children":838},{"style":182},[839],{"type":52,"value":710},{"type":46,"tag":156,"props":841,"children":842},{"style":182},[843],{"type":52,"value":201},{"type":46,"tag":156,"props":845,"children":846},{"style":235},[847],{"type":52,"value":18},{"type":46,"tag":156,"props":849,"children":850},{"style":182},[851],{"type":52,"value":201},{"type":46,"tag":156,"props":853,"children":854},{"style":182},[855],{"type":52,"value":767},{"type":46,"tag":156,"props":857,"children":858},{"style":182},[859],{"type":52,"value":321},{"type":46,"tag":156,"props":861,"children":862},{"class":158,"line":472},[863],{"type":46,"tag":156,"props":864,"children":865},{"style":182},[866],{"type":52,"value":867},"  }\n",{"type":46,"tag":156,"props":869,"children":870},{"class":158,"line":480},[871],{"type":46,"tag":156,"props":872,"children":873},{"style":182},[874],{"type":52,"value":875},"}\n",{"type":46,"tag":145,"props":877,"children":879},{"className":147,"code":878,"language":149,"meta":150,"style":150},"\u002F\u002F Root package.json - ONLY delegates, no task logic\n{\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"lint\": \"turbo run lint\",\n    \"test\": \"turbo run test\"\n  }\n}\n",[880],{"type":46,"tag":92,"props":881,"children":882},{"__ignoreMap":150},[883,891,898,921,958,994,1027,1034],{"type":46,"tag":156,"props":884,"children":885},{"class":158,"line":159},[886],{"type":46,"tag":156,"props":887,"children":888},{"style":163},[889],{"type":52,"value":890},"\u002F\u002F Root package.json - ONLY delegates, no task logic\n",{"type":46,"tag":156,"props":892,"children":893},{"class":158,"line":169},[894],{"type":46,"tag":156,"props":895,"children":896},{"style":182},[897],{"type":52,"value":637},{"type":46,"tag":156,"props":899,"children":900},{"class":158,"line":178},[901,905,909,913,917],{"type":46,"tag":156,"props":902,"children":903},{"style":182},[904],{"type":52,"value":645},{"type":46,"tag":156,"props":906,"children":907},{"style":193},[908],{"type":52,"value":196},{"type":46,"tag":156,"props":910,"children":911},{"style":182},[912],{"type":52,"value":201},{"type":46,"tag":156,"props":914,"children":915},{"style":182},[916],{"type":52,"value":206},{"type":46,"tag":156,"props":918,"children":919},{"style":182},[920],{"type":52,"value":663},{"type":46,"tag":156,"props":922,"children":923},{"class":158,"line":324},[924,928,932,936,940,944,949,953],{"type":46,"tag":156,"props":925,"children":926},{"style":182},[927],{"type":52,"value":671},{"type":46,"tag":156,"props":929,"children":930},{"style":218},[931],{"type":52,"value":18},{"type":46,"tag":156,"props":933,"children":934},{"style":182},[935],{"type":52,"value":201},{"type":46,"tag":156,"props":937,"children":938},{"style":182},[939],{"type":52,"value":206},{"type":46,"tag":156,"props":941,"children":942},{"style":182},[943],{"type":52,"value":190},{"type":46,"tag":156,"props":945,"children":946},{"style":235},[947],{"type":52,"value":948},"turbo run build",{"type":46,"tag":156,"props":950,"children":951},{"style":182},[952],{"type":52,"value":201},{"type":46,"tag":156,"props":954,"children":955},{"style":182},[956],{"type":52,"value":957},",\n",{"type":46,"tag":156,"props":959,"children":960},{"class":158,"line":334},[961,965,969,973,977,981,986,990],{"type":46,"tag":156,"props":962,"children":963},{"style":182},[964],{"type":52,"value":671},{"type":46,"tag":156,"props":966,"children":967},{"style":218},[968],{"type":52,"value":256},{"type":46,"tag":156,"props":970,"children":971},{"style":182},[972],{"type":52,"value":201},{"type":46,"tag":156,"props":974,"children":975},{"style":182},[976],{"type":52,"value":206},{"type":46,"tag":156,"props":978,"children":979},{"style":182},[980],{"type":52,"value":190},{"type":46,"tag":156,"props":982,"children":983},{"style":235},[984],{"type":52,"value":985},"turbo run lint",{"type":46,"tag":156,"props":987,"children":988},{"style":182},[989],{"type":52,"value":201},{"type":46,"tag":156,"props":991,"children":992},{"style":182},[993],{"type":52,"value":957},{"type":46,"tag":156,"props":995,"children":996},{"class":158,"line":343},[997,1001,1005,1009,1013,1017,1022],{"type":46,"tag":156,"props":998,"children":999},{"style":182},[1000],{"type":52,"value":671},{"type":46,"tag":156,"props":1002,"children":1003},{"style":218},[1004],{"type":52,"value":290},{"type":46,"tag":156,"props":1006,"children":1007},{"style":182},[1008],{"type":52,"value":201},{"type":46,"tag":156,"props":1010,"children":1011},{"style":182},[1012],{"type":52,"value":206},{"type":46,"tag":156,"props":1014,"children":1015},{"style":182},[1016],{"type":52,"value":190},{"type":46,"tag":156,"props":1018,"children":1019},{"style":235},[1020],{"type":52,"value":1021},"turbo run test",{"type":46,"tag":156,"props":1023,"children":1024},{"style":182},[1025],{"type":52,"value":1026},"\"\n",{"type":46,"tag":156,"props":1028,"children":1029},{"class":158,"line":472},[1030],{"type":46,"tag":156,"props":1031,"children":1032},{"style":182},[1033],{"type":52,"value":867},{"type":46,"tag":156,"props":1035,"children":1036},{"class":158,"line":480},[1037],{"type":46,"tag":156,"props":1038,"children":1039},{"style":182},[1040],{"type":52,"value":875},{"type":46,"tag":145,"props":1042,"children":1044},{"className":147,"code":1043,"language":149,"meta":150,"style":150},"\u002F\u002F DO NOT DO THIS - defeats parallelization\n\u002F\u002F Root package.json\n{\n  \"scripts\": {\n    \"build\": \"cd apps\u002Fweb && next build && cd ..\u002Fapi && tsc\",\n    \"lint\": \"eslint apps\u002F packages\u002F\",\n    \"test\": \"vitest\"\n  }\n}\n",[1045],{"type":46,"tag":92,"props":1046,"children":1047},{"__ignoreMap":150},[1048,1056,1064,1071,1094,1130,1166,1197,1204],{"type":46,"tag":156,"props":1049,"children":1050},{"class":158,"line":159},[1051],{"type":46,"tag":156,"props":1052,"children":1053},{"style":163},[1054],{"type":52,"value":1055},"\u002F\u002F DO NOT DO THIS - defeats parallelization\n",{"type":46,"tag":156,"props":1057,"children":1058},{"class":158,"line":169},[1059],{"type":46,"tag":156,"props":1060,"children":1061},{"style":163},[1062],{"type":52,"value":1063},"\u002F\u002F Root package.json\n",{"type":46,"tag":156,"props":1065,"children":1066},{"class":158,"line":178},[1067],{"type":46,"tag":156,"props":1068,"children":1069},{"style":182},[1070],{"type":52,"value":637},{"type":46,"tag":156,"props":1072,"children":1073},{"class":158,"line":324},[1074,1078,1082,1086,1090],{"type":46,"tag":156,"props":1075,"children":1076},{"style":182},[1077],{"type":52,"value":645},{"type":46,"tag":156,"props":1079,"children":1080},{"style":193},[1081],{"type":52,"value":196},{"type":46,"tag":156,"props":1083,"children":1084},{"style":182},[1085],{"type":52,"value":201},{"type":46,"tag":156,"props":1087,"children":1088},{"style":182},[1089],{"type":52,"value":206},{"type":46,"tag":156,"props":1091,"children":1092},{"style":182},[1093],{"type":52,"value":663},{"type":46,"tag":156,"props":1095,"children":1096},{"class":158,"line":334},[1097,1101,1105,1109,1113,1117,1122,1126],{"type":46,"tag":156,"props":1098,"children":1099},{"style":182},[1100],{"type":52,"value":671},{"type":46,"tag":156,"props":1102,"children":1103},{"style":218},[1104],{"type":52,"value":18},{"type":46,"tag":156,"props":1106,"children":1107},{"style":182},[1108],{"type":52,"value":201},{"type":46,"tag":156,"props":1110,"children":1111},{"style":182},[1112],{"type":52,"value":206},{"type":46,"tag":156,"props":1114,"children":1115},{"style":182},[1116],{"type":52,"value":190},{"type":46,"tag":156,"props":1118,"children":1119},{"style":235},[1120],{"type":52,"value":1121},"cd apps\u002Fweb && next build && cd ..\u002Fapi && tsc",{"type":46,"tag":156,"props":1123,"children":1124},{"style":182},[1125],{"type":52,"value":201},{"type":46,"tag":156,"props":1127,"children":1128},{"style":182},[1129],{"type":52,"value":957},{"type":46,"tag":156,"props":1131,"children":1132},{"class":158,"line":343},[1133,1137,1141,1145,1149,1153,1158,1162],{"type":46,"tag":156,"props":1134,"children":1135},{"style":182},[1136],{"type":52,"value":671},{"type":46,"tag":156,"props":1138,"children":1139},{"style":218},[1140],{"type":52,"value":256},{"type":46,"tag":156,"props":1142,"children":1143},{"style":182},[1144],{"type":52,"value":201},{"type":46,"tag":156,"props":1146,"children":1147},{"style":182},[1148],{"type":52,"value":206},{"type":46,"tag":156,"props":1150,"children":1151},{"style":182},[1152],{"type":52,"value":190},{"type":46,"tag":156,"props":1154,"children":1155},{"style":235},[1156],{"type":52,"value":1157},"eslint apps\u002F packages\u002F",{"type":46,"tag":156,"props":1159,"children":1160},{"style":182},[1161],{"type":52,"value":201},{"type":46,"tag":156,"props":1163,"children":1164},{"style":182},[1165],{"type":52,"value":957},{"type":46,"tag":156,"props":1167,"children":1168},{"class":158,"line":472},[1169,1173,1177,1181,1185,1189,1193],{"type":46,"tag":156,"props":1170,"children":1171},{"style":182},[1172],{"type":52,"value":671},{"type":46,"tag":156,"props":1174,"children":1175},{"style":218},[1176],{"type":52,"value":290},{"type":46,"tag":156,"props":1178,"children":1179},{"style":182},[1180],{"type":52,"value":201},{"type":46,"tag":156,"props":1182,"children":1183},{"style":182},[1184],{"type":52,"value":206},{"type":46,"tag":156,"props":1186,"children":1187},{"style":182},[1188],{"type":52,"value":190},{"type":46,"tag":156,"props":1190,"children":1191},{"style":235},[1192],{"type":52,"value":307},{"type":46,"tag":156,"props":1194,"children":1195},{"style":182},[1196],{"type":52,"value":1026},{"type":46,"tag":156,"props":1198,"children":1199},{"class":158,"line":480},[1200],{"type":46,"tag":156,"props":1201,"children":1202},{"style":182},[1203],{"type":52,"value":867},{"type":46,"tag":156,"props":1205,"children":1206},{"class":158,"line":489},[1207],{"type":46,"tag":156,"props":1208,"children":1209},{"style":182},[1210],{"type":52,"value":875},{"type":46,"tag":55,"props":1212,"children":1213},{},[1214,1216,1222],{"type":52,"value":1215},"Root Tasks (",{"type":46,"tag":92,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":52,"value":1221},"\u002F\u002F#taskname",{"type":52,"value":1223},") are ONLY for tasks that truly cannot exist in packages (rare).",{"type":46,"tag":61,"props":1225,"children":1227},{"id":1226},"secondary-rule-turbo-run-vs-turbo",[1228,1230,1236,1238],{"type":52,"value":1229},"Secondary Rule: ",{"type":46,"tag":92,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":52,"value":1235},"turbo run",{"type":52,"value":1237}," vs ",{"type":46,"tag":92,"props":1239,"children":1241},{"className":1240},[],[1242],{"type":52,"value":1243},"turbo",{"type":46,"tag":55,"props":1245,"children":1246},{},[1247],{"type":46,"tag":71,"props":1248,"children":1249},{},[1250,1252,1257],{"type":52,"value":1251},"Always use ",{"type":46,"tag":92,"props":1253,"children":1255},{"className":1254},[],[1256],{"type":52,"value":1235},{"type":52,"value":1258}," when the command is written into code:",{"type":46,"tag":145,"props":1260,"children":1262},{"className":147,"code":1261,"language":149,"meta":150,"style":150},"\u002F\u002F package.json - ALWAYS \"turbo run\"\n{\n  \"scripts\": {\n    \"build\": \"turbo run build\"\n  }\n}\n",[1263],{"type":46,"tag":92,"props":1264,"children":1265},{"__ignoreMap":150},[1266,1274,1281,1304,1335,1342],{"type":46,"tag":156,"props":1267,"children":1268},{"class":158,"line":159},[1269],{"type":46,"tag":156,"props":1270,"children":1271},{"style":163},[1272],{"type":52,"value":1273},"\u002F\u002F package.json - ALWAYS \"turbo run\"\n",{"type":46,"tag":156,"props":1275,"children":1276},{"class":158,"line":169},[1277],{"type":46,"tag":156,"props":1278,"children":1279},{"style":182},[1280],{"type":52,"value":637},{"type":46,"tag":156,"props":1282,"children":1283},{"class":158,"line":178},[1284,1288,1292,1296,1300],{"type":46,"tag":156,"props":1285,"children":1286},{"style":182},[1287],{"type":52,"value":645},{"type":46,"tag":156,"props":1289,"children":1290},{"style":193},[1291],{"type":52,"value":196},{"type":46,"tag":156,"props":1293,"children":1294},{"style":182},[1295],{"type":52,"value":201},{"type":46,"tag":156,"props":1297,"children":1298},{"style":182},[1299],{"type":52,"value":206},{"type":46,"tag":156,"props":1301,"children":1302},{"style":182},[1303],{"type":52,"value":663},{"type":46,"tag":156,"props":1305,"children":1306},{"class":158,"line":324},[1307,1311,1315,1319,1323,1327,1331],{"type":46,"tag":156,"props":1308,"children":1309},{"style":182},[1310],{"type":52,"value":671},{"type":46,"tag":156,"props":1312,"children":1313},{"style":218},[1314],{"type":52,"value":18},{"type":46,"tag":156,"props":1316,"children":1317},{"style":182},[1318],{"type":52,"value":201},{"type":46,"tag":156,"props":1320,"children":1321},{"style":182},[1322],{"type":52,"value":206},{"type":46,"tag":156,"props":1324,"children":1325},{"style":182},[1326],{"type":52,"value":190},{"type":46,"tag":156,"props":1328,"children":1329},{"style":235},[1330],{"type":52,"value":948},{"type":46,"tag":156,"props":1332,"children":1333},{"style":182},[1334],{"type":52,"value":1026},{"type":46,"tag":156,"props":1336,"children":1337},{"class":158,"line":334},[1338],{"type":46,"tag":156,"props":1339,"children":1340},{"style":182},[1341],{"type":52,"value":867},{"type":46,"tag":156,"props":1343,"children":1344},{"class":158,"line":343},[1345],{"type":46,"tag":156,"props":1346,"children":1347},{"style":182},[1348],{"type":52,"value":875},{"type":46,"tag":145,"props":1350,"children":1354},{"className":1351,"code":1352,"language":1353,"meta":150,"style":150},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# CI workflows - ALWAYS \"turbo run\"\n- run: turbo run build --affected\n","yaml",[1355],{"type":46,"tag":92,"props":1356,"children":1357},{"__ignoreMap":150},[1358,1366],{"type":46,"tag":156,"props":1359,"children":1360},{"class":158,"line":159},[1361],{"type":46,"tag":156,"props":1362,"children":1363},{"style":163},[1364],{"type":52,"value":1365},"# CI workflows - ALWAYS \"turbo run\"\n",{"type":46,"tag":156,"props":1367,"children":1368},{"class":158,"line":169},[1369,1374,1380,1384],{"type":46,"tag":156,"props":1370,"children":1371},{"style":182},[1372],{"type":52,"value":1373},"-",{"type":46,"tag":156,"props":1375,"children":1377},{"style":1376},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1378],{"type":52,"value":1379}," run",{"type":46,"tag":156,"props":1381,"children":1382},{"style":182},[1383],{"type":52,"value":206},{"type":46,"tag":156,"props":1385,"children":1386},{"style":235},[1387],{"type":52,"value":1388}," turbo run build --affected\n",{"type":46,"tag":55,"props":1390,"children":1391},{},[1392,1405,1407,1413],{"type":46,"tag":71,"props":1393,"children":1394},{},[1395,1397,1403],{"type":52,"value":1396},"The shorthand ",{"type":46,"tag":92,"props":1398,"children":1400},{"className":1399},[],[1401],{"type":52,"value":1402},"turbo \u003Ctasks>",{"type":52,"value":1404}," is ONLY for one-off terminal commands",{"type":52,"value":1406}," typed directly by humans or agents. Never write ",{"type":46,"tag":92,"props":1408,"children":1410},{"className":1409},[],[1411],{"type":52,"value":1412},"turbo build",{"type":52,"value":1414}," into package.json, CI, or scripts.",{"type":46,"tag":61,"props":1416,"children":1418},{"id":1417},"quick-decision-trees",[1419],{"type":52,"value":1420},"Quick Decision Trees",{"type":46,"tag":1422,"props":1423,"children":1425},"h3",{"id":1424},"i-need-to-configure-a-task",[1426],{"type":52,"value":1427},"\"I need to configure a task\"",{"type":46,"tag":145,"props":1429,"children":1433},{"className":1430,"code":1432,"language":52},[1431],"language-text","Configure a task?\n├─ Define task dependencies → references\u002Fconfiguration\u002Ftasks.md\n├─ Lint\u002Fcheck-types (parallel + caching) → Use Transit Nodes pattern (see below)\n├─ Specify build outputs → references\u002Fconfiguration\u002Ftasks.md#outputs\n├─ Handle environment variables → references\u002Fenvironment\u002FRULE.md\n├─ Set up dev\u002Fwatch tasks → references\u002Fconfiguration\u002Ftasks.md#persistent\n├─ Package-specific config → references\u002Fconfiguration\u002FRULE.md#package-configurations\n└─ Global settings (cacheDir, daemon) → references\u002Fconfiguration\u002Fglobal-options.md\n",[1434],{"type":46,"tag":92,"props":1435,"children":1436},{"__ignoreMap":150},[1437],{"type":52,"value":1432},{"type":46,"tag":1422,"props":1439,"children":1441},{"id":1440},"my-cache-isnt-working",[1442],{"type":52,"value":1443},"\"My cache isn't working\"",{"type":46,"tag":145,"props":1445,"children":1448},{"className":1446,"code":1447,"language":52},[1431],"Cache problems?\n├─ Tasks run but outputs not restored → Missing `outputs` key\n├─ Cache misses unexpectedly → references\u002Fcaching\u002Fgotchas.md\n├─ Need to debug hash inputs → Use --summarize or --dry\n├─ Want to skip cache entirely → Use --force or cache: false\n├─ Remote cache not working → references\u002Fcaching\u002Fremote-cache.md\n└─ Environment causing misses → references\u002Fenvironment\u002Fgotchas.md\n",[1449],{"type":46,"tag":92,"props":1450,"children":1451},{"__ignoreMap":150},[1452],{"type":52,"value":1447},{"type":46,"tag":1422,"props":1454,"children":1456},{"id":1455},"i-want-to-run-only-changed-packages",[1457],{"type":52,"value":1458},"\"I want to run only changed packages\"",{"type":46,"tag":145,"props":1460,"children":1463},{"className":1461,"code":1462,"language":52},[1431],"Run only what changed?\n├─ Changed packages + dependents (RECOMMENDED) → turbo run build --affected\n├─ Custom base branch → --affected --affected-base=origin\u002Fdevelop\n├─ Manual git comparison → --filter=...[origin\u002Fmain]\n└─ See all filter options → references\u002Ffiltering\u002FRULE.md\n",[1464],{"type":46,"tag":92,"props":1465,"children":1466},{"__ignoreMap":150},[1467],{"type":52,"value":1462},{"type":46,"tag":55,"props":1469,"children":1470},{},[1471,1482],{"type":46,"tag":71,"props":1472,"children":1473},{},[1474,1480],{"type":46,"tag":92,"props":1475,"children":1477},{"className":1476},[],[1478],{"type":52,"value":1479},"--affected",{"type":52,"value":1481}," is the primary way to run only changed packages.",{"type":52,"value":1483}," It automatically compares against the default branch and includes dependents.",{"type":46,"tag":1422,"props":1485,"children":1487},{"id":1486},"i-want-to-filter-packages",[1488],{"type":52,"value":1489},"\"I want to filter packages\"",{"type":46,"tag":145,"props":1491,"children":1494},{"className":1492,"code":1493,"language":52},[1431],"Filter packages?\n├─ Only changed packages → --affected (see above)\n├─ By package name → --filter=web\n├─ By directory → --filter=.\u002Fapps\u002F*\n├─ Package + dependencies → --filter=web...\n├─ Package + dependents → --filter=...web\n└─ Complex combinations → references\u002Ffiltering\u002Fpatterns.md\n",[1495],{"type":46,"tag":92,"props":1496,"children":1497},{"__ignoreMap":150},[1498],{"type":52,"value":1493},{"type":46,"tag":1422,"props":1500,"children":1502},{"id":1501},"environment-variables-arent-working",[1503],{"type":52,"value":1504},"\"Environment variables aren't working\"",{"type":46,"tag":145,"props":1506,"children":1509},{"className":1507,"code":1508,"language":52},[1431],"Environment issues?\n├─ Vars not available at runtime → Strict mode filtering (default)\n├─ Cache hits with wrong env → Var not in `env` key\n├─ .env changes not causing rebuilds → .env not in `inputs`\n├─ CI variables missing → references\u002Fenvironment\u002Fgotchas.md\n└─ Framework vars (NEXT_PUBLIC_*) → Auto-included via inference\n",[1510],{"type":46,"tag":92,"props":1511,"children":1512},{"__ignoreMap":150},[1513],{"type":52,"value":1508},{"type":46,"tag":1422,"props":1515,"children":1517},{"id":1516},"i-need-to-set-up-ci",[1518],{"type":52,"value":1519},"\"I need to set up CI\"",{"type":46,"tag":145,"props":1521,"children":1524},{"className":1522,"code":1523,"language":52},[1431],"CI setup?\n├─ GitHub Actions → references\u002Fci\u002Fgithub-actions.md\n├─ Vercel deployment → references\u002Fci\u002Fvercel.md\n├─ Remote cache in CI → references\u002Fcaching\u002Fremote-cache.md\n├─ Only build changed packages → --affected flag\n├─ Skip unnecessary builds → turbo-ignore (references\u002Fcli\u002Fcommands.md)\n└─ Skip container setup when no changes → turbo-ignore\n",[1525],{"type":46,"tag":92,"props":1526,"children":1527},{"__ignoreMap":150},[1528],{"type":52,"value":1523},{"type":46,"tag":1422,"props":1530,"children":1532},{"id":1531},"i-want-to-watch-for-changes-during-development",[1533],{"type":52,"value":1534},"\"I want to watch for changes during development\"",{"type":46,"tag":145,"props":1536,"children":1539},{"className":1537,"code":1538,"language":52},[1431],"Watch mode?\n├─ Re-run tasks on change → turbo watch (references\u002Fwatch\u002FRULE.md)\n├─ Dev servers with dependencies → Use `with` key (references\u002Fconfiguration\u002Ftasks.md#with)\n├─ Restart dev server on dep change → Use `interruptible: true`\n└─ Persistent dev tasks → Use `persistent: true`\n",[1540],{"type":46,"tag":92,"props":1541,"children":1542},{"__ignoreMap":150},[1543],{"type":52,"value":1538},{"type":46,"tag":1422,"props":1545,"children":1547},{"id":1546},"i-need-to-createstructure-a-package",[1548],{"type":52,"value":1549},"\"I need to create\u002Fstructure a package\"",{"type":46,"tag":145,"props":1551,"children":1554},{"className":1552,"code":1553,"language":52},[1431],"Package creation\u002Fstructure?\n├─ Create an internal package → references\u002Fbest-practices\u002Fpackages.md\n├─ Repository structure → references\u002Fbest-practices\u002Fstructure.md\n├─ Dependency management → references\u002Fbest-practices\u002Fdependencies.md\n├─ Best practices overview → references\u002Fbest-practices\u002FRULE.md\n├─ JIT vs Compiled packages → references\u002Fbest-practices\u002Fpackages.md#compilation-strategies\n└─ Sharing code between apps → references\u002Fbest-practices\u002FRULE.md#package-types\n",[1555],{"type":46,"tag":92,"props":1556,"children":1557},{"__ignoreMap":150},[1558],{"type":52,"value":1553},{"type":46,"tag":1422,"props":1560,"children":1562},{"id":1561},"how-should-i-structure-my-monorepo",[1563],{"type":52,"value":1564},"\"How should I structure my monorepo?\"",{"type":46,"tag":145,"props":1566,"children":1569},{"className":1567,"code":1568,"language":52},[1431],"Monorepo structure?\n├─ Standard layout (apps\u002F, packages\u002F) → references\u002Fbest-practices\u002FRULE.md\n├─ Package types (apps vs libraries) → references\u002Fbest-practices\u002FRULE.md#package-types\n├─ Creating internal packages → references\u002Fbest-practices\u002Fpackages.md\n├─ TypeScript configuration → references\u002Fbest-practices\u002Fstructure.md#typescript-configuration\n├─ ESLint configuration → references\u002Fbest-practices\u002Fstructure.md#eslint-configuration\n├─ Dependency management → references\u002Fbest-practices\u002Fdependencies.md\n└─ Enforce package boundaries → references\u002Fboundaries\u002FRULE.md\n",[1570],{"type":46,"tag":92,"props":1571,"children":1572},{"__ignoreMap":150},[1573],{"type":52,"value":1568},{"type":46,"tag":1422,"props":1575,"children":1577},{"id":1576},"i-want-to-enforce-architectural-boundaries",[1578],{"type":52,"value":1579},"\"I want to enforce architectural boundaries\"",{"type":46,"tag":145,"props":1581,"children":1584},{"className":1582,"code":1583,"language":52},[1431],"Enforce boundaries?\n├─ Check for violations → turbo boundaries\n├─ Tag packages → references\u002Fboundaries\u002FRULE.md#tags\n├─ Restrict which packages can import others → references\u002Fboundaries\u002FRULE.md#rule-types\n└─ Prevent cross-package file imports → references\u002Fboundaries\u002FRULE.md\n",[1585],{"type":46,"tag":92,"props":1586,"children":1587},{"__ignoreMap":150},[1588],{"type":52,"value":1583},{"type":46,"tag":61,"props":1590,"children":1592},{"id":1591},"critical-anti-patterns",[1593],{"type":52,"value":1594},"Critical Anti-Patterns",{"type":46,"tag":1422,"props":1596,"children":1598},{"id":1597},"using-turbo-shorthand-in-code",[1599,1601,1606],{"type":52,"value":1600},"Using ",{"type":46,"tag":92,"props":1602,"children":1604},{"className":1603},[],[1605],{"type":52,"value":1243},{"type":52,"value":1607}," Shorthand in Code",{"type":46,"tag":55,"props":1609,"children":1610},{},[1611,1621,1623,1629],{"type":46,"tag":71,"props":1612,"children":1613},{},[1614,1619],{"type":46,"tag":92,"props":1615,"children":1617},{"className":1616},[],[1618],{"type":52,"value":1235},{"type":52,"value":1620}," is recommended in package.json scripts and CI pipelines.",{"type":52,"value":1622}," The shorthand ",{"type":46,"tag":92,"props":1624,"children":1626},{"className":1625},[],[1627],{"type":52,"value":1628},"turbo \u003Ctask>",{"type":52,"value":1630}," is intended for interactive terminal use.",{"type":46,"tag":145,"props":1632,"children":1634},{"className":147,"code":1633,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG - using shorthand in package.json\n{\n  \"scripts\": {\n    \"build\": \"turbo build\",\n    \"dev\": \"turbo dev\"\n  }\n}\n\n\u002F\u002F CORRECT\n{\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"dev\": \"turbo run dev\"\n  }\n}\n",[1635],{"type":46,"tag":92,"props":1636,"children":1637},{"__ignoreMap":150},[1638,1646,1653,1676,1711,1744,1751,1758,1765,1773,1781,1805,1841,1874,1882],{"type":46,"tag":156,"props":1639,"children":1640},{"class":158,"line":159},[1641],{"type":46,"tag":156,"props":1642,"children":1643},{"style":163},[1644],{"type":52,"value":1645},"\u002F\u002F WRONG - using shorthand in package.json\n",{"type":46,"tag":156,"props":1647,"children":1648},{"class":158,"line":169},[1649],{"type":46,"tag":156,"props":1650,"children":1651},{"style":182},[1652],{"type":52,"value":637},{"type":46,"tag":156,"props":1654,"children":1655},{"class":158,"line":178},[1656,1660,1664,1668,1672],{"type":46,"tag":156,"props":1657,"children":1658},{"style":182},[1659],{"type":52,"value":645},{"type":46,"tag":156,"props":1661,"children":1662},{"style":193},[1663],{"type":52,"value":196},{"type":46,"tag":156,"props":1665,"children":1666},{"style":182},[1667],{"type":52,"value":201},{"type":46,"tag":156,"props":1669,"children":1670},{"style":182},[1671],{"type":52,"value":206},{"type":46,"tag":156,"props":1673,"children":1674},{"style":182},[1675],{"type":52,"value":663},{"type":46,"tag":156,"props":1677,"children":1678},{"class":158,"line":324},[1679,1683,1687,1691,1695,1699,1703,1707],{"type":46,"tag":156,"props":1680,"children":1681},{"style":182},[1682],{"type":52,"value":671},{"type":46,"tag":156,"props":1684,"children":1685},{"style":218},[1686],{"type":52,"value":18},{"type":46,"tag":156,"props":1688,"children":1689},{"style":182},[1690],{"type":52,"value":201},{"type":46,"tag":156,"props":1692,"children":1693},{"style":182},[1694],{"type":52,"value":206},{"type":46,"tag":156,"props":1696,"children":1697},{"style":182},[1698],{"type":52,"value":190},{"type":46,"tag":156,"props":1700,"children":1701},{"style":235},[1702],{"type":52,"value":1412},{"type":46,"tag":156,"props":1704,"children":1705},{"style":182},[1706],{"type":52,"value":201},{"type":46,"tag":156,"props":1708,"children":1709},{"style":182},[1710],{"type":52,"value":957},{"type":46,"tag":156,"props":1712,"children":1713},{"class":158,"line":334},[1714,1718,1723,1727,1731,1735,1740],{"type":46,"tag":156,"props":1715,"children":1716},{"style":182},[1717],{"type":52,"value":671},{"type":46,"tag":156,"props":1719,"children":1720},{"style":218},[1721],{"type":52,"value":1722},"dev",{"type":46,"tag":156,"props":1724,"children":1725},{"style":182},[1726],{"type":52,"value":201},{"type":46,"tag":156,"props":1728,"children":1729},{"style":182},[1730],{"type":52,"value":206},{"type":46,"tag":156,"props":1732,"children":1733},{"style":182},[1734],{"type":52,"value":190},{"type":46,"tag":156,"props":1736,"children":1737},{"style":235},[1738],{"type":52,"value":1739},"turbo dev",{"type":46,"tag":156,"props":1741,"children":1742},{"style":182},[1743],{"type":52,"value":1026},{"type":46,"tag":156,"props":1745,"children":1746},{"class":158,"line":343},[1747],{"type":46,"tag":156,"props":1748,"children":1749},{"style":182},[1750],{"type":52,"value":867},{"type":46,"tag":156,"props":1752,"children":1753},{"class":158,"line":472},[1754],{"type":46,"tag":156,"props":1755,"children":1756},{"style":182},[1757],{"type":52,"value":875},{"type":46,"tag":156,"props":1759,"children":1760},{"class":158,"line":480},[1761],{"type":46,"tag":156,"props":1762,"children":1763},{"emptyLinePlaceholder":328},[1764],{"type":52,"value":331},{"type":46,"tag":156,"props":1766,"children":1767},{"class":158,"line":489},[1768],{"type":46,"tag":156,"props":1769,"children":1770},{"style":163},[1771],{"type":52,"value":1772},"\u002F\u002F CORRECT\n",{"type":46,"tag":156,"props":1774,"children":1776},{"class":158,"line":1775},10,[1777],{"type":46,"tag":156,"props":1778,"children":1779},{"style":182},[1780],{"type":52,"value":637},{"type":46,"tag":156,"props":1782,"children":1784},{"class":158,"line":1783},11,[1785,1789,1793,1797,1801],{"type":46,"tag":156,"props":1786,"children":1787},{"style":182},[1788],{"type":52,"value":645},{"type":46,"tag":156,"props":1790,"children":1791},{"style":193},[1792],{"type":52,"value":196},{"type":46,"tag":156,"props":1794,"children":1795},{"style":182},[1796],{"type":52,"value":201},{"type":46,"tag":156,"props":1798,"children":1799},{"style":182},[1800],{"type":52,"value":206},{"type":46,"tag":156,"props":1802,"children":1803},{"style":182},[1804],{"type":52,"value":663},{"type":46,"tag":156,"props":1806,"children":1808},{"class":158,"line":1807},12,[1809,1813,1817,1821,1825,1829,1833,1837],{"type":46,"tag":156,"props":1810,"children":1811},{"style":182},[1812],{"type":52,"value":671},{"type":46,"tag":156,"props":1814,"children":1815},{"style":218},[1816],{"type":52,"value":18},{"type":46,"tag":156,"props":1818,"children":1819},{"style":182},[1820],{"type":52,"value":201},{"type":46,"tag":156,"props":1822,"children":1823},{"style":182},[1824],{"type":52,"value":206},{"type":46,"tag":156,"props":1826,"children":1827},{"style":182},[1828],{"type":52,"value":190},{"type":46,"tag":156,"props":1830,"children":1831},{"style":235},[1832],{"type":52,"value":948},{"type":46,"tag":156,"props":1834,"children":1835},{"style":182},[1836],{"type":52,"value":201},{"type":46,"tag":156,"props":1838,"children":1839},{"style":182},[1840],{"type":52,"value":957},{"type":46,"tag":156,"props":1842,"children":1844},{"class":158,"line":1843},13,[1845,1849,1853,1857,1861,1865,1870],{"type":46,"tag":156,"props":1846,"children":1847},{"style":182},[1848],{"type":52,"value":671},{"type":46,"tag":156,"props":1850,"children":1851},{"style":218},[1852],{"type":52,"value":1722},{"type":46,"tag":156,"props":1854,"children":1855},{"style":182},[1856],{"type":52,"value":201},{"type":46,"tag":156,"props":1858,"children":1859},{"style":182},[1860],{"type":52,"value":206},{"type":46,"tag":156,"props":1862,"children":1863},{"style":182},[1864],{"type":52,"value":190},{"type":46,"tag":156,"props":1866,"children":1867},{"style":235},[1868],{"type":52,"value":1869},"turbo run dev",{"type":46,"tag":156,"props":1871,"children":1872},{"style":182},[1873],{"type":52,"value":1026},{"type":46,"tag":156,"props":1875,"children":1877},{"class":158,"line":1876},14,[1878],{"type":46,"tag":156,"props":1879,"children":1880},{"style":182},[1881],{"type":52,"value":867},{"type":46,"tag":156,"props":1883,"children":1885},{"class":158,"line":1884},15,[1886],{"type":46,"tag":156,"props":1887,"children":1888},{"style":182},[1889],{"type":52,"value":875},{"type":46,"tag":145,"props":1891,"children":1893},{"className":1351,"code":1892,"language":1353,"meta":150,"style":150},"# WRONG - using shorthand in CI\n- run: turbo build --affected\n\n# CORRECT\n- run: turbo run build --affected\n",[1894],{"type":46,"tag":92,"props":1895,"children":1896},{"__ignoreMap":150},[1897,1905,1925,1932,1940],{"type":46,"tag":156,"props":1898,"children":1899},{"class":158,"line":159},[1900],{"type":46,"tag":156,"props":1901,"children":1902},{"style":163},[1903],{"type":52,"value":1904},"# WRONG - using shorthand in CI\n",{"type":46,"tag":156,"props":1906,"children":1907},{"class":158,"line":169},[1908,1912,1916,1920],{"type":46,"tag":156,"props":1909,"children":1910},{"style":182},[1911],{"type":52,"value":1373},{"type":46,"tag":156,"props":1913,"children":1914},{"style":1376},[1915],{"type":52,"value":1379},{"type":46,"tag":156,"props":1917,"children":1918},{"style":182},[1919],{"type":52,"value":206},{"type":46,"tag":156,"props":1921,"children":1922},{"style":235},[1923],{"type":52,"value":1924}," turbo build --affected\n",{"type":46,"tag":156,"props":1926,"children":1927},{"class":158,"line":178},[1928],{"type":46,"tag":156,"props":1929,"children":1930},{"emptyLinePlaceholder":328},[1931],{"type":52,"value":331},{"type":46,"tag":156,"props":1933,"children":1934},{"class":158,"line":324},[1935],{"type":46,"tag":156,"props":1936,"children":1937},{"style":163},[1938],{"type":52,"value":1939},"# CORRECT\n",{"type":46,"tag":156,"props":1941,"children":1942},{"class":158,"line":334},[1943,1947,1951,1955],{"type":46,"tag":156,"props":1944,"children":1945},{"style":182},[1946],{"type":52,"value":1373},{"type":46,"tag":156,"props":1948,"children":1949},{"style":1376},[1950],{"type":52,"value":1379},{"type":46,"tag":156,"props":1952,"children":1953},{"style":182},[1954],{"type":52,"value":206},{"type":46,"tag":156,"props":1956,"children":1957},{"style":235},[1958],{"type":52,"value":1388},{"type":46,"tag":1422,"props":1960,"children":1962},{"id":1961},"root-scripts-bypassing-turbo",[1963],{"type":52,"value":1964},"Root Scripts Bypassing Turbo",{"type":46,"tag":55,"props":1966,"children":1967},{},[1968,1969,1974,1976,1981],{"type":52,"value":113},{"type":46,"tag":92,"props":1970,"children":1972},{"className":1971},[],[1973],{"type":52,"value":97},{"type":52,"value":1975}," scripts MUST delegate to ",{"type":46,"tag":92,"props":1977,"children":1979},{"className":1978},[],[1980],{"type":52,"value":1235},{"type":52,"value":1982},", not run tasks directly.",{"type":46,"tag":145,"props":1984,"children":1986},{"className":147,"code":1985,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG - bypasses turbo entirely\n{\n  \"scripts\": {\n    \"build\": \"bun build\",\n    \"dev\": \"bun dev\"\n  }\n}\n\n\u002F\u002F CORRECT - delegates to turbo\n{\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"dev\": \"turbo run dev\"\n  }\n}\n",[1987],{"type":46,"tag":92,"props":1988,"children":1989},{"__ignoreMap":150},[1990,1998,2005,2028,2064,2096,2103,2110,2117,2125,2132,2155,2190,2221,2228],{"type":46,"tag":156,"props":1991,"children":1992},{"class":158,"line":159},[1993],{"type":46,"tag":156,"props":1994,"children":1995},{"style":163},[1996],{"type":52,"value":1997},"\u002F\u002F WRONG - bypasses turbo entirely\n",{"type":46,"tag":156,"props":1999,"children":2000},{"class":158,"line":169},[2001],{"type":46,"tag":156,"props":2002,"children":2003},{"style":182},[2004],{"type":52,"value":637},{"type":46,"tag":156,"props":2006,"children":2007},{"class":158,"line":178},[2008,2012,2016,2020,2024],{"type":46,"tag":156,"props":2009,"children":2010},{"style":182},[2011],{"type":52,"value":645},{"type":46,"tag":156,"props":2013,"children":2014},{"style":193},[2015],{"type":52,"value":196},{"type":46,"tag":156,"props":2017,"children":2018},{"style":182},[2019],{"type":52,"value":201},{"type":46,"tag":156,"props":2021,"children":2022},{"style":182},[2023],{"type":52,"value":206},{"type":46,"tag":156,"props":2025,"children":2026},{"style":182},[2027],{"type":52,"value":663},{"type":46,"tag":156,"props":2029,"children":2030},{"class":158,"line":324},[2031,2035,2039,2043,2047,2051,2056,2060],{"type":46,"tag":156,"props":2032,"children":2033},{"style":182},[2034],{"type":52,"value":671},{"type":46,"tag":156,"props":2036,"children":2037},{"style":218},[2038],{"type":52,"value":18},{"type":46,"tag":156,"props":2040,"children":2041},{"style":182},[2042],{"type":52,"value":201},{"type":46,"tag":156,"props":2044,"children":2045},{"style":182},[2046],{"type":52,"value":206},{"type":46,"tag":156,"props":2048,"children":2049},{"style":182},[2050],{"type":52,"value":190},{"type":46,"tag":156,"props":2052,"children":2053},{"style":235},[2054],{"type":52,"value":2055},"bun build",{"type":46,"tag":156,"props":2057,"children":2058},{"style":182},[2059],{"type":52,"value":201},{"type":46,"tag":156,"props":2061,"children":2062},{"style":182},[2063],{"type":52,"value":957},{"type":46,"tag":156,"props":2065,"children":2066},{"class":158,"line":334},[2067,2071,2075,2079,2083,2087,2092],{"type":46,"tag":156,"props":2068,"children":2069},{"style":182},[2070],{"type":52,"value":671},{"type":46,"tag":156,"props":2072,"children":2073},{"style":218},[2074],{"type":52,"value":1722},{"type":46,"tag":156,"props":2076,"children":2077},{"style":182},[2078],{"type":52,"value":201},{"type":46,"tag":156,"props":2080,"children":2081},{"style":182},[2082],{"type":52,"value":206},{"type":46,"tag":156,"props":2084,"children":2085},{"style":182},[2086],{"type":52,"value":190},{"type":46,"tag":156,"props":2088,"children":2089},{"style":235},[2090],{"type":52,"value":2091},"bun dev",{"type":46,"tag":156,"props":2093,"children":2094},{"style":182},[2095],{"type":52,"value":1026},{"type":46,"tag":156,"props":2097,"children":2098},{"class":158,"line":343},[2099],{"type":46,"tag":156,"props":2100,"children":2101},{"style":182},[2102],{"type":52,"value":867},{"type":46,"tag":156,"props":2104,"children":2105},{"class":158,"line":472},[2106],{"type":46,"tag":156,"props":2107,"children":2108},{"style":182},[2109],{"type":52,"value":875},{"type":46,"tag":156,"props":2111,"children":2112},{"class":158,"line":480},[2113],{"type":46,"tag":156,"props":2114,"children":2115},{"emptyLinePlaceholder":328},[2116],{"type":52,"value":331},{"type":46,"tag":156,"props":2118,"children":2119},{"class":158,"line":489},[2120],{"type":46,"tag":156,"props":2121,"children":2122},{"style":163},[2123],{"type":52,"value":2124},"\u002F\u002F CORRECT - delegates to turbo\n",{"type":46,"tag":156,"props":2126,"children":2127},{"class":158,"line":1775},[2128],{"type":46,"tag":156,"props":2129,"children":2130},{"style":182},[2131],{"type":52,"value":637},{"type":46,"tag":156,"props":2133,"children":2134},{"class":158,"line":1783},[2135,2139,2143,2147,2151],{"type":46,"tag":156,"props":2136,"children":2137},{"style":182},[2138],{"type":52,"value":645},{"type":46,"tag":156,"props":2140,"children":2141},{"style":193},[2142],{"type":52,"value":196},{"type":46,"tag":156,"props":2144,"children":2145},{"style":182},[2146],{"type":52,"value":201},{"type":46,"tag":156,"props":2148,"children":2149},{"style":182},[2150],{"type":52,"value":206},{"type":46,"tag":156,"props":2152,"children":2153},{"style":182},[2154],{"type":52,"value":663},{"type":46,"tag":156,"props":2156,"children":2157},{"class":158,"line":1807},[2158,2162,2166,2170,2174,2178,2182,2186],{"type":46,"tag":156,"props":2159,"children":2160},{"style":182},[2161],{"type":52,"value":671},{"type":46,"tag":156,"props":2163,"children":2164},{"style":218},[2165],{"type":52,"value":18},{"type":46,"tag":156,"props":2167,"children":2168},{"style":182},[2169],{"type":52,"value":201},{"type":46,"tag":156,"props":2171,"children":2172},{"style":182},[2173],{"type":52,"value":206},{"type":46,"tag":156,"props":2175,"children":2176},{"style":182},[2177],{"type":52,"value":190},{"type":46,"tag":156,"props":2179,"children":2180},{"style":235},[2181],{"type":52,"value":948},{"type":46,"tag":156,"props":2183,"children":2184},{"style":182},[2185],{"type":52,"value":201},{"type":46,"tag":156,"props":2187,"children":2188},{"style":182},[2189],{"type":52,"value":957},{"type":46,"tag":156,"props":2191,"children":2192},{"class":158,"line":1843},[2193,2197,2201,2205,2209,2213,2217],{"type":46,"tag":156,"props":2194,"children":2195},{"style":182},[2196],{"type":52,"value":671},{"type":46,"tag":156,"props":2198,"children":2199},{"style":218},[2200],{"type":52,"value":1722},{"type":46,"tag":156,"props":2202,"children":2203},{"style":182},[2204],{"type":52,"value":201},{"type":46,"tag":156,"props":2206,"children":2207},{"style":182},[2208],{"type":52,"value":206},{"type":46,"tag":156,"props":2210,"children":2211},{"style":182},[2212],{"type":52,"value":190},{"type":46,"tag":156,"props":2214,"children":2215},{"style":235},[2216],{"type":52,"value":1869},{"type":46,"tag":156,"props":2218,"children":2219},{"style":182},[2220],{"type":52,"value":1026},{"type":46,"tag":156,"props":2222,"children":2223},{"class":158,"line":1876},[2224],{"type":46,"tag":156,"props":2225,"children":2226},{"style":182},[2227],{"type":52,"value":867},{"type":46,"tag":156,"props":2229,"children":2230},{"class":158,"line":1884},[2231],{"type":46,"tag":156,"props":2232,"children":2233},{"style":182},[2234],{"type":52,"value":875},{"type":46,"tag":1422,"props":2236,"children":2238},{"id":2237},"using-to-chain-turbo-tasks",[2239,2240,2246],{"type":52,"value":1600},{"type":46,"tag":92,"props":2241,"children":2243},{"className":2242},[],[2244],{"type":52,"value":2245},"&&",{"type":52,"value":2247}," to Chain Turbo Tasks",{"type":46,"tag":55,"props":2249,"children":2250},{},[2251,2253,2258],{"type":52,"value":2252},"Don't chain turbo tasks with ",{"type":46,"tag":92,"props":2254,"children":2256},{"className":2255},[],[2257],{"type":52,"value":2245},{"type":52,"value":2259},". Let turbo orchestrate.",{"type":46,"tag":145,"props":2261,"children":2263},{"className":147,"code":2262,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG - turbo task not using turbo run\n{\n  \"scripts\": {\n    \"changeset:publish\": \"bun build && changeset publish\"\n  }\n}\n\n\u002F\u002F CORRECT\n{\n  \"scripts\": {\n    \"changeset:publish\": \"turbo run build && changeset publish\"\n  }\n}\n",[2264],{"type":46,"tag":92,"props":2265,"children":2266},{"__ignoreMap":150},[2267,2275,2282,2305,2338,2345,2352,2359,2366,2373,2396,2428,2435],{"type":46,"tag":156,"props":2268,"children":2269},{"class":158,"line":159},[2270],{"type":46,"tag":156,"props":2271,"children":2272},{"style":163},[2273],{"type":52,"value":2274},"\u002F\u002F WRONG - turbo task not using turbo run\n",{"type":46,"tag":156,"props":2276,"children":2277},{"class":158,"line":169},[2278],{"type":46,"tag":156,"props":2279,"children":2280},{"style":182},[2281],{"type":52,"value":637},{"type":46,"tag":156,"props":2283,"children":2284},{"class":158,"line":178},[2285,2289,2293,2297,2301],{"type":46,"tag":156,"props":2286,"children":2287},{"style":182},[2288],{"type":52,"value":645},{"type":46,"tag":156,"props":2290,"children":2291},{"style":193},[2292],{"type":52,"value":196},{"type":46,"tag":156,"props":2294,"children":2295},{"style":182},[2296],{"type":52,"value":201},{"type":46,"tag":156,"props":2298,"children":2299},{"style":182},[2300],{"type":52,"value":206},{"type":46,"tag":156,"props":2302,"children":2303},{"style":182},[2304],{"type":52,"value":663},{"type":46,"tag":156,"props":2306,"children":2307},{"class":158,"line":324},[2308,2312,2317,2321,2325,2329,2334],{"type":46,"tag":156,"props":2309,"children":2310},{"style":182},[2311],{"type":52,"value":671},{"type":46,"tag":156,"props":2313,"children":2314},{"style":218},[2315],{"type":52,"value":2316},"changeset:publish",{"type":46,"tag":156,"props":2318,"children":2319},{"style":182},[2320],{"type":52,"value":201},{"type":46,"tag":156,"props":2322,"children":2323},{"style":182},[2324],{"type":52,"value":206},{"type":46,"tag":156,"props":2326,"children":2327},{"style":182},[2328],{"type":52,"value":190},{"type":46,"tag":156,"props":2330,"children":2331},{"style":235},[2332],{"type":52,"value":2333},"bun build && changeset publish",{"type":46,"tag":156,"props":2335,"children":2336},{"style":182},[2337],{"type":52,"value":1026},{"type":46,"tag":156,"props":2339,"children":2340},{"class":158,"line":334},[2341],{"type":46,"tag":156,"props":2342,"children":2343},{"style":182},[2344],{"type":52,"value":867},{"type":46,"tag":156,"props":2346,"children":2347},{"class":158,"line":343},[2348],{"type":46,"tag":156,"props":2349,"children":2350},{"style":182},[2351],{"type":52,"value":875},{"type":46,"tag":156,"props":2353,"children":2354},{"class":158,"line":472},[2355],{"type":46,"tag":156,"props":2356,"children":2357},{"emptyLinePlaceholder":328},[2358],{"type":52,"value":331},{"type":46,"tag":156,"props":2360,"children":2361},{"class":158,"line":480},[2362],{"type":46,"tag":156,"props":2363,"children":2364},{"style":163},[2365],{"type":52,"value":1772},{"type":46,"tag":156,"props":2367,"children":2368},{"class":158,"line":489},[2369],{"type":46,"tag":156,"props":2370,"children":2371},{"style":182},[2372],{"type":52,"value":637},{"type":46,"tag":156,"props":2374,"children":2375},{"class":158,"line":1775},[2376,2380,2384,2388,2392],{"type":46,"tag":156,"props":2377,"children":2378},{"style":182},[2379],{"type":52,"value":645},{"type":46,"tag":156,"props":2381,"children":2382},{"style":193},[2383],{"type":52,"value":196},{"type":46,"tag":156,"props":2385,"children":2386},{"style":182},[2387],{"type":52,"value":201},{"type":46,"tag":156,"props":2389,"children":2390},{"style":182},[2391],{"type":52,"value":206},{"type":46,"tag":156,"props":2393,"children":2394},{"style":182},[2395],{"type":52,"value":663},{"type":46,"tag":156,"props":2397,"children":2398},{"class":158,"line":1783},[2399,2403,2407,2411,2415,2419,2424],{"type":46,"tag":156,"props":2400,"children":2401},{"style":182},[2402],{"type":52,"value":671},{"type":46,"tag":156,"props":2404,"children":2405},{"style":218},[2406],{"type":52,"value":2316},{"type":46,"tag":156,"props":2408,"children":2409},{"style":182},[2410],{"type":52,"value":201},{"type":46,"tag":156,"props":2412,"children":2413},{"style":182},[2414],{"type":52,"value":206},{"type":46,"tag":156,"props":2416,"children":2417},{"style":182},[2418],{"type":52,"value":190},{"type":46,"tag":156,"props":2420,"children":2421},{"style":235},[2422],{"type":52,"value":2423},"turbo run build && changeset publish",{"type":46,"tag":156,"props":2425,"children":2426},{"style":182},[2427],{"type":52,"value":1026},{"type":46,"tag":156,"props":2429,"children":2430},{"class":158,"line":1807},[2431],{"type":46,"tag":156,"props":2432,"children":2433},{"style":182},[2434],{"type":52,"value":867},{"type":46,"tag":156,"props":2436,"children":2437},{"class":158,"line":1843},[2438],{"type":46,"tag":156,"props":2439,"children":2440},{"style":182},[2441],{"type":52,"value":875},{"type":46,"tag":1422,"props":2443,"children":2445},{"id":2444},"prebuild-scripts-that-manually-build-dependencies",[2446,2452],{"type":46,"tag":92,"props":2447,"children":2449},{"className":2448},[],[2450],{"type":52,"value":2451},"prebuild",{"type":52,"value":2453}," Scripts That Manually Build Dependencies",{"type":46,"tag":55,"props":2455,"children":2456},{},[2457,2459,2464],{"type":52,"value":2458},"Scripts like ",{"type":46,"tag":92,"props":2460,"children":2462},{"className":2461},[],[2463],{"type":52,"value":2451},{"type":52,"value":2465}," that manually build other packages bypass Turborepo's dependency graph.",{"type":46,"tag":145,"props":2467,"children":2469},{"className":147,"code":2468,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG - manually building dependencies\n{\n  \"scripts\": {\n    \"prebuild\": \"cd ..\u002F..\u002Fpackages\u002Ftypes && bun run build && cd ..\u002Futils && bun run build\",\n    \"build\": \"next build\"\n  }\n}\n",[2470],{"type":46,"tag":92,"props":2471,"children":2472},{"__ignoreMap":150},[2473,2481,2488,2511,2547,2578,2585],{"type":46,"tag":156,"props":2474,"children":2475},{"class":158,"line":159},[2476],{"type":46,"tag":156,"props":2477,"children":2478},{"style":163},[2479],{"type":52,"value":2480},"\u002F\u002F WRONG - manually building dependencies\n",{"type":46,"tag":156,"props":2482,"children":2483},{"class":158,"line":169},[2484],{"type":46,"tag":156,"props":2485,"children":2486},{"style":182},[2487],{"type":52,"value":637},{"type":46,"tag":156,"props":2489,"children":2490},{"class":158,"line":178},[2491,2495,2499,2503,2507],{"type":46,"tag":156,"props":2492,"children":2493},{"style":182},[2494],{"type":52,"value":645},{"type":46,"tag":156,"props":2496,"children":2497},{"style":193},[2498],{"type":52,"value":196},{"type":46,"tag":156,"props":2500,"children":2501},{"style":182},[2502],{"type":52,"value":201},{"type":46,"tag":156,"props":2504,"children":2505},{"style":182},[2506],{"type":52,"value":206},{"type":46,"tag":156,"props":2508,"children":2509},{"style":182},[2510],{"type":52,"value":663},{"type":46,"tag":156,"props":2512,"children":2513},{"class":158,"line":324},[2514,2518,2522,2526,2530,2534,2539,2543],{"type":46,"tag":156,"props":2515,"children":2516},{"style":182},[2517],{"type":52,"value":671},{"type":46,"tag":156,"props":2519,"children":2520},{"style":218},[2521],{"type":52,"value":2451},{"type":46,"tag":156,"props":2523,"children":2524},{"style":182},[2525],{"type":52,"value":201},{"type":46,"tag":156,"props":2527,"children":2528},{"style":182},[2529],{"type":52,"value":206},{"type":46,"tag":156,"props":2531,"children":2532},{"style":182},[2533],{"type":52,"value":190},{"type":46,"tag":156,"props":2535,"children":2536},{"style":235},[2537],{"type":52,"value":2538},"cd ..\u002F..\u002Fpackages\u002Ftypes && bun run build && cd ..\u002Futils && bun run build",{"type":46,"tag":156,"props":2540,"children":2541},{"style":182},[2542],{"type":52,"value":201},{"type":46,"tag":156,"props":2544,"children":2545},{"style":182},[2546],{"type":52,"value":957},{"type":46,"tag":156,"props":2548,"children":2549},{"class":158,"line":334},[2550,2554,2558,2562,2566,2570,2574],{"type":46,"tag":156,"props":2551,"children":2552},{"style":182},[2553],{"type":52,"value":671},{"type":46,"tag":156,"props":2555,"children":2556},{"style":218},[2557],{"type":52,"value":18},{"type":46,"tag":156,"props":2559,"children":2560},{"style":182},[2561],{"type":52,"value":201},{"type":46,"tag":156,"props":2563,"children":2564},{"style":182},[2565],{"type":52,"value":206},{"type":46,"tag":156,"props":2567,"children":2568},{"style":182},[2569],{"type":52,"value":190},{"type":46,"tag":156,"props":2571,"children":2572},{"style":235},[2573],{"type":52,"value":238},{"type":46,"tag":156,"props":2575,"children":2576},{"style":182},[2577],{"type":52,"value":1026},{"type":46,"tag":156,"props":2579,"children":2580},{"class":158,"line":343},[2581],{"type":46,"tag":156,"props":2582,"children":2583},{"style":182},[2584],{"type":52,"value":867},{"type":46,"tag":156,"props":2586,"children":2587},{"class":158,"line":472},[2588],{"type":46,"tag":156,"props":2589,"children":2590},{"style":182},[2591],{"type":52,"value":875},{"type":46,"tag":55,"props":2593,"children":2594},{},[2595],{"type":46,"tag":71,"props":2596,"children":2597},{},[2598],{"type":52,"value":2599},"However, the fix depends on whether workspace dependencies are declared:",{"type":46,"tag":82,"props":2601,"children":2602},{},[2603,2636],{"type":46,"tag":86,"props":2604,"children":2605},{},[2606,2611,2613,2619,2621,2626,2628,2634],{"type":46,"tag":71,"props":2607,"children":2608},{},[2609],{"type":52,"value":2610},"If dependencies ARE declared",{"type":52,"value":2612}," (e.g., ",{"type":46,"tag":92,"props":2614,"children":2616},{"className":2615},[],[2617],{"type":52,"value":2618},"\"@repo\u002Ftypes\": \"workspace:*\"",{"type":52,"value":2620}," in package.json), remove the ",{"type":46,"tag":92,"props":2622,"children":2624},{"className":2623},[],[2625],{"type":52,"value":2451},{"type":52,"value":2627}," script. Turbo's ",{"type":46,"tag":92,"props":2629,"children":2631},{"className":2630},[],[2632],{"type":52,"value":2633},"dependsOn: [\"^build\"]",{"type":52,"value":2635}," handles this automatically.",{"type":46,"tag":86,"props":2637,"children":2638},{},[2639,2644,2646,2651,2653,2658,2660],{"type":46,"tag":71,"props":2640,"children":2641},{},[2642],{"type":52,"value":2643},"If dependencies are NOT declared",{"type":52,"value":2645},", the ",{"type":46,"tag":92,"props":2647,"children":2649},{"className":2648},[],[2650],{"type":52,"value":2451},{"type":52,"value":2652}," exists because ",{"type":46,"tag":92,"props":2654,"children":2656},{"className":2655},[],[2657],{"type":52,"value":719},{"type":52,"value":2659}," won't trigger without a dependency relationship. The fix is to:",{"type":46,"tag":2661,"props":2662,"children":2663},"ul",{},[2664,2674],{"type":46,"tag":86,"props":2665,"children":2666},{},[2667,2669],{"type":52,"value":2668},"Add the dependency to package.json: ",{"type":46,"tag":92,"props":2670,"children":2672},{"className":2671},[],[2673],{"type":52,"value":2618},{"type":46,"tag":86,"props":2675,"children":2676},{},[2677,2679,2684],{"type":52,"value":2678},"Then remove the ",{"type":46,"tag":92,"props":2680,"children":2682},{"className":2681},[],[2683],{"type":52,"value":2451},{"type":52,"value":2685}," script",{"type":46,"tag":145,"props":2687,"children":2689},{"className":147,"code":2688,"language":149,"meta":150,"style":150},"\u002F\u002F CORRECT - declare dependency, let turbo handle build order\n\u002F\u002F package.json\n{\n  \"dependencies\": {\n    \"@repo\u002Ftypes\": \"workspace:*\",\n    \"@repo\u002Futils\": \"workspace:*\"\n  },\n  \"scripts\": {\n    \"build\": \"next build\"\n  }\n}\n\n\u002F\u002F turbo.json\n{\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"]\n    }\n  }\n}\n",[2690],{"type":46,"tag":92,"props":2691,"children":2692},{"__ignoreMap":150},[2693,2701,2709,2716,2740,2777,2809,2817,2840,2871,2878,2885,2892,2900,2907,2930,2954,2995,3004,3012],{"type":46,"tag":156,"props":2694,"children":2695},{"class":158,"line":159},[2696],{"type":46,"tag":156,"props":2697,"children":2698},{"style":163},[2699],{"type":52,"value":2700},"\u002F\u002F CORRECT - declare dependency, let turbo handle build order\n",{"type":46,"tag":156,"props":2702,"children":2703},{"class":158,"line":169},[2704],{"type":46,"tag":156,"props":2705,"children":2706},{"style":163},[2707],{"type":52,"value":2708},"\u002F\u002F package.json\n",{"type":46,"tag":156,"props":2710,"children":2711},{"class":158,"line":178},[2712],{"type":46,"tag":156,"props":2713,"children":2714},{"style":182},[2715],{"type":52,"value":637},{"type":46,"tag":156,"props":2717,"children":2718},{"class":158,"line":324},[2719,2723,2728,2732,2736],{"type":46,"tag":156,"props":2720,"children":2721},{"style":182},[2722],{"type":52,"value":645},{"type":46,"tag":156,"props":2724,"children":2725},{"style":193},[2726],{"type":52,"value":2727},"dependencies",{"type":46,"tag":156,"props":2729,"children":2730},{"style":182},[2731],{"type":52,"value":201},{"type":46,"tag":156,"props":2733,"children":2734},{"style":182},[2735],{"type":52,"value":206},{"type":46,"tag":156,"props":2737,"children":2738},{"style":182},[2739],{"type":52,"value":663},{"type":46,"tag":156,"props":2741,"children":2742},{"class":158,"line":334},[2743,2747,2752,2756,2760,2764,2769,2773],{"type":46,"tag":156,"props":2744,"children":2745},{"style":182},[2746],{"type":52,"value":671},{"type":46,"tag":156,"props":2748,"children":2749},{"style":218},[2750],{"type":52,"value":2751},"@repo\u002Ftypes",{"type":46,"tag":156,"props":2753,"children":2754},{"style":182},[2755],{"type":52,"value":201},{"type":46,"tag":156,"props":2757,"children":2758},{"style":182},[2759],{"type":52,"value":206},{"type":46,"tag":156,"props":2761,"children":2762},{"style":182},[2763],{"type":52,"value":190},{"type":46,"tag":156,"props":2765,"children":2766},{"style":235},[2767],{"type":52,"value":2768},"workspace:*",{"type":46,"tag":156,"props":2770,"children":2771},{"style":182},[2772],{"type":52,"value":201},{"type":46,"tag":156,"props":2774,"children":2775},{"style":182},[2776],{"type":52,"value":957},{"type":46,"tag":156,"props":2778,"children":2779},{"class":158,"line":343},[2780,2784,2789,2793,2797,2801,2805],{"type":46,"tag":156,"props":2781,"children":2782},{"style":182},[2783],{"type":52,"value":671},{"type":46,"tag":156,"props":2785,"children":2786},{"style":218},[2787],{"type":52,"value":2788},"@repo\u002Futils",{"type":46,"tag":156,"props":2790,"children":2791},{"style":182},[2792],{"type":52,"value":201},{"type":46,"tag":156,"props":2794,"children":2795},{"style":182},[2796],{"type":52,"value":206},{"type":46,"tag":156,"props":2798,"children":2799},{"style":182},[2800],{"type":52,"value":190},{"type":46,"tag":156,"props":2802,"children":2803},{"style":235},[2804],{"type":52,"value":2768},{"type":46,"tag":156,"props":2806,"children":2807},{"style":182},[2808],{"type":52,"value":1026},{"type":46,"tag":156,"props":2810,"children":2811},{"class":158,"line":472},[2812],{"type":46,"tag":156,"props":2813,"children":2814},{"style":182},[2815],{"type":52,"value":2816},"  },\n",{"type":46,"tag":156,"props":2818,"children":2819},{"class":158,"line":480},[2820,2824,2828,2832,2836],{"type":46,"tag":156,"props":2821,"children":2822},{"style":182},[2823],{"type":52,"value":645},{"type":46,"tag":156,"props":2825,"children":2826},{"style":193},[2827],{"type":52,"value":196},{"type":46,"tag":156,"props":2829,"children":2830},{"style":182},[2831],{"type":52,"value":201},{"type":46,"tag":156,"props":2833,"children":2834},{"style":182},[2835],{"type":52,"value":206},{"type":46,"tag":156,"props":2837,"children":2838},{"style":182},[2839],{"type":52,"value":663},{"type":46,"tag":156,"props":2841,"children":2842},{"class":158,"line":489},[2843,2847,2851,2855,2859,2863,2867],{"type":46,"tag":156,"props":2844,"children":2845},{"style":182},[2846],{"type":52,"value":671},{"type":46,"tag":156,"props":2848,"children":2849},{"style":218},[2850],{"type":52,"value":18},{"type":46,"tag":156,"props":2852,"children":2853},{"style":182},[2854],{"type":52,"value":201},{"type":46,"tag":156,"props":2856,"children":2857},{"style":182},[2858],{"type":52,"value":206},{"type":46,"tag":156,"props":2860,"children":2861},{"style":182},[2862],{"type":52,"value":190},{"type":46,"tag":156,"props":2864,"children":2865},{"style":235},[2866],{"type":52,"value":238},{"type":46,"tag":156,"props":2868,"children":2869},{"style":182},[2870],{"type":52,"value":1026},{"type":46,"tag":156,"props":2872,"children":2873},{"class":158,"line":1775},[2874],{"type":46,"tag":156,"props":2875,"children":2876},{"style":182},[2877],{"type":52,"value":867},{"type":46,"tag":156,"props":2879,"children":2880},{"class":158,"line":1783},[2881],{"type":46,"tag":156,"props":2882,"children":2883},{"style":182},[2884],{"type":52,"value":875},{"type":46,"tag":156,"props":2886,"children":2887},{"class":158,"line":1807},[2888],{"type":46,"tag":156,"props":2889,"children":2890},{"emptyLinePlaceholder":328},[2891],{"type":52,"value":331},{"type":46,"tag":156,"props":2893,"children":2894},{"class":158,"line":1843},[2895],{"type":46,"tag":156,"props":2896,"children":2897},{"style":163},[2898],{"type":52,"value":2899},"\u002F\u002F turbo.json\n",{"type":46,"tag":156,"props":2901,"children":2902},{"class":158,"line":1876},[2903],{"type":46,"tag":156,"props":2904,"children":2905},{"style":182},[2906],{"type":52,"value":637},{"type":46,"tag":156,"props":2908,"children":2909},{"class":158,"line":1884},[2910,2914,2918,2922,2926],{"type":46,"tag":156,"props":2911,"children":2912},{"style":182},[2913],{"type":52,"value":645},{"type":46,"tag":156,"props":2915,"children":2916},{"style":193},[2917],{"type":52,"value":650},{"type":46,"tag":156,"props":2919,"children":2920},{"style":182},[2921],{"type":52,"value":201},{"type":46,"tag":156,"props":2923,"children":2924},{"style":182},[2925],{"type":52,"value":206},{"type":46,"tag":156,"props":2927,"children":2928},{"style":182},[2929],{"type":52,"value":663},{"type":46,"tag":156,"props":2931,"children":2933},{"class":158,"line":2932},16,[2934,2938,2942,2946,2950],{"type":46,"tag":156,"props":2935,"children":2936},{"style":182},[2937],{"type":52,"value":671},{"type":46,"tag":156,"props":2939,"children":2940},{"style":218},[2941],{"type":52,"value":18},{"type":46,"tag":156,"props":2943,"children":2944},{"style":182},[2945],{"type":52,"value":201},{"type":46,"tag":156,"props":2947,"children":2948},{"style":182},[2949],{"type":52,"value":206},{"type":46,"tag":156,"props":2951,"children":2952},{"style":182},[2953],{"type":52,"value":663},{"type":46,"tag":156,"props":2955,"children":2956},{"class":158,"line":28},[2957,2962,2966,2970,2974,2978,2982,2986,2990],{"type":46,"tag":156,"props":2958,"children":2959},{"style":182},[2960],{"type":52,"value":2961},"      \"",{"type":46,"tag":156,"props":2963,"children":2964},{"style":694},[2965],{"type":52,"value":697},{"type":46,"tag":156,"props":2967,"children":2968},{"style":182},[2969],{"type":52,"value":201},{"type":46,"tag":156,"props":2971,"children":2972},{"style":182},[2973],{"type":52,"value":206},{"type":46,"tag":156,"props":2975,"children":2976},{"style":182},[2977],{"type":52,"value":710},{"type":46,"tag":156,"props":2979,"children":2980},{"style":182},[2981],{"type":52,"value":201},{"type":46,"tag":156,"props":2983,"children":2984},{"style":235},[2985],{"type":52,"value":719},{"type":46,"tag":156,"props":2987,"children":2988},{"style":182},[2989],{"type":52,"value":201},{"type":46,"tag":156,"props":2991,"children":2992},{"style":182},[2993],{"type":52,"value":2994},"]\n",{"type":46,"tag":156,"props":2996,"children":2998},{"class":158,"line":2997},18,[2999],{"type":46,"tag":156,"props":3000,"children":3001},{"style":182},[3002],{"type":52,"value":3003},"    }\n",{"type":46,"tag":156,"props":3005,"children":3007},{"class":158,"line":3006},19,[3008],{"type":46,"tag":156,"props":3009,"children":3010},{"style":182},[3011],{"type":52,"value":867},{"type":46,"tag":156,"props":3013,"children":3015},{"class":158,"line":3014},20,[3016],{"type":46,"tag":156,"props":3017,"children":3018},{"style":182},[3019],{"type":52,"value":875},{"type":46,"tag":55,"props":3021,"children":3022},{},[3023,3028,3030,3035],{"type":46,"tag":71,"props":3024,"children":3025},{},[3026],{"type":52,"value":3027},"Key insight:",{"type":52,"value":3029}," ",{"type":46,"tag":92,"props":3031,"children":3033},{"className":3032},[],[3034],{"type":52,"value":719},{"type":52,"value":3036}," only runs build in packages listed as dependencies. No dependency declaration = no automatic build ordering.",{"type":46,"tag":1422,"props":3038,"children":3040},{"id":3039},"overly-broad-globaldependencies",[3041,3043],{"type":52,"value":3042},"Overly Broad ",{"type":46,"tag":92,"props":3044,"children":3046},{"className":3045},[],[3047],{"type":52,"value":3048},"globalDependencies",{"type":46,"tag":55,"props":3050,"children":3051},{},[3052,3057],{"type":46,"tag":92,"props":3053,"children":3055},{"className":3054},[],[3056],{"type":52,"value":3048},{"type":52,"value":3058}," affects ALL tasks in ALL packages. Be specific.",{"type":46,"tag":145,"props":3060,"children":3062},{"className":147,"code":3061,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG - heavy hammer, affects all hashes\n{\n  \"globalDependencies\": [\"**\u002F.env.*local\"]\n}\n\n\u002F\u002F BETTER - move to task-level inputs\n{\n  \"globalDependencies\": [\".env\"],\n  \"tasks\": {\n    \"build\": {\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"],\n      \"outputs\": [\"dist\u002F**\"]\n    }\n  }\n}\n",[3063],{"type":46,"tag":92,"props":3064,"children":3065},{"__ignoreMap":150},[3066,3074,3081,3121,3128,3135,3143,3150,3191,3214,3237,3295,3334,3341,3348],{"type":46,"tag":156,"props":3067,"children":3068},{"class":158,"line":159},[3069],{"type":46,"tag":156,"props":3070,"children":3071},{"style":163},[3072],{"type":52,"value":3073},"\u002F\u002F WRONG - heavy hammer, affects all hashes\n",{"type":46,"tag":156,"props":3075,"children":3076},{"class":158,"line":169},[3077],{"type":46,"tag":156,"props":3078,"children":3079},{"style":182},[3080],{"type":52,"value":637},{"type":46,"tag":156,"props":3082,"children":3083},{"class":158,"line":178},[3084,3088,3092,3096,3100,3104,3108,3113,3117],{"type":46,"tag":156,"props":3085,"children":3086},{"style":182},[3087],{"type":52,"value":645},{"type":46,"tag":156,"props":3089,"children":3090},{"style":193},[3091],{"type":52,"value":3048},{"type":46,"tag":156,"props":3093,"children":3094},{"style":182},[3095],{"type":52,"value":201},{"type":46,"tag":156,"props":3097,"children":3098},{"style":182},[3099],{"type":52,"value":206},{"type":46,"tag":156,"props":3101,"children":3102},{"style":182},[3103],{"type":52,"value":710},{"type":46,"tag":156,"props":3105,"children":3106},{"style":182},[3107],{"type":52,"value":201},{"type":46,"tag":156,"props":3109,"children":3110},{"style":235},[3111],{"type":52,"value":3112},"**\u002F.env.*local",{"type":46,"tag":156,"props":3114,"children":3115},{"style":182},[3116],{"type":52,"value":201},{"type":46,"tag":156,"props":3118,"children":3119},{"style":182},[3120],{"type":52,"value":2994},{"type":46,"tag":156,"props":3122,"children":3123},{"class":158,"line":324},[3124],{"type":46,"tag":156,"props":3125,"children":3126},{"style":182},[3127],{"type":52,"value":875},{"type":46,"tag":156,"props":3129,"children":3130},{"class":158,"line":334},[3131],{"type":46,"tag":156,"props":3132,"children":3133},{"emptyLinePlaceholder":328},[3134],{"type":52,"value":331},{"type":46,"tag":156,"props":3136,"children":3137},{"class":158,"line":343},[3138],{"type":46,"tag":156,"props":3139,"children":3140},{"style":163},[3141],{"type":52,"value":3142},"\u002F\u002F BETTER - move to task-level inputs\n",{"type":46,"tag":156,"props":3144,"children":3145},{"class":158,"line":472},[3146],{"type":46,"tag":156,"props":3147,"children":3148},{"style":182},[3149],{"type":52,"value":637},{"type":46,"tag":156,"props":3151,"children":3152},{"class":158,"line":480},[3153,3157,3161,3165,3169,3173,3177,3182,3186],{"type":46,"tag":156,"props":3154,"children":3155},{"style":182},[3156],{"type":52,"value":645},{"type":46,"tag":156,"props":3158,"children":3159},{"style":193},[3160],{"type":52,"value":3048},{"type":46,"tag":156,"props":3162,"children":3163},{"style":182},[3164],{"type":52,"value":201},{"type":46,"tag":156,"props":3166,"children":3167},{"style":182},[3168],{"type":52,"value":206},{"type":46,"tag":156,"props":3170,"children":3171},{"style":182},[3172],{"type":52,"value":710},{"type":46,"tag":156,"props":3174,"children":3175},{"style":182},[3176],{"type":52,"value":201},{"type":46,"tag":156,"props":3178,"children":3179},{"style":235},[3180],{"type":52,"value":3181},".env",{"type":46,"tag":156,"props":3183,"children":3184},{"style":182},[3185],{"type":52,"value":201},{"type":46,"tag":156,"props":3187,"children":3188},{"style":182},[3189],{"type":52,"value":3190},"],\n",{"type":46,"tag":156,"props":3192,"children":3193},{"class":158,"line":489},[3194,3198,3202,3206,3210],{"type":46,"tag":156,"props":3195,"children":3196},{"style":182},[3197],{"type":52,"value":645},{"type":46,"tag":156,"props":3199,"children":3200},{"style":193},[3201],{"type":52,"value":650},{"type":46,"tag":156,"props":3203,"children":3204},{"style":182},[3205],{"type":52,"value":201},{"type":46,"tag":156,"props":3207,"children":3208},{"style":182},[3209],{"type":52,"value":206},{"type":46,"tag":156,"props":3211,"children":3212},{"style":182},[3213],{"type":52,"value":663},{"type":46,"tag":156,"props":3215,"children":3216},{"class":158,"line":1775},[3217,3221,3225,3229,3233],{"type":46,"tag":156,"props":3218,"children":3219},{"style":182},[3220],{"type":52,"value":671},{"type":46,"tag":156,"props":3222,"children":3223},{"style":218},[3224],{"type":52,"value":18},{"type":46,"tag":156,"props":3226,"children":3227},{"style":182},[3228],{"type":52,"value":201},{"type":46,"tag":156,"props":3230,"children":3231},{"style":182},[3232],{"type":52,"value":206},{"type":46,"tag":156,"props":3234,"children":3235},{"style":182},[3236],{"type":52,"value":663},{"type":46,"tag":156,"props":3238,"children":3239},{"class":158,"line":1783},[3240,3244,3249,3253,3257,3261,3265,3270,3274,3278,3282,3287,3291],{"type":46,"tag":156,"props":3241,"children":3242},{"style":182},[3243],{"type":52,"value":2961},{"type":46,"tag":156,"props":3245,"children":3246},{"style":694},[3247],{"type":52,"value":3248},"inputs",{"type":46,"tag":156,"props":3250,"children":3251},{"style":182},[3252],{"type":52,"value":201},{"type":46,"tag":156,"props":3254,"children":3255},{"style":182},[3256],{"type":52,"value":206},{"type":46,"tag":156,"props":3258,"children":3259},{"style":182},[3260],{"type":52,"value":710},{"type":46,"tag":156,"props":3262,"children":3263},{"style":182},[3264],{"type":52,"value":201},{"type":46,"tag":156,"props":3266,"children":3267},{"style":235},[3268],{"type":52,"value":3269},"$TURBO_DEFAULT$",{"type":46,"tag":156,"props":3271,"children":3272},{"style":182},[3273],{"type":52,"value":201},{"type":46,"tag":156,"props":3275,"children":3276},{"style":182},[3277],{"type":52,"value":247},{"type":46,"tag":156,"props":3279,"children":3280},{"style":182},[3281],{"type":52,"value":190},{"type":46,"tag":156,"props":3283,"children":3284},{"style":235},[3285],{"type":52,"value":3286},".env*",{"type":46,"tag":156,"props":3288,"children":3289},{"style":182},[3290],{"type":52,"value":201},{"type":46,"tag":156,"props":3292,"children":3293},{"style":182},[3294],{"type":52,"value":3190},{"type":46,"tag":156,"props":3296,"children":3297},{"class":158,"line":1807},[3298,3302,3306,3310,3314,3318,3322,3326,3330],{"type":46,"tag":156,"props":3299,"children":3300},{"style":182},[3301],{"type":52,"value":2961},{"type":46,"tag":156,"props":3303,"children":3304},{"style":694},[3305],{"type":52,"value":737},{"type":46,"tag":156,"props":3307,"children":3308},{"style":182},[3309],{"type":52,"value":201},{"type":46,"tag":156,"props":3311,"children":3312},{"style":182},[3313],{"type":52,"value":206},{"type":46,"tag":156,"props":3315,"children":3316},{"style":182},[3317],{"type":52,"value":710},{"type":46,"tag":156,"props":3319,"children":3320},{"style":182},[3321],{"type":52,"value":201},{"type":46,"tag":156,"props":3323,"children":3324},{"style":235},[3325],{"type":52,"value":758},{"type":46,"tag":156,"props":3327,"children":3328},{"style":182},[3329],{"type":52,"value":201},{"type":46,"tag":156,"props":3331,"children":3332},{"style":182},[3333],{"type":52,"value":2994},{"type":46,"tag":156,"props":3335,"children":3336},{"class":158,"line":1843},[3337],{"type":46,"tag":156,"props":3338,"children":3339},{"style":182},[3340],{"type":52,"value":3003},{"type":46,"tag":156,"props":3342,"children":3343},{"class":158,"line":1876},[3344],{"type":46,"tag":156,"props":3345,"children":3346},{"style":182},[3347],{"type":52,"value":867},{"type":46,"tag":156,"props":3349,"children":3350},{"class":158,"line":1884},[3351],{"type":46,"tag":156,"props":3352,"children":3353},{"style":182},[3354],{"type":52,"value":875},{"type":46,"tag":1422,"props":3356,"children":3358},{"id":3357},"repetitive-task-configuration",[3359],{"type":52,"value":3360},"Repetitive Task Configuration",{"type":46,"tag":55,"props":3362,"children":3363},{},[3364],{"type":52,"value":3365},"Look for repeated configuration across tasks that can be collapsed. Turborepo supports shared configuration patterns.",{"type":46,"tag":145,"props":3367,"children":3369},{"className":147,"code":3368,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG - repetitive env and inputs across tasks\n{\n  \"tasks\": {\n    \"build\": {\n      \"env\": [\"API_URL\", \"DATABASE_URL\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"]\n    },\n    \"test\": {\n      \"env\": [\"API_URL\", \"DATABASE_URL\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"]\n    },\n    \"dev\": {\n      \"env\": [\"API_URL\", \"DATABASE_URL\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"],\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n\n\u002F\u002F BETTER - use globalEnv and globalDependencies for shared config\n{\n  \"globalEnv\": [\"API_URL\", \"DATABASE_URL\"],\n  \"globalDependencies\": [\".env*\"],\n  \"tasks\": {\n    \"build\": {},\n    \"test\": {},\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n",[3370],{"type":46,"tag":92,"props":3371,"children":3372},{"__ignoreMap":150},[3373,3381,3388,3411,3434,3492,3547,3555,3578,3633,3688,3695,3718,3773,3828,3853,3878,3885,3892,3899,3906,3915,3923,3980,4020,4044,4068,4092,4116,4140,4164,4172,4180],{"type":46,"tag":156,"props":3374,"children":3375},{"class":158,"line":159},[3376],{"type":46,"tag":156,"props":3377,"children":3378},{"style":163},[3379],{"type":52,"value":3380},"\u002F\u002F WRONG - repetitive env and inputs across tasks\n",{"type":46,"tag":156,"props":3382,"children":3383},{"class":158,"line":169},[3384],{"type":46,"tag":156,"props":3385,"children":3386},{"style":182},[3387],{"type":52,"value":637},{"type":46,"tag":156,"props":3389,"children":3390},{"class":158,"line":178},[3391,3395,3399,3403,3407],{"type":46,"tag":156,"props":3392,"children":3393},{"style":182},[3394],{"type":52,"value":645},{"type":46,"tag":156,"props":3396,"children":3397},{"style":193},[3398],{"type":52,"value":650},{"type":46,"tag":156,"props":3400,"children":3401},{"style":182},[3402],{"type":52,"value":201},{"type":46,"tag":156,"props":3404,"children":3405},{"style":182},[3406],{"type":52,"value":206},{"type":46,"tag":156,"props":3408,"children":3409},{"style":182},[3410],{"type":52,"value":663},{"type":46,"tag":156,"props":3412,"children":3413},{"class":158,"line":324},[3414,3418,3422,3426,3430],{"type":46,"tag":156,"props":3415,"children":3416},{"style":182},[3417],{"type":52,"value":671},{"type":46,"tag":156,"props":3419,"children":3420},{"style":218},[3421],{"type":52,"value":18},{"type":46,"tag":156,"props":3423,"children":3424},{"style":182},[3425],{"type":52,"value":201},{"type":46,"tag":156,"props":3427,"children":3428},{"style":182},[3429],{"type":52,"value":206},{"type":46,"tag":156,"props":3431,"children":3432},{"style":182},[3433],{"type":52,"value":663},{"type":46,"tag":156,"props":3435,"children":3436},{"class":158,"line":334},[3437,3441,3446,3450,3454,3458,3462,3467,3471,3475,3479,3484,3488],{"type":46,"tag":156,"props":3438,"children":3439},{"style":182},[3440],{"type":52,"value":2961},{"type":46,"tag":156,"props":3442,"children":3443},{"style":694},[3444],{"type":52,"value":3445},"env",{"type":46,"tag":156,"props":3447,"children":3448},{"style":182},[3449],{"type":52,"value":201},{"type":46,"tag":156,"props":3451,"children":3452},{"style":182},[3453],{"type":52,"value":206},{"type":46,"tag":156,"props":3455,"children":3456},{"style":182},[3457],{"type":52,"value":710},{"type":46,"tag":156,"props":3459,"children":3460},{"style":182},[3461],{"type":52,"value":201},{"type":46,"tag":156,"props":3463,"children":3464},{"style":235},[3465],{"type":52,"value":3466},"API_URL",{"type":46,"tag":156,"props":3468,"children":3469},{"style":182},[3470],{"type":52,"value":201},{"type":46,"tag":156,"props":3472,"children":3473},{"style":182},[3474],{"type":52,"value":247},{"type":46,"tag":156,"props":3476,"children":3477},{"style":182},[3478],{"type":52,"value":190},{"type":46,"tag":156,"props":3480,"children":3481},{"style":235},[3482],{"type":52,"value":3483},"DATABASE_URL",{"type":46,"tag":156,"props":3485,"children":3486},{"style":182},[3487],{"type":52,"value":201},{"type":46,"tag":156,"props":3489,"children":3490},{"style":182},[3491],{"type":52,"value":3190},{"type":46,"tag":156,"props":3493,"children":3494},{"class":158,"line":343},[3495,3499,3503,3507,3511,3515,3519,3523,3527,3531,3535,3539,3543],{"type":46,"tag":156,"props":3496,"children":3497},{"style":182},[3498],{"type":52,"value":2961},{"type":46,"tag":156,"props":3500,"children":3501},{"style":694},[3502],{"type":52,"value":3248},{"type":46,"tag":156,"props":3504,"children":3505},{"style":182},[3506],{"type":52,"value":201},{"type":46,"tag":156,"props":3508,"children":3509},{"style":182},[3510],{"type":52,"value":206},{"type":46,"tag":156,"props":3512,"children":3513},{"style":182},[3514],{"type":52,"value":710},{"type":46,"tag":156,"props":3516,"children":3517},{"style":182},[3518],{"type":52,"value":201},{"type":46,"tag":156,"props":3520,"children":3521},{"style":235},[3522],{"type":52,"value":3269},{"type":46,"tag":156,"props":3524,"children":3525},{"style":182},[3526],{"type":52,"value":201},{"type":46,"tag":156,"props":3528,"children":3529},{"style":182},[3530],{"type":52,"value":247},{"type":46,"tag":156,"props":3532,"children":3533},{"style":182},[3534],{"type":52,"value":190},{"type":46,"tag":156,"props":3536,"children":3537},{"style":235},[3538],{"type":52,"value":3286},{"type":46,"tag":156,"props":3540,"children":3541},{"style":182},[3542],{"type":52,"value":201},{"type":46,"tag":156,"props":3544,"children":3545},{"style":182},[3546],{"type":52,"value":2994},{"type":46,"tag":156,"props":3548,"children":3549},{"class":158,"line":472},[3550],{"type":46,"tag":156,"props":3551,"children":3552},{"style":182},[3553],{"type":52,"value":3554},"    },\n",{"type":46,"tag":156,"props":3556,"children":3557},{"class":158,"line":480},[3558,3562,3566,3570,3574],{"type":46,"tag":156,"props":3559,"children":3560},{"style":182},[3561],{"type":52,"value":671},{"type":46,"tag":156,"props":3563,"children":3564},{"style":218},[3565],{"type":52,"value":290},{"type":46,"tag":156,"props":3567,"children":3568},{"style":182},[3569],{"type":52,"value":201},{"type":46,"tag":156,"props":3571,"children":3572},{"style":182},[3573],{"type":52,"value":206},{"type":46,"tag":156,"props":3575,"children":3576},{"style":182},[3577],{"type":52,"value":663},{"type":46,"tag":156,"props":3579,"children":3580},{"class":158,"line":489},[3581,3585,3589,3593,3597,3601,3605,3609,3613,3617,3621,3625,3629],{"type":46,"tag":156,"props":3582,"children":3583},{"style":182},[3584],{"type":52,"value":2961},{"type":46,"tag":156,"props":3586,"children":3587},{"style":694},[3588],{"type":52,"value":3445},{"type":46,"tag":156,"props":3590,"children":3591},{"style":182},[3592],{"type":52,"value":201},{"type":46,"tag":156,"props":3594,"children":3595},{"style":182},[3596],{"type":52,"value":206},{"type":46,"tag":156,"props":3598,"children":3599},{"style":182},[3600],{"type":52,"value":710},{"type":46,"tag":156,"props":3602,"children":3603},{"style":182},[3604],{"type":52,"value":201},{"type":46,"tag":156,"props":3606,"children":3607},{"style":235},[3608],{"type":52,"value":3466},{"type":46,"tag":156,"props":3610,"children":3611},{"style":182},[3612],{"type":52,"value":201},{"type":46,"tag":156,"props":3614,"children":3615},{"style":182},[3616],{"type":52,"value":247},{"type":46,"tag":156,"props":3618,"children":3619},{"style":182},[3620],{"type":52,"value":190},{"type":46,"tag":156,"props":3622,"children":3623},{"style":235},[3624],{"type":52,"value":3483},{"type":46,"tag":156,"props":3626,"children":3627},{"style":182},[3628],{"type":52,"value":201},{"type":46,"tag":156,"props":3630,"children":3631},{"style":182},[3632],{"type":52,"value":3190},{"type":46,"tag":156,"props":3634,"children":3635},{"class":158,"line":1775},[3636,3640,3644,3648,3652,3656,3660,3664,3668,3672,3676,3680,3684],{"type":46,"tag":156,"props":3637,"children":3638},{"style":182},[3639],{"type":52,"value":2961},{"type":46,"tag":156,"props":3641,"children":3642},{"style":694},[3643],{"type":52,"value":3248},{"type":46,"tag":156,"props":3645,"children":3646},{"style":182},[3647],{"type":52,"value":201},{"type":46,"tag":156,"props":3649,"children":3650},{"style":182},[3651],{"type":52,"value":206},{"type":46,"tag":156,"props":3653,"children":3654},{"style":182},[3655],{"type":52,"value":710},{"type":46,"tag":156,"props":3657,"children":3658},{"style":182},[3659],{"type":52,"value":201},{"type":46,"tag":156,"props":3661,"children":3662},{"style":235},[3663],{"type":52,"value":3269},{"type":46,"tag":156,"props":3665,"children":3666},{"style":182},[3667],{"type":52,"value":201},{"type":46,"tag":156,"props":3669,"children":3670},{"style":182},[3671],{"type":52,"value":247},{"type":46,"tag":156,"props":3673,"children":3674},{"style":182},[3675],{"type":52,"value":190},{"type":46,"tag":156,"props":3677,"children":3678},{"style":235},[3679],{"type":52,"value":3286},{"type":46,"tag":156,"props":3681,"children":3682},{"style":182},[3683],{"type":52,"value":201},{"type":46,"tag":156,"props":3685,"children":3686},{"style":182},[3687],{"type":52,"value":2994},{"type":46,"tag":156,"props":3689,"children":3690},{"class":158,"line":1783},[3691],{"type":46,"tag":156,"props":3692,"children":3693},{"style":182},[3694],{"type":52,"value":3554},{"type":46,"tag":156,"props":3696,"children":3697},{"class":158,"line":1807},[3698,3702,3706,3710,3714],{"type":46,"tag":156,"props":3699,"children":3700},{"style":182},[3701],{"type":52,"value":671},{"type":46,"tag":156,"props":3703,"children":3704},{"style":218},[3705],{"type":52,"value":1722},{"type":46,"tag":156,"props":3707,"children":3708},{"style":182},[3709],{"type":52,"value":201},{"type":46,"tag":156,"props":3711,"children":3712},{"style":182},[3713],{"type":52,"value":206},{"type":46,"tag":156,"props":3715,"children":3716},{"style":182},[3717],{"type":52,"value":663},{"type":46,"tag":156,"props":3719,"children":3720},{"class":158,"line":1843},[3721,3725,3729,3733,3737,3741,3745,3749,3753,3757,3761,3765,3769],{"type":46,"tag":156,"props":3722,"children":3723},{"style":182},[3724],{"type":52,"value":2961},{"type":46,"tag":156,"props":3726,"children":3727},{"style":694},[3728],{"type":52,"value":3445},{"type":46,"tag":156,"props":3730,"children":3731},{"style":182},[3732],{"type":52,"value":201},{"type":46,"tag":156,"props":3734,"children":3735},{"style":182},[3736],{"type":52,"value":206},{"type":46,"tag":156,"props":3738,"children":3739},{"style":182},[3740],{"type":52,"value":710},{"type":46,"tag":156,"props":3742,"children":3743},{"style":182},[3744],{"type":52,"value":201},{"type":46,"tag":156,"props":3746,"children":3747},{"style":235},[3748],{"type":52,"value":3466},{"type":46,"tag":156,"props":3750,"children":3751},{"style":182},[3752],{"type":52,"value":201},{"type":46,"tag":156,"props":3754,"children":3755},{"style":182},[3756],{"type":52,"value":247},{"type":46,"tag":156,"props":3758,"children":3759},{"style":182},[3760],{"type":52,"value":190},{"type":46,"tag":156,"props":3762,"children":3763},{"style":235},[3764],{"type":52,"value":3483},{"type":46,"tag":156,"props":3766,"children":3767},{"style":182},[3768],{"type":52,"value":201},{"type":46,"tag":156,"props":3770,"children":3771},{"style":182},[3772],{"type":52,"value":3190},{"type":46,"tag":156,"props":3774,"children":3775},{"class":158,"line":1876},[3776,3780,3784,3788,3792,3796,3800,3804,3808,3812,3816,3820,3824],{"type":46,"tag":156,"props":3777,"children":3778},{"style":182},[3779],{"type":52,"value":2961},{"type":46,"tag":156,"props":3781,"children":3782},{"style":694},[3783],{"type":52,"value":3248},{"type":46,"tag":156,"props":3785,"children":3786},{"style":182},[3787],{"type":52,"value":201},{"type":46,"tag":156,"props":3789,"children":3790},{"style":182},[3791],{"type":52,"value":206},{"type":46,"tag":156,"props":3793,"children":3794},{"style":182},[3795],{"type":52,"value":710},{"type":46,"tag":156,"props":3797,"children":3798},{"style":182},[3799],{"type":52,"value":201},{"type":46,"tag":156,"props":3801,"children":3802},{"style":235},[3803],{"type":52,"value":3269},{"type":46,"tag":156,"props":3805,"children":3806},{"style":182},[3807],{"type":52,"value":201},{"type":46,"tag":156,"props":3809,"children":3810},{"style":182},[3811],{"type":52,"value":247},{"type":46,"tag":156,"props":3813,"children":3814},{"style":182},[3815],{"type":52,"value":190},{"type":46,"tag":156,"props":3817,"children":3818},{"style":235},[3819],{"type":52,"value":3286},{"type":46,"tag":156,"props":3821,"children":3822},{"style":182},[3823],{"type":52,"value":201},{"type":46,"tag":156,"props":3825,"children":3826},{"style":182},[3827],{"type":52,"value":3190},{"type":46,"tag":156,"props":3829,"children":3830},{"class":158,"line":1884},[3831,3835,3840,3844,3848],{"type":46,"tag":156,"props":3832,"children":3833},{"style":182},[3834],{"type":52,"value":2961},{"type":46,"tag":156,"props":3836,"children":3837},{"style":694},[3838],{"type":52,"value":3839},"cache",{"type":46,"tag":156,"props":3841,"children":3842},{"style":182},[3843],{"type":52,"value":201},{"type":46,"tag":156,"props":3845,"children":3846},{"style":182},[3847],{"type":52,"value":206},{"type":46,"tag":156,"props":3849,"children":3850},{"style":182},[3851],{"type":52,"value":3852}," false,\n",{"type":46,"tag":156,"props":3854,"children":3855},{"class":158,"line":2932},[3856,3860,3865,3869,3873],{"type":46,"tag":156,"props":3857,"children":3858},{"style":182},[3859],{"type":52,"value":2961},{"type":46,"tag":156,"props":3861,"children":3862},{"style":694},[3863],{"type":52,"value":3864},"persistent",{"type":46,"tag":156,"props":3866,"children":3867},{"style":182},[3868],{"type":52,"value":201},{"type":46,"tag":156,"props":3870,"children":3871},{"style":182},[3872],{"type":52,"value":206},{"type":46,"tag":156,"props":3874,"children":3875},{"style":182},[3876],{"type":52,"value":3877}," true\n",{"type":46,"tag":156,"props":3879,"children":3880},{"class":158,"line":28},[3881],{"type":46,"tag":156,"props":3882,"children":3883},{"style":182},[3884],{"type":52,"value":3003},{"type":46,"tag":156,"props":3886,"children":3887},{"class":158,"line":2997},[3888],{"type":46,"tag":156,"props":3889,"children":3890},{"style":182},[3891],{"type":52,"value":867},{"type":46,"tag":156,"props":3893,"children":3894},{"class":158,"line":3006},[3895],{"type":46,"tag":156,"props":3896,"children":3897},{"style":182},[3898],{"type":52,"value":875},{"type":46,"tag":156,"props":3900,"children":3901},{"class":158,"line":3014},[3902],{"type":46,"tag":156,"props":3903,"children":3904},{"emptyLinePlaceholder":328},[3905],{"type":52,"value":331},{"type":46,"tag":156,"props":3907,"children":3909},{"class":158,"line":3908},21,[3910],{"type":46,"tag":156,"props":3911,"children":3912},{"style":163},[3913],{"type":52,"value":3914},"\u002F\u002F BETTER - use globalEnv and globalDependencies for shared config\n",{"type":46,"tag":156,"props":3916,"children":3918},{"class":158,"line":3917},22,[3919],{"type":46,"tag":156,"props":3920,"children":3921},{"style":182},[3922],{"type":52,"value":637},{"type":46,"tag":156,"props":3924,"children":3926},{"class":158,"line":3925},23,[3927,3931,3936,3940,3944,3948,3952,3956,3960,3964,3968,3972,3976],{"type":46,"tag":156,"props":3928,"children":3929},{"style":182},[3930],{"type":52,"value":645},{"type":46,"tag":156,"props":3932,"children":3933},{"style":193},[3934],{"type":52,"value":3935},"globalEnv",{"type":46,"tag":156,"props":3937,"children":3938},{"style":182},[3939],{"type":52,"value":201},{"type":46,"tag":156,"props":3941,"children":3942},{"style":182},[3943],{"type":52,"value":206},{"type":46,"tag":156,"props":3945,"children":3946},{"style":182},[3947],{"type":52,"value":710},{"type":46,"tag":156,"props":3949,"children":3950},{"style":182},[3951],{"type":52,"value":201},{"type":46,"tag":156,"props":3953,"children":3954},{"style":235},[3955],{"type":52,"value":3466},{"type":46,"tag":156,"props":3957,"children":3958},{"style":182},[3959],{"type":52,"value":201},{"type":46,"tag":156,"props":3961,"children":3962},{"style":182},[3963],{"type":52,"value":247},{"type":46,"tag":156,"props":3965,"children":3966},{"style":182},[3967],{"type":52,"value":190},{"type":46,"tag":156,"props":3969,"children":3970},{"style":235},[3971],{"type":52,"value":3483},{"type":46,"tag":156,"props":3973,"children":3974},{"style":182},[3975],{"type":52,"value":201},{"type":46,"tag":156,"props":3977,"children":3978},{"style":182},[3979],{"type":52,"value":3190},{"type":46,"tag":156,"props":3981,"children":3983},{"class":158,"line":3982},24,[3984,3988,3992,3996,4000,4004,4008,4012,4016],{"type":46,"tag":156,"props":3985,"children":3986},{"style":182},[3987],{"type":52,"value":645},{"type":46,"tag":156,"props":3989,"children":3990},{"style":193},[3991],{"type":52,"value":3048},{"type":46,"tag":156,"props":3993,"children":3994},{"style":182},[3995],{"type":52,"value":201},{"type":46,"tag":156,"props":3997,"children":3998},{"style":182},[3999],{"type":52,"value":206},{"type":46,"tag":156,"props":4001,"children":4002},{"style":182},[4003],{"type":52,"value":710},{"type":46,"tag":156,"props":4005,"children":4006},{"style":182},[4007],{"type":52,"value":201},{"type":46,"tag":156,"props":4009,"children":4010},{"style":235},[4011],{"type":52,"value":3286},{"type":46,"tag":156,"props":4013,"children":4014},{"style":182},[4015],{"type":52,"value":201},{"type":46,"tag":156,"props":4017,"children":4018},{"style":182},[4019],{"type":52,"value":3190},{"type":46,"tag":156,"props":4021,"children":4023},{"class":158,"line":4022},25,[4024,4028,4032,4036,4040],{"type":46,"tag":156,"props":4025,"children":4026},{"style":182},[4027],{"type":52,"value":645},{"type":46,"tag":156,"props":4029,"children":4030},{"style":193},[4031],{"type":52,"value":650},{"type":46,"tag":156,"props":4033,"children":4034},{"style":182},[4035],{"type":52,"value":201},{"type":46,"tag":156,"props":4037,"children":4038},{"style":182},[4039],{"type":52,"value":206},{"type":46,"tag":156,"props":4041,"children":4042},{"style":182},[4043],{"type":52,"value":663},{"type":46,"tag":156,"props":4045,"children":4047},{"class":158,"line":4046},26,[4048,4052,4056,4060,4064],{"type":46,"tag":156,"props":4049,"children":4050},{"style":182},[4051],{"type":52,"value":671},{"type":46,"tag":156,"props":4053,"children":4054},{"style":218},[4055],{"type":52,"value":18},{"type":46,"tag":156,"props":4057,"children":4058},{"style":182},[4059],{"type":52,"value":201},{"type":46,"tag":156,"props":4061,"children":4062},{"style":182},[4063],{"type":52,"value":206},{"type":46,"tag":156,"props":4065,"children":4066},{"style":182},[4067],{"type":52,"value":796},{"type":46,"tag":156,"props":4069,"children":4071},{"class":158,"line":4070},27,[4072,4076,4080,4084,4088],{"type":46,"tag":156,"props":4073,"children":4074},{"style":182},[4075],{"type":52,"value":671},{"type":46,"tag":156,"props":4077,"children":4078},{"style":218},[4079],{"type":52,"value":290},{"type":46,"tag":156,"props":4081,"children":4082},{"style":182},[4083],{"type":52,"value":201},{"type":46,"tag":156,"props":4085,"children":4086},{"style":182},[4087],{"type":52,"value":206},{"type":46,"tag":156,"props":4089,"children":4090},{"style":182},[4091],{"type":52,"value":796},{"type":46,"tag":156,"props":4093,"children":4095},{"class":158,"line":4094},28,[4096,4100,4104,4108,4112],{"type":46,"tag":156,"props":4097,"children":4098},{"style":182},[4099],{"type":52,"value":671},{"type":46,"tag":156,"props":4101,"children":4102},{"style":218},[4103],{"type":52,"value":1722},{"type":46,"tag":156,"props":4105,"children":4106},{"style":182},[4107],{"type":52,"value":201},{"type":46,"tag":156,"props":4109,"children":4110},{"style":182},[4111],{"type":52,"value":206},{"type":46,"tag":156,"props":4113,"children":4114},{"style":182},[4115],{"type":52,"value":663},{"type":46,"tag":156,"props":4117,"children":4119},{"class":158,"line":4118},29,[4120,4124,4128,4132,4136],{"type":46,"tag":156,"props":4121,"children":4122},{"style":182},[4123],{"type":52,"value":2961},{"type":46,"tag":156,"props":4125,"children":4126},{"style":694},[4127],{"type":52,"value":3839},{"type":46,"tag":156,"props":4129,"children":4130},{"style":182},[4131],{"type":52,"value":201},{"type":46,"tag":156,"props":4133,"children":4134},{"style":182},[4135],{"type":52,"value":206},{"type":46,"tag":156,"props":4137,"children":4138},{"style":182},[4139],{"type":52,"value":3852},{"type":46,"tag":156,"props":4141,"children":4143},{"class":158,"line":4142},30,[4144,4148,4152,4156,4160],{"type":46,"tag":156,"props":4145,"children":4146},{"style":182},[4147],{"type":52,"value":2961},{"type":46,"tag":156,"props":4149,"children":4150},{"style":694},[4151],{"type":52,"value":3864},{"type":46,"tag":156,"props":4153,"children":4154},{"style":182},[4155],{"type":52,"value":201},{"type":46,"tag":156,"props":4157,"children":4158},{"style":182},[4159],{"type":52,"value":206},{"type":46,"tag":156,"props":4161,"children":4162},{"style":182},[4163],{"type":52,"value":3877},{"type":46,"tag":156,"props":4165,"children":4167},{"class":158,"line":4166},31,[4168],{"type":46,"tag":156,"props":4169,"children":4170},{"style":182},[4171],{"type":52,"value":3003},{"type":46,"tag":156,"props":4173,"children":4175},{"class":158,"line":4174},32,[4176],{"type":46,"tag":156,"props":4177,"children":4178},{"style":182},[4179],{"type":52,"value":867},{"type":46,"tag":156,"props":4181,"children":4183},{"class":158,"line":4182},33,[4184],{"type":46,"tag":156,"props":4185,"children":4186},{"style":182},[4187],{"type":52,"value":875},{"type":46,"tag":55,"props":4189,"children":4190},{},[4191],{"type":46,"tag":71,"props":4192,"children":4193},{},[4194],{"type":52,"value":4195},"When to use global vs task-level:",{"type":46,"tag":2661,"props":4197,"children":4198},{},[4199,4216],{"type":46,"tag":86,"props":4200,"children":4201},{},[4202,4207,4209,4214],{"type":46,"tag":92,"props":4203,"children":4205},{"className":4204},[],[4206],{"type":52,"value":3935},{"type":52,"value":4208}," \u002F ",{"type":46,"tag":92,"props":4210,"children":4212},{"className":4211},[],[4213],{"type":52,"value":3048},{"type":52,"value":4215}," - affects ALL tasks, use for truly shared config",{"type":46,"tag":86,"props":4217,"children":4218},{},[4219,4221,4226,4227,4232],{"type":52,"value":4220},"Task-level ",{"type":46,"tag":92,"props":4222,"children":4224},{"className":4223},[],[4225],{"type":52,"value":3445},{"type":52,"value":4208},{"type":46,"tag":92,"props":4228,"children":4230},{"className":4229},[],[4231],{"type":52,"value":3248},{"type":52,"value":4233}," - use when only specific tasks need it",{"type":46,"tag":1422,"props":4235,"children":4237},{"id":4236},"not-an-anti-pattern-large-env-arrays",[4238,4240,4245],{"type":52,"value":4239},"NOT an Anti-Pattern: Large ",{"type":46,"tag":92,"props":4241,"children":4243},{"className":4242},[],[4244],{"type":52,"value":3445},{"type":52,"value":4246}," Arrays",{"type":46,"tag":55,"props":4248,"children":4249},{},[4250,4252,4257,4259,4264],{"type":52,"value":4251},"A large ",{"type":46,"tag":92,"props":4253,"children":4255},{"className":4254},[],[4256],{"type":52,"value":3445},{"type":52,"value":4258}," array (even 50+ variables) is ",{"type":46,"tag":71,"props":4260,"children":4261},{},[4262],{"type":52,"value":4263},"not",{"type":52,"value":4265}," a problem. It usually means the user was thorough about declaring their build's environment dependencies. Do not flag this as an issue.",{"type":46,"tag":1422,"props":4267,"children":4269},{"id":4268},"using-parallel-flag",[4270,4271,4277],{"type":52,"value":1600},{"type":46,"tag":92,"props":4272,"children":4274},{"className":4273},[],[4275],{"type":52,"value":4276},"--parallel",{"type":52,"value":4278}," Flag",{"type":46,"tag":55,"props":4280,"children":4281},{},[4282,4284,4289,4291,4296],{"type":52,"value":4283},"The ",{"type":46,"tag":92,"props":4285,"children":4287},{"className":4286},[],[4288],{"type":52,"value":4276},{"type":52,"value":4290}," flag bypasses Turborepo's dependency graph. If tasks need parallel execution, configure ",{"type":46,"tag":92,"props":4292,"children":4294},{"className":4293},[],[4295],{"type":52,"value":697},{"type":52,"value":4297}," correctly instead.",{"type":46,"tag":145,"props":4299,"children":4303},{"className":4300,"code":4301,"language":4302,"meta":150,"style":150},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# WRONG - bypasses dependency graph\nturbo run lint --parallel\n\n# CORRECT - configure tasks to allow parallel execution\n# In turbo.json, set dependsOn appropriately (or use transit nodes)\nturbo run lint\n","bash",[4304],{"type":46,"tag":92,"props":4305,"children":4306},{"__ignoreMap":150},[4307,4315,4336,4343,4351,4359],{"type":46,"tag":156,"props":4308,"children":4309},{"class":158,"line":159},[4310],{"type":46,"tag":156,"props":4311,"children":4312},{"style":163},[4313],{"type":52,"value":4314},"# WRONG - bypasses dependency graph\n",{"type":46,"tag":156,"props":4316,"children":4317},{"class":158,"line":169},[4318,4322,4326,4331],{"type":46,"tag":156,"props":4319,"children":4320},{"style":218},[4321],{"type":52,"value":1243},{"type":46,"tag":156,"props":4323,"children":4324},{"style":235},[4325],{"type":52,"value":1379},{"type":46,"tag":156,"props":4327,"children":4328},{"style":235},[4329],{"type":52,"value":4330}," lint",{"type":46,"tag":156,"props":4332,"children":4333},{"style":235},[4334],{"type":52,"value":4335}," --parallel\n",{"type":46,"tag":156,"props":4337,"children":4338},{"class":158,"line":178},[4339],{"type":46,"tag":156,"props":4340,"children":4341},{"emptyLinePlaceholder":328},[4342],{"type":52,"value":331},{"type":46,"tag":156,"props":4344,"children":4345},{"class":158,"line":324},[4346],{"type":46,"tag":156,"props":4347,"children":4348},{"style":163},[4349],{"type":52,"value":4350},"# CORRECT - configure tasks to allow parallel execution\n",{"type":46,"tag":156,"props":4352,"children":4353},{"class":158,"line":334},[4354],{"type":46,"tag":156,"props":4355,"children":4356},{"style":163},[4357],{"type":52,"value":4358},"# In turbo.json, set dependsOn appropriately (or use transit nodes)\n",{"type":46,"tag":156,"props":4360,"children":4361},{"class":158,"line":343},[4362,4366,4370],{"type":46,"tag":156,"props":4363,"children":4364},{"style":218},[4365],{"type":52,"value":1243},{"type":46,"tag":156,"props":4367,"children":4368},{"style":235},[4369],{"type":52,"value":1379},{"type":46,"tag":156,"props":4371,"children":4372},{"style":235},[4373],{"type":52,"value":4374}," lint\n",{"type":46,"tag":1422,"props":4376,"children":4378},{"id":4377},"package-specific-task-overrides-in-root-turbojson",[4379],{"type":52,"value":4380},"Package-Specific Task Overrides in Root turbo.json",{"type":46,"tag":55,"props":4382,"children":4383},{},[4384,4386,4391,4393,4398,4400,4405,4407,4413],{"type":52,"value":4385},"When multiple packages need different task configurations, use ",{"type":46,"tag":71,"props":4387,"children":4388},{},[4389],{"type":52,"value":4390},"Package Configurations",{"type":52,"value":4392}," (",{"type":46,"tag":92,"props":4394,"children":4396},{"className":4395},[],[4397],{"type":52,"value":108},{"type":52,"value":4399}," in each package) instead of cluttering root ",{"type":46,"tag":92,"props":4401,"children":4403},{"className":4402},[],[4404],{"type":52,"value":108},{"type":52,"value":4406}," with ",{"type":46,"tag":92,"props":4408,"children":4410},{"className":4409},[],[4411],{"type":52,"value":4412},"package#task",{"type":52,"value":4414}," overrides.",{"type":46,"tag":145,"props":4416,"children":4418},{"className":147,"code":4417,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG - root turbo.json with many package-specific overrides\n{\n  \"tasks\": {\n    \"test\": { \"dependsOn\": [\"build\"] },\n    \"@repo\u002Fweb#test\": { \"outputs\": [\"coverage\u002F**\"] },\n    \"@repo\u002Fapi#test\": { \"outputs\": [\"coverage\u002F**\"] },\n    \"@repo\u002Futils#test\": { \"outputs\": [] },\n    \"@repo\u002Fcli#test\": { \"outputs\": [] },\n    \"@repo\u002Fcore#test\": { \"outputs\": [] }\n  }\n}\n\n\u002F\u002F CORRECT - use Package Configurations\n\u002F\u002F Root turbo.json - base config only\n{\n  \"tasks\": {\n    \"test\": { \"dependsOn\": [\"build\"] }\n  }\n}\n\n\u002F\u002F packages\u002Fweb\u002Fturbo.json - package-specific override\n{\n  \"extends\": [\"\u002F\u002F\"],\n  \"tasks\": {\n    \"test\": { \"outputs\": [\"coverage\u002F**\"] }\n  }\n}\n\n\u002F\u002F packages\u002Fapi\u002Fturbo.json\n{\n  \"extends\": [\"\u002F\u002F\"],\n  \"tasks\": {\n    \"test\": { \"outputs\": [\"coverage\u002F**\"] }\n  }\n}\n",[4419],{"type":46,"tag":92,"props":4420,"children":4421},{"__ignoreMap":150},[4422,4430,4437,4460,4523,4588,4652,4701,4749,4797,4804,4811,4818,4826,4834,4841,4864,4927,4934,4941,4948,4956,4963,5004,5027,5090,5097,5104,5111,5119,5126,5165,5188,5251,5259],{"type":46,"tag":156,"props":4423,"children":4424},{"class":158,"line":159},[4425],{"type":46,"tag":156,"props":4426,"children":4427},{"style":163},[4428],{"type":52,"value":4429},"\u002F\u002F WRONG - root turbo.json with many package-specific overrides\n",{"type":46,"tag":156,"props":4431,"children":4432},{"class":158,"line":169},[4433],{"type":46,"tag":156,"props":4434,"children":4435},{"style":182},[4436],{"type":52,"value":637},{"type":46,"tag":156,"props":4438,"children":4439},{"class":158,"line":178},[4440,4444,4448,4452,4456],{"type":46,"tag":156,"props":4441,"children":4442},{"style":182},[4443],{"type":52,"value":645},{"type":46,"tag":156,"props":4445,"children":4446},{"style":193},[4447],{"type":52,"value":650},{"type":46,"tag":156,"props":4449,"children":4450},{"style":182},[4451],{"type":52,"value":201},{"type":46,"tag":156,"props":4453,"children":4454},{"style":182},[4455],{"type":52,"value":206},{"type":46,"tag":156,"props":4457,"children":4458},{"style":182},[4459],{"type":52,"value":663},{"type":46,"tag":156,"props":4461,"children":4462},{"class":158,"line":324},[4463,4467,4471,4475,4479,4483,4487,4491,4495,4499,4503,4507,4511,4515,4519],{"type":46,"tag":156,"props":4464,"children":4465},{"style":182},[4466],{"type":52,"value":671},{"type":46,"tag":156,"props":4468,"children":4469},{"style":218},[4470],{"type":52,"value":290},{"type":46,"tag":156,"props":4472,"children":4473},{"style":182},[4474],{"type":52,"value":201},{"type":46,"tag":156,"props":4476,"children":4477},{"style":182},[4478],{"type":52,"value":206},{"type":46,"tag":156,"props":4480,"children":4481},{"style":182},[4482],{"type":52,"value":211},{"type":46,"tag":156,"props":4484,"children":4485},{"style":182},[4486],{"type":52,"value":190},{"type":46,"tag":156,"props":4488,"children":4489},{"style":694},[4490],{"type":52,"value":697},{"type":46,"tag":156,"props":4492,"children":4493},{"style":182},[4494],{"type":52,"value":201},{"type":46,"tag":156,"props":4496,"children":4497},{"style":182},[4498],{"type":52,"value":206},{"type":46,"tag":156,"props":4500,"children":4501},{"style":182},[4502],{"type":52,"value":710},{"type":46,"tag":156,"props":4504,"children":4505},{"style":182},[4506],{"type":52,"value":201},{"type":46,"tag":156,"props":4508,"children":4509},{"style":235},[4510],{"type":52,"value":18},{"type":46,"tag":156,"props":4512,"children":4513},{"style":182},[4514],{"type":52,"value":201},{"type":46,"tag":156,"props":4516,"children":4517},{"style":182},[4518],{"type":52,"value":767},{"type":46,"tag":156,"props":4520,"children":4521},{"style":182},[4522],{"type":52,"value":772},{"type":46,"tag":156,"props":4524,"children":4525},{"class":158,"line":334},[4526,4530,4535,4539,4543,4547,4551,4555,4559,4563,4567,4571,4576,4580,4584],{"type":46,"tag":156,"props":4527,"children":4528},{"style":182},[4529],{"type":52,"value":671},{"type":46,"tag":156,"props":4531,"children":4532},{"style":218},[4533],{"type":52,"value":4534},"@repo\u002Fweb#test",{"type":46,"tag":156,"props":4536,"children":4537},{"style":182},[4538],{"type":52,"value":201},{"type":46,"tag":156,"props":4540,"children":4541},{"style":182},[4542],{"type":52,"value":206},{"type":46,"tag":156,"props":4544,"children":4545},{"style":182},[4546],{"type":52,"value":211},{"type":46,"tag":156,"props":4548,"children":4549},{"style":182},[4550],{"type":52,"value":190},{"type":46,"tag":156,"props":4552,"children":4553},{"style":694},[4554],{"type":52,"value":737},{"type":46,"tag":156,"props":4556,"children":4557},{"style":182},[4558],{"type":52,"value":201},{"type":46,"tag":156,"props":4560,"children":4561},{"style":182},[4562],{"type":52,"value":206},{"type":46,"tag":156,"props":4564,"children":4565},{"style":182},[4566],{"type":52,"value":710},{"type":46,"tag":156,"props":4568,"children":4569},{"style":182},[4570],{"type":52,"value":201},{"type":46,"tag":156,"props":4572,"children":4573},{"style":235},[4574],{"type":52,"value":4575},"coverage\u002F**",{"type":46,"tag":156,"props":4577,"children":4578},{"style":182},[4579],{"type":52,"value":201},{"type":46,"tag":156,"props":4581,"children":4582},{"style":182},[4583],{"type":52,"value":767},{"type":46,"tag":156,"props":4585,"children":4586},{"style":182},[4587],{"type":52,"value":772},{"type":46,"tag":156,"props":4589,"children":4590},{"class":158,"line":343},[4591,4595,4600,4604,4608,4612,4616,4620,4624,4628,4632,4636,4640,4644,4648],{"type":46,"tag":156,"props":4592,"children":4593},{"style":182},[4594],{"type":52,"value":671},{"type":46,"tag":156,"props":4596,"children":4597},{"style":218},[4598],{"type":52,"value":4599},"@repo\u002Fapi#test",{"type":46,"tag":156,"props":4601,"children":4602},{"style":182},[4603],{"type":52,"value":201},{"type":46,"tag":156,"props":4605,"children":4606},{"style":182},[4607],{"type":52,"value":206},{"type":46,"tag":156,"props":4609,"children":4610},{"style":182},[4611],{"type":52,"value":211},{"type":46,"tag":156,"props":4613,"children":4614},{"style":182},[4615],{"type":52,"value":190},{"type":46,"tag":156,"props":4617,"children":4618},{"style":694},[4619],{"type":52,"value":737},{"type":46,"tag":156,"props":4621,"children":4622},{"style":182},[4623],{"type":52,"value":201},{"type":46,"tag":156,"props":4625,"children":4626},{"style":182},[4627],{"type":52,"value":206},{"type":46,"tag":156,"props":4629,"children":4630},{"style":182},[4631],{"type":52,"value":710},{"type":46,"tag":156,"props":4633,"children":4634},{"style":182},[4635],{"type":52,"value":201},{"type":46,"tag":156,"props":4637,"children":4638},{"style":235},[4639],{"type":52,"value":4575},{"type":46,"tag":156,"props":4641,"children":4642},{"style":182},[4643],{"type":52,"value":201},{"type":46,"tag":156,"props":4645,"children":4646},{"style":182},[4647],{"type":52,"value":767},{"type":46,"tag":156,"props":4649,"children":4650},{"style":182},[4651],{"type":52,"value":772},{"type":46,"tag":156,"props":4653,"children":4654},{"class":158,"line":472},[4655,4659,4664,4668,4672,4676,4680,4684,4688,4692,4697],{"type":46,"tag":156,"props":4656,"children":4657},{"style":182},[4658],{"type":52,"value":671},{"type":46,"tag":156,"props":4660,"children":4661},{"style":218},[4662],{"type":52,"value":4663},"@repo\u002Futils#test",{"type":46,"tag":156,"props":4665,"children":4666},{"style":182},[4667],{"type":52,"value":201},{"type":46,"tag":156,"props":4669,"children":4670},{"style":182},[4671],{"type":52,"value":206},{"type":46,"tag":156,"props":4673,"children":4674},{"style":182},[4675],{"type":52,"value":211},{"type":46,"tag":156,"props":4677,"children":4678},{"style":182},[4679],{"type":52,"value":190},{"type":46,"tag":156,"props":4681,"children":4682},{"style":694},[4683],{"type":52,"value":737},{"type":46,"tag":156,"props":4685,"children":4686},{"style":182},[4687],{"type":52,"value":201},{"type":46,"tag":156,"props":4689,"children":4690},{"style":182},[4691],{"type":52,"value":206},{"type":46,"tag":156,"props":4693,"children":4694},{"style":182},[4695],{"type":52,"value":4696}," []",{"type":46,"tag":156,"props":4698,"children":4699},{"style":182},[4700],{"type":52,"value":772},{"type":46,"tag":156,"props":4702,"children":4703},{"class":158,"line":480},[4704,4708,4713,4717,4721,4725,4729,4733,4737,4741,4745],{"type":46,"tag":156,"props":4705,"children":4706},{"style":182},[4707],{"type":52,"value":671},{"type":46,"tag":156,"props":4709,"children":4710},{"style":218},[4711],{"type":52,"value":4712},"@repo\u002Fcli#test",{"type":46,"tag":156,"props":4714,"children":4715},{"style":182},[4716],{"type":52,"value":201},{"type":46,"tag":156,"props":4718,"children":4719},{"style":182},[4720],{"type":52,"value":206},{"type":46,"tag":156,"props":4722,"children":4723},{"style":182},[4724],{"type":52,"value":211},{"type":46,"tag":156,"props":4726,"children":4727},{"style":182},[4728],{"type":52,"value":190},{"type":46,"tag":156,"props":4730,"children":4731},{"style":694},[4732],{"type":52,"value":737},{"type":46,"tag":156,"props":4734,"children":4735},{"style":182},[4736],{"type":52,"value":201},{"type":46,"tag":156,"props":4738,"children":4739},{"style":182},[4740],{"type":52,"value":206},{"type":46,"tag":156,"props":4742,"children":4743},{"style":182},[4744],{"type":52,"value":4696},{"type":46,"tag":156,"props":4746,"children":4747},{"style":182},[4748],{"type":52,"value":772},{"type":46,"tag":156,"props":4750,"children":4751},{"class":158,"line":489},[4752,4756,4761,4765,4769,4773,4777,4781,4785,4789,4793],{"type":46,"tag":156,"props":4753,"children":4754},{"style":182},[4755],{"type":52,"value":671},{"type":46,"tag":156,"props":4757,"children":4758},{"style":218},[4759],{"type":52,"value":4760},"@repo\u002Fcore#test",{"type":46,"tag":156,"props":4762,"children":4763},{"style":182},[4764],{"type":52,"value":201},{"type":46,"tag":156,"props":4766,"children":4767},{"style":182},[4768],{"type":52,"value":206},{"type":46,"tag":156,"props":4770,"children":4771},{"style":182},[4772],{"type":52,"value":211},{"type":46,"tag":156,"props":4774,"children":4775},{"style":182},[4776],{"type":52,"value":190},{"type":46,"tag":156,"props":4778,"children":4779},{"style":694},[4780],{"type":52,"value":737},{"type":46,"tag":156,"props":4782,"children":4783},{"style":182},[4784],{"type":52,"value":201},{"type":46,"tag":156,"props":4786,"children":4787},{"style":182},[4788],{"type":52,"value":206},{"type":46,"tag":156,"props":4790,"children":4791},{"style":182},[4792],{"type":52,"value":4696},{"type":46,"tag":156,"props":4794,"children":4795},{"style":182},[4796],{"type":52,"value":321},{"type":46,"tag":156,"props":4798,"children":4799},{"class":158,"line":1775},[4800],{"type":46,"tag":156,"props":4801,"children":4802},{"style":182},[4803],{"type":52,"value":867},{"type":46,"tag":156,"props":4805,"children":4806},{"class":158,"line":1783},[4807],{"type":46,"tag":156,"props":4808,"children":4809},{"style":182},[4810],{"type":52,"value":875},{"type":46,"tag":156,"props":4812,"children":4813},{"class":158,"line":1807},[4814],{"type":46,"tag":156,"props":4815,"children":4816},{"emptyLinePlaceholder":328},[4817],{"type":52,"value":331},{"type":46,"tag":156,"props":4819,"children":4820},{"class":158,"line":1843},[4821],{"type":46,"tag":156,"props":4822,"children":4823},{"style":163},[4824],{"type":52,"value":4825},"\u002F\u002F CORRECT - use Package Configurations\n",{"type":46,"tag":156,"props":4827,"children":4828},{"class":158,"line":1876},[4829],{"type":46,"tag":156,"props":4830,"children":4831},{"style":163},[4832],{"type":52,"value":4833},"\u002F\u002F Root turbo.json - base config only\n",{"type":46,"tag":156,"props":4835,"children":4836},{"class":158,"line":1884},[4837],{"type":46,"tag":156,"props":4838,"children":4839},{"style":182},[4840],{"type":52,"value":637},{"type":46,"tag":156,"props":4842,"children":4843},{"class":158,"line":2932},[4844,4848,4852,4856,4860],{"type":46,"tag":156,"props":4845,"children":4846},{"style":182},[4847],{"type":52,"value":645},{"type":46,"tag":156,"props":4849,"children":4850},{"style":193},[4851],{"type":52,"value":650},{"type":46,"tag":156,"props":4853,"children":4854},{"style":182},[4855],{"type":52,"value":201},{"type":46,"tag":156,"props":4857,"children":4858},{"style":182},[4859],{"type":52,"value":206},{"type":46,"tag":156,"props":4861,"children":4862},{"style":182},[4863],{"type":52,"value":663},{"type":46,"tag":156,"props":4865,"children":4866},{"class":158,"line":28},[4867,4871,4875,4879,4883,4887,4891,4895,4899,4903,4907,4911,4915,4919,4923],{"type":46,"tag":156,"props":4868,"children":4869},{"style":182},[4870],{"type":52,"value":671},{"type":46,"tag":156,"props":4872,"children":4873},{"style":218},[4874],{"type":52,"value":290},{"type":46,"tag":156,"props":4876,"children":4877},{"style":182},[4878],{"type":52,"value":201},{"type":46,"tag":156,"props":4880,"children":4881},{"style":182},[4882],{"type":52,"value":206},{"type":46,"tag":156,"props":4884,"children":4885},{"style":182},[4886],{"type":52,"value":211},{"type":46,"tag":156,"props":4888,"children":4889},{"style":182},[4890],{"type":52,"value":190},{"type":46,"tag":156,"props":4892,"children":4893},{"style":694},[4894],{"type":52,"value":697},{"type":46,"tag":156,"props":4896,"children":4897},{"style":182},[4898],{"type":52,"value":201},{"type":46,"tag":156,"props":4900,"children":4901},{"style":182},[4902],{"type":52,"value":206},{"type":46,"tag":156,"props":4904,"children":4905},{"style":182},[4906],{"type":52,"value":710},{"type":46,"tag":156,"props":4908,"children":4909},{"style":182},[4910],{"type":52,"value":201},{"type":46,"tag":156,"props":4912,"children":4913},{"style":235},[4914],{"type":52,"value":18},{"type":46,"tag":156,"props":4916,"children":4917},{"style":182},[4918],{"type":52,"value":201},{"type":46,"tag":156,"props":4920,"children":4921},{"style":182},[4922],{"type":52,"value":767},{"type":46,"tag":156,"props":4924,"children":4925},{"style":182},[4926],{"type":52,"value":321},{"type":46,"tag":156,"props":4928,"children":4929},{"class":158,"line":2997},[4930],{"type":46,"tag":156,"props":4931,"children":4932},{"style":182},[4933],{"type":52,"value":867},{"type":46,"tag":156,"props":4935,"children":4936},{"class":158,"line":3006},[4937],{"type":46,"tag":156,"props":4938,"children":4939},{"style":182},[4940],{"type":52,"value":875},{"type":46,"tag":156,"props":4942,"children":4943},{"class":158,"line":3014},[4944],{"type":46,"tag":156,"props":4945,"children":4946},{"emptyLinePlaceholder":328},[4947],{"type":52,"value":331},{"type":46,"tag":156,"props":4949,"children":4950},{"class":158,"line":3908},[4951],{"type":46,"tag":156,"props":4952,"children":4953},{"style":163},[4954],{"type":52,"value":4955},"\u002F\u002F packages\u002Fweb\u002Fturbo.json - package-specific override\n",{"type":46,"tag":156,"props":4957,"children":4958},{"class":158,"line":3917},[4959],{"type":46,"tag":156,"props":4960,"children":4961},{"style":182},[4962],{"type":52,"value":637},{"type":46,"tag":156,"props":4964,"children":4965},{"class":158,"line":3925},[4966,4970,4975,4979,4983,4987,4991,4996,5000],{"type":46,"tag":156,"props":4967,"children":4968},{"style":182},[4969],{"type":52,"value":645},{"type":46,"tag":156,"props":4971,"children":4972},{"style":193},[4973],{"type":52,"value":4974},"extends",{"type":46,"tag":156,"props":4976,"children":4977},{"style":182},[4978],{"type":52,"value":201},{"type":46,"tag":156,"props":4980,"children":4981},{"style":182},[4982],{"type":52,"value":206},{"type":46,"tag":156,"props":4984,"children":4985},{"style":182},[4986],{"type":52,"value":710},{"type":46,"tag":156,"props":4988,"children":4989},{"style":182},[4990],{"type":52,"value":201},{"type":46,"tag":156,"props":4992,"children":4993},{"style":235},[4994],{"type":52,"value":4995},"\u002F\u002F",{"type":46,"tag":156,"props":4997,"children":4998},{"style":182},[4999],{"type":52,"value":201},{"type":46,"tag":156,"props":5001,"children":5002},{"style":182},[5003],{"type":52,"value":3190},{"type":46,"tag":156,"props":5005,"children":5006},{"class":158,"line":3982},[5007,5011,5015,5019,5023],{"type":46,"tag":156,"props":5008,"children":5009},{"style":182},[5010],{"type":52,"value":645},{"type":46,"tag":156,"props":5012,"children":5013},{"style":193},[5014],{"type":52,"value":650},{"type":46,"tag":156,"props":5016,"children":5017},{"style":182},[5018],{"type":52,"value":201},{"type":46,"tag":156,"props":5020,"children":5021},{"style":182},[5022],{"type":52,"value":206},{"type":46,"tag":156,"props":5024,"children":5025},{"style":182},[5026],{"type":52,"value":663},{"type":46,"tag":156,"props":5028,"children":5029},{"class":158,"line":4022},[5030,5034,5038,5042,5046,5050,5054,5058,5062,5066,5070,5074,5078,5082,5086],{"type":46,"tag":156,"props":5031,"children":5032},{"style":182},[5033],{"type":52,"value":671},{"type":46,"tag":156,"props":5035,"children":5036},{"style":218},[5037],{"type":52,"value":290},{"type":46,"tag":156,"props":5039,"children":5040},{"style":182},[5041],{"type":52,"value":201},{"type":46,"tag":156,"props":5043,"children":5044},{"style":182},[5045],{"type":52,"value":206},{"type":46,"tag":156,"props":5047,"children":5048},{"style":182},[5049],{"type":52,"value":211},{"type":46,"tag":156,"props":5051,"children":5052},{"style":182},[5053],{"type":52,"value":190},{"type":46,"tag":156,"props":5055,"children":5056},{"style":694},[5057],{"type":52,"value":737},{"type":46,"tag":156,"props":5059,"children":5060},{"style":182},[5061],{"type":52,"value":201},{"type":46,"tag":156,"props":5063,"children":5064},{"style":182},[5065],{"type":52,"value":206},{"type":46,"tag":156,"props":5067,"children":5068},{"style":182},[5069],{"type":52,"value":710},{"type":46,"tag":156,"props":5071,"children":5072},{"style":182},[5073],{"type":52,"value":201},{"type":46,"tag":156,"props":5075,"children":5076},{"style":235},[5077],{"type":52,"value":4575},{"type":46,"tag":156,"props":5079,"children":5080},{"style":182},[5081],{"type":52,"value":201},{"type":46,"tag":156,"props":5083,"children":5084},{"style":182},[5085],{"type":52,"value":767},{"type":46,"tag":156,"props":5087,"children":5088},{"style":182},[5089],{"type":52,"value":321},{"type":46,"tag":156,"props":5091,"children":5092},{"class":158,"line":4046},[5093],{"type":46,"tag":156,"props":5094,"children":5095},{"style":182},[5096],{"type":52,"value":867},{"type":46,"tag":156,"props":5098,"children":5099},{"class":158,"line":4070},[5100],{"type":46,"tag":156,"props":5101,"children":5102},{"style":182},[5103],{"type":52,"value":875},{"type":46,"tag":156,"props":5105,"children":5106},{"class":158,"line":4094},[5107],{"type":46,"tag":156,"props":5108,"children":5109},{"emptyLinePlaceholder":328},[5110],{"type":52,"value":331},{"type":46,"tag":156,"props":5112,"children":5113},{"class":158,"line":4118},[5114],{"type":46,"tag":156,"props":5115,"children":5116},{"style":163},[5117],{"type":52,"value":5118},"\u002F\u002F packages\u002Fapi\u002Fturbo.json\n",{"type":46,"tag":156,"props":5120,"children":5121},{"class":158,"line":4142},[5122],{"type":46,"tag":156,"props":5123,"children":5124},{"style":182},[5125],{"type":52,"value":637},{"type":46,"tag":156,"props":5127,"children":5128},{"class":158,"line":4166},[5129,5133,5137,5141,5145,5149,5153,5157,5161],{"type":46,"tag":156,"props":5130,"children":5131},{"style":182},[5132],{"type":52,"value":645},{"type":46,"tag":156,"props":5134,"children":5135},{"style":193},[5136],{"type":52,"value":4974},{"type":46,"tag":156,"props":5138,"children":5139},{"style":182},[5140],{"type":52,"value":201},{"type":46,"tag":156,"props":5142,"children":5143},{"style":182},[5144],{"type":52,"value":206},{"type":46,"tag":156,"props":5146,"children":5147},{"style":182},[5148],{"type":52,"value":710},{"type":46,"tag":156,"props":5150,"children":5151},{"style":182},[5152],{"type":52,"value":201},{"type":46,"tag":156,"props":5154,"children":5155},{"style":235},[5156],{"type":52,"value":4995},{"type":46,"tag":156,"props":5158,"children":5159},{"style":182},[5160],{"type":52,"value":201},{"type":46,"tag":156,"props":5162,"children":5163},{"style":182},[5164],{"type":52,"value":3190},{"type":46,"tag":156,"props":5166,"children":5167},{"class":158,"line":4174},[5168,5172,5176,5180,5184],{"type":46,"tag":156,"props":5169,"children":5170},{"style":182},[5171],{"type":52,"value":645},{"type":46,"tag":156,"props":5173,"children":5174},{"style":193},[5175],{"type":52,"value":650},{"type":46,"tag":156,"props":5177,"children":5178},{"style":182},[5179],{"type":52,"value":201},{"type":46,"tag":156,"props":5181,"children":5182},{"style":182},[5183],{"type":52,"value":206},{"type":46,"tag":156,"props":5185,"children":5186},{"style":182},[5187],{"type":52,"value":663},{"type":46,"tag":156,"props":5189,"children":5190},{"class":158,"line":4182},[5191,5195,5199,5203,5207,5211,5215,5219,5223,5227,5231,5235,5239,5243,5247],{"type":46,"tag":156,"props":5192,"children":5193},{"style":182},[5194],{"type":52,"value":671},{"type":46,"tag":156,"props":5196,"children":5197},{"style":218},[5198],{"type":52,"value":290},{"type":46,"tag":156,"props":5200,"children":5201},{"style":182},[5202],{"type":52,"value":201},{"type":46,"tag":156,"props":5204,"children":5205},{"style":182},[5206],{"type":52,"value":206},{"type":46,"tag":156,"props":5208,"children":5209},{"style":182},[5210],{"type":52,"value":211},{"type":46,"tag":156,"props":5212,"children":5213},{"style":182},[5214],{"type":52,"value":190},{"type":46,"tag":156,"props":5216,"children":5217},{"style":694},[5218],{"type":52,"value":737},{"type":46,"tag":156,"props":5220,"children":5221},{"style":182},[5222],{"type":52,"value":201},{"type":46,"tag":156,"props":5224,"children":5225},{"style":182},[5226],{"type":52,"value":206},{"type":46,"tag":156,"props":5228,"children":5229},{"style":182},[5230],{"type":52,"value":710},{"type":46,"tag":156,"props":5232,"children":5233},{"style":182},[5234],{"type":52,"value":201},{"type":46,"tag":156,"props":5236,"children":5237},{"style":235},[5238],{"type":52,"value":4575},{"type":46,"tag":156,"props":5240,"children":5241},{"style":182},[5242],{"type":52,"value":201},{"type":46,"tag":156,"props":5244,"children":5245},{"style":182},[5246],{"type":52,"value":767},{"type":46,"tag":156,"props":5248,"children":5249},{"style":182},[5250],{"type":52,"value":321},{"type":46,"tag":156,"props":5252,"children":5254},{"class":158,"line":5253},34,[5255],{"type":46,"tag":156,"props":5256,"children":5257},{"style":182},[5258],{"type":52,"value":867},{"type":46,"tag":156,"props":5260,"children":5262},{"class":158,"line":5261},35,[5263],{"type":46,"tag":156,"props":5264,"children":5265},{"style":182},[5266],{"type":52,"value":875},{"type":46,"tag":55,"props":5268,"children":5269},{},[5270],{"type":46,"tag":71,"props":5271,"children":5272},{},[5273],{"type":52,"value":5274},"Benefits of Package Configurations:",{"type":46,"tag":2661,"props":5276,"children":5277},{},[5278,5283,5288,5293],{"type":46,"tag":86,"props":5279,"children":5280},{},[5281],{"type":52,"value":5282},"Keeps configuration close to the code it affects",{"type":46,"tag":86,"props":5284,"children":5285},{},[5286],{"type":52,"value":5287},"Root turbo.json stays clean and focused on base patterns",{"type":46,"tag":86,"props":5289,"children":5290},{},[5291],{"type":52,"value":5292},"Easier to understand what's special about each package",{"type":46,"tag":86,"props":5294,"children":5295},{},[5296,5298,5304],{"type":52,"value":5297},"Works with ",{"type":46,"tag":92,"props":5299,"children":5301},{"className":5300},[],[5302],{"type":52,"value":5303},"$TURBO_EXTENDS$",{"type":52,"value":5305}," to inherit + extend arrays",{"type":46,"tag":55,"props":5307,"children":5308},{},[5309],{"type":46,"tag":71,"props":5310,"children":5311},{},[5312,5314,5319],{"type":52,"value":5313},"When to use ",{"type":46,"tag":92,"props":5315,"children":5317},{"className":5316},[],[5318],{"type":52,"value":4412},{"type":52,"value":5320}," in root:",{"type":46,"tag":2661,"props":5322,"children":5323},{},[5324,5337],{"type":46,"tag":86,"props":5325,"children":5326},{},[5327,5329,5335],{"type":52,"value":5328},"Single package needs a unique dependency (e.g., ",{"type":46,"tag":92,"props":5330,"children":5332},{"className":5331},[],[5333],{"type":52,"value":5334},"\"deploy\": { \"dependsOn\": [\"web#build\"] }",{"type":52,"value":5336},")",{"type":46,"tag":86,"props":5338,"children":5339},{},[5340],{"type":52,"value":5341},"Temporary override while migrating",{"type":46,"tag":55,"props":5343,"children":5344},{},[5345,5347,5353],{"type":52,"value":5346},"See ",{"type":46,"tag":92,"props":5348,"children":5350},{"className":5349},[],[5351],{"type":52,"value":5352},"references\u002Fconfiguration\u002FRULE.md#package-configurations",{"type":52,"value":5354}," for full details.",{"type":46,"tag":1422,"props":5356,"children":5358},{"id":5357},"using-to-traverse-out-of-package-in-inputs",[5359,5360,5366,5368],{"type":52,"value":1600},{"type":46,"tag":92,"props":5361,"children":5363},{"className":5362},[],[5364],{"type":52,"value":5365},"..\u002F",{"type":52,"value":5367}," to Traverse Out of Package in ",{"type":46,"tag":92,"props":5369,"children":5371},{"className":5370},[],[5372],{"type":52,"value":3248},{"type":46,"tag":55,"props":5374,"children":5375},{},[5376,5378,5383,5385,5391],{"type":52,"value":5377},"Don't use relative paths like ",{"type":46,"tag":92,"props":5379,"children":5381},{"className":5380},[],[5382],{"type":52,"value":5365},{"type":52,"value":5384}," to reference files outside the package. Use ",{"type":46,"tag":92,"props":5386,"children":5388},{"className":5387},[],[5389],{"type":52,"value":5390},"$TURBO_ROOT$",{"type":52,"value":5392}," instead.",{"type":46,"tag":145,"props":5394,"children":5396},{"className":147,"code":5395,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG - traversing out of package\n{\n  \"tasks\": {\n    \"build\": {\n      \"inputs\": [\"$TURBO_DEFAULT$\", \"..\u002Fshared-config.json\"]\n    }\n  }\n}\n\n\u002F\u002F CORRECT - use $TURBO_ROOT$ for repo root\n{\n  \"tasks\": {\n    \"build\": {\n      \"inputs\": [\"$TURBO_DEFAULT$\", \"$TURBO_ROOT$\u002Fshared-config.json\"]\n    }\n  }\n}\n",[5397],{"type":46,"tag":92,"props":5398,"children":5399},{"__ignoreMap":150},[5400,5408,5415,5438,5461,5517,5524,5531,5538,5545,5553,5560,5583,5606,5662,5669,5676],{"type":46,"tag":156,"props":5401,"children":5402},{"class":158,"line":159},[5403],{"type":46,"tag":156,"props":5404,"children":5405},{"style":163},[5406],{"type":52,"value":5407},"\u002F\u002F WRONG - traversing out of package\n",{"type":46,"tag":156,"props":5409,"children":5410},{"class":158,"line":169},[5411],{"type":46,"tag":156,"props":5412,"children":5413},{"style":182},[5414],{"type":52,"value":637},{"type":46,"tag":156,"props":5416,"children":5417},{"class":158,"line":178},[5418,5422,5426,5430,5434],{"type":46,"tag":156,"props":5419,"children":5420},{"style":182},[5421],{"type":52,"value":645},{"type":46,"tag":156,"props":5423,"children":5424},{"style":193},[5425],{"type":52,"value":650},{"type":46,"tag":156,"props":5427,"children":5428},{"style":182},[5429],{"type":52,"value":201},{"type":46,"tag":156,"props":5431,"children":5432},{"style":182},[5433],{"type":52,"value":206},{"type":46,"tag":156,"props":5435,"children":5436},{"style":182},[5437],{"type":52,"value":663},{"type":46,"tag":156,"props":5439,"children":5440},{"class":158,"line":324},[5441,5445,5449,5453,5457],{"type":46,"tag":156,"props":5442,"children":5443},{"style":182},[5444],{"type":52,"value":671},{"type":46,"tag":156,"props":5446,"children":5447},{"style":218},[5448],{"type":52,"value":18},{"type":46,"tag":156,"props":5450,"children":5451},{"style":182},[5452],{"type":52,"value":201},{"type":46,"tag":156,"props":5454,"children":5455},{"style":182},[5456],{"type":52,"value":206},{"type":46,"tag":156,"props":5458,"children":5459},{"style":182},[5460],{"type":52,"value":663},{"type":46,"tag":156,"props":5462,"children":5463},{"class":158,"line":334},[5464,5468,5472,5476,5480,5484,5488,5492,5496,5500,5504,5509,5513],{"type":46,"tag":156,"props":5465,"children":5466},{"style":182},[5467],{"type":52,"value":2961},{"type":46,"tag":156,"props":5469,"children":5470},{"style":694},[5471],{"type":52,"value":3248},{"type":46,"tag":156,"props":5473,"children":5474},{"style":182},[5475],{"type":52,"value":201},{"type":46,"tag":156,"props":5477,"children":5478},{"style":182},[5479],{"type":52,"value":206},{"type":46,"tag":156,"props":5481,"children":5482},{"style":182},[5483],{"type":52,"value":710},{"type":46,"tag":156,"props":5485,"children":5486},{"style":182},[5487],{"type":52,"value":201},{"type":46,"tag":156,"props":5489,"children":5490},{"style":235},[5491],{"type":52,"value":3269},{"type":46,"tag":156,"props":5493,"children":5494},{"style":182},[5495],{"type":52,"value":201},{"type":46,"tag":156,"props":5497,"children":5498},{"style":182},[5499],{"type":52,"value":247},{"type":46,"tag":156,"props":5501,"children":5502},{"style":182},[5503],{"type":52,"value":190},{"type":46,"tag":156,"props":5505,"children":5506},{"style":235},[5507],{"type":52,"value":5508},"..\u002Fshared-config.json",{"type":46,"tag":156,"props":5510,"children":5511},{"style":182},[5512],{"type":52,"value":201},{"type":46,"tag":156,"props":5514,"children":5515},{"style":182},[5516],{"type":52,"value":2994},{"type":46,"tag":156,"props":5518,"children":5519},{"class":158,"line":343},[5520],{"type":46,"tag":156,"props":5521,"children":5522},{"style":182},[5523],{"type":52,"value":3003},{"type":46,"tag":156,"props":5525,"children":5526},{"class":158,"line":472},[5527],{"type":46,"tag":156,"props":5528,"children":5529},{"style":182},[5530],{"type":52,"value":867},{"type":46,"tag":156,"props":5532,"children":5533},{"class":158,"line":480},[5534],{"type":46,"tag":156,"props":5535,"children":5536},{"style":182},[5537],{"type":52,"value":875},{"type":46,"tag":156,"props":5539,"children":5540},{"class":158,"line":489},[5541],{"type":46,"tag":156,"props":5542,"children":5543},{"emptyLinePlaceholder":328},[5544],{"type":52,"value":331},{"type":46,"tag":156,"props":5546,"children":5547},{"class":158,"line":1775},[5548],{"type":46,"tag":156,"props":5549,"children":5550},{"style":163},[5551],{"type":52,"value":5552},"\u002F\u002F CORRECT - use $TURBO_ROOT$ for repo root\n",{"type":46,"tag":156,"props":5554,"children":5555},{"class":158,"line":1783},[5556],{"type":46,"tag":156,"props":5557,"children":5558},{"style":182},[5559],{"type":52,"value":637},{"type":46,"tag":156,"props":5561,"children":5562},{"class":158,"line":1807},[5563,5567,5571,5575,5579],{"type":46,"tag":156,"props":5564,"children":5565},{"style":182},[5566],{"type":52,"value":645},{"type":46,"tag":156,"props":5568,"children":5569},{"style":193},[5570],{"type":52,"value":650},{"type":46,"tag":156,"props":5572,"children":5573},{"style":182},[5574],{"type":52,"value":201},{"type":46,"tag":156,"props":5576,"children":5577},{"style":182},[5578],{"type":52,"value":206},{"type":46,"tag":156,"props":5580,"children":5581},{"style":182},[5582],{"type":52,"value":663},{"type":46,"tag":156,"props":5584,"children":5585},{"class":158,"line":1843},[5586,5590,5594,5598,5602],{"type":46,"tag":156,"props":5587,"children":5588},{"style":182},[5589],{"type":52,"value":671},{"type":46,"tag":156,"props":5591,"children":5592},{"style":218},[5593],{"type":52,"value":18},{"type":46,"tag":156,"props":5595,"children":5596},{"style":182},[5597],{"type":52,"value":201},{"type":46,"tag":156,"props":5599,"children":5600},{"style":182},[5601],{"type":52,"value":206},{"type":46,"tag":156,"props":5603,"children":5604},{"style":182},[5605],{"type":52,"value":663},{"type":46,"tag":156,"props":5607,"children":5608},{"class":158,"line":1876},[5609,5613,5617,5621,5625,5629,5633,5637,5641,5645,5649,5654,5658],{"type":46,"tag":156,"props":5610,"children":5611},{"style":182},[5612],{"type":52,"value":2961},{"type":46,"tag":156,"props":5614,"children":5615},{"style":694},[5616],{"type":52,"value":3248},{"type":46,"tag":156,"props":5618,"children":5619},{"style":182},[5620],{"type":52,"value":201},{"type":46,"tag":156,"props":5622,"children":5623},{"style":182},[5624],{"type":52,"value":206},{"type":46,"tag":156,"props":5626,"children":5627},{"style":182},[5628],{"type":52,"value":710},{"type":46,"tag":156,"props":5630,"children":5631},{"style":182},[5632],{"type":52,"value":201},{"type":46,"tag":156,"props":5634,"children":5635},{"style":235},[5636],{"type":52,"value":3269},{"type":46,"tag":156,"props":5638,"children":5639},{"style":182},[5640],{"type":52,"value":201},{"type":46,"tag":156,"props":5642,"children":5643},{"style":182},[5644],{"type":52,"value":247},{"type":46,"tag":156,"props":5646,"children":5647},{"style":182},[5648],{"type":52,"value":190},{"type":46,"tag":156,"props":5650,"children":5651},{"style":235},[5652],{"type":52,"value":5653},"$TURBO_ROOT$\u002Fshared-config.json",{"type":46,"tag":156,"props":5655,"children":5656},{"style":182},[5657],{"type":52,"value":201},{"type":46,"tag":156,"props":5659,"children":5660},{"style":182},[5661],{"type":52,"value":2994},{"type":46,"tag":156,"props":5663,"children":5664},{"class":158,"line":1884},[5665],{"type":46,"tag":156,"props":5666,"children":5667},{"style":182},[5668],{"type":52,"value":3003},{"type":46,"tag":156,"props":5670,"children":5671},{"class":158,"line":2932},[5672],{"type":46,"tag":156,"props":5673,"children":5674},{"style":182},[5675],{"type":52,"value":867},{"type":46,"tag":156,"props":5677,"children":5678},{"class":158,"line":28},[5679],{"type":46,"tag":156,"props":5680,"children":5681},{"style":182},[5682],{"type":52,"value":875},{"type":46,"tag":1422,"props":5684,"children":5686},{"id":5685},"missing-outputs-for-file-producing-tasks",[5687,5689,5694],{"type":52,"value":5688},"Missing ",{"type":46,"tag":92,"props":5690,"children":5692},{"className":5691},[],[5693],{"type":52,"value":737},{"type":52,"value":5695}," for File-Producing Tasks",{"type":46,"tag":55,"props":5697,"children":5698},{},[5699],{"type":46,"tag":71,"props":5700,"children":5701},{},[5702,5704,5709],{"type":52,"value":5703},"Before flagging missing ",{"type":46,"tag":92,"props":5705,"children":5707},{"className":5706},[],[5708],{"type":52,"value":737},{"type":52,"value":5710},", check what the task actually produces:",{"type":46,"tag":82,"props":5712,"children":5713},{},[5714,5734,5739],{"type":46,"tag":86,"props":5715,"children":5716},{},[5717,5719,5725,5727,5733],{"type":52,"value":5718},"Read the package's script (e.g., ",{"type":46,"tag":92,"props":5720,"children":5722},{"className":5721},[],[5723],{"type":52,"value":5724},"\"build\": \"tsc\"",{"type":52,"value":5726},", ",{"type":46,"tag":92,"props":5728,"children":5730},{"className":5729},[],[5731],{"type":52,"value":5732},"\"test\": \"vitest\"",{"type":52,"value":5336},{"type":46,"tag":86,"props":5735,"children":5736},{},[5737],{"type":52,"value":5738},"Determine if it writes files to disk or only outputs to stdout",{"type":46,"tag":86,"props":5740,"children":5741},{},[5742],{"type":52,"value":5743},"Only flag if the task produces files that should be cached",{"type":46,"tag":145,"props":5745,"children":5747},{"className":147,"code":5746,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG: build produces files but they're not cached\n{\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"]\n    }\n  }\n}\n\n\u002F\u002F CORRECT: build outputs are cached\n{\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist\u002F**\"]\n    }\n  }\n}\n",[5748],{"type":46,"tag":92,"props":5749,"children":5750},{"__ignoreMap":150},[5751,5759,5766,5789,5812,5851,5858,5865,5872,5879,5887,5894,5917,5940,5979,6018,6025,6032],{"type":46,"tag":156,"props":5752,"children":5753},{"class":158,"line":159},[5754],{"type":46,"tag":156,"props":5755,"children":5756},{"style":163},[5757],{"type":52,"value":5758},"\u002F\u002F WRONG: build produces files but they're not cached\n",{"type":46,"tag":156,"props":5760,"children":5761},{"class":158,"line":169},[5762],{"type":46,"tag":156,"props":5763,"children":5764},{"style":182},[5765],{"type":52,"value":637},{"type":46,"tag":156,"props":5767,"children":5768},{"class":158,"line":178},[5769,5773,5777,5781,5785],{"type":46,"tag":156,"props":5770,"children":5771},{"style":182},[5772],{"type":52,"value":645},{"type":46,"tag":156,"props":5774,"children":5775},{"style":193},[5776],{"type":52,"value":650},{"type":46,"tag":156,"props":5778,"children":5779},{"style":182},[5780],{"type":52,"value":201},{"type":46,"tag":156,"props":5782,"children":5783},{"style":182},[5784],{"type":52,"value":206},{"type":46,"tag":156,"props":5786,"children":5787},{"style":182},[5788],{"type":52,"value":663},{"type":46,"tag":156,"props":5790,"children":5791},{"class":158,"line":324},[5792,5796,5800,5804,5808],{"type":46,"tag":156,"props":5793,"children":5794},{"style":182},[5795],{"type":52,"value":671},{"type":46,"tag":156,"props":5797,"children":5798},{"style":218},[5799],{"type":52,"value":18},{"type":46,"tag":156,"props":5801,"children":5802},{"style":182},[5803],{"type":52,"value":201},{"type":46,"tag":156,"props":5805,"children":5806},{"style":182},[5807],{"type":52,"value":206},{"type":46,"tag":156,"props":5809,"children":5810},{"style":182},[5811],{"type":52,"value":663},{"type":46,"tag":156,"props":5813,"children":5814},{"class":158,"line":334},[5815,5819,5823,5827,5831,5835,5839,5843,5847],{"type":46,"tag":156,"props":5816,"children":5817},{"style":182},[5818],{"type":52,"value":2961},{"type":46,"tag":156,"props":5820,"children":5821},{"style":694},[5822],{"type":52,"value":697},{"type":46,"tag":156,"props":5824,"children":5825},{"style":182},[5826],{"type":52,"value":201},{"type":46,"tag":156,"props":5828,"children":5829},{"style":182},[5830],{"type":52,"value":206},{"type":46,"tag":156,"props":5832,"children":5833},{"style":182},[5834],{"type":52,"value":710},{"type":46,"tag":156,"props":5836,"children":5837},{"style":182},[5838],{"type":52,"value":201},{"type":46,"tag":156,"props":5840,"children":5841},{"style":235},[5842],{"type":52,"value":719},{"type":46,"tag":156,"props":5844,"children":5845},{"style":182},[5846],{"type":52,"value":201},{"type":46,"tag":156,"props":5848,"children":5849},{"style":182},[5850],{"type":52,"value":2994},{"type":46,"tag":156,"props":5852,"children":5853},{"class":158,"line":343},[5854],{"type":46,"tag":156,"props":5855,"children":5856},{"style":182},[5857],{"type":52,"value":3003},{"type":46,"tag":156,"props":5859,"children":5860},{"class":158,"line":472},[5861],{"type":46,"tag":156,"props":5862,"children":5863},{"style":182},[5864],{"type":52,"value":867},{"type":46,"tag":156,"props":5866,"children":5867},{"class":158,"line":480},[5868],{"type":46,"tag":156,"props":5869,"children":5870},{"style":182},[5871],{"type":52,"value":875},{"type":46,"tag":156,"props":5873,"children":5874},{"class":158,"line":489},[5875],{"type":46,"tag":156,"props":5876,"children":5877},{"emptyLinePlaceholder":328},[5878],{"type":52,"value":331},{"type":46,"tag":156,"props":5880,"children":5881},{"class":158,"line":1775},[5882],{"type":46,"tag":156,"props":5883,"children":5884},{"style":163},[5885],{"type":52,"value":5886},"\u002F\u002F CORRECT: build outputs are cached\n",{"type":46,"tag":156,"props":5888,"children":5889},{"class":158,"line":1783},[5890],{"type":46,"tag":156,"props":5891,"children":5892},{"style":182},[5893],{"type":52,"value":637},{"type":46,"tag":156,"props":5895,"children":5896},{"class":158,"line":1807},[5897,5901,5905,5909,5913],{"type":46,"tag":156,"props":5898,"children":5899},{"style":182},[5900],{"type":52,"value":645},{"type":46,"tag":156,"props":5902,"children":5903},{"style":193},[5904],{"type":52,"value":650},{"type":46,"tag":156,"props":5906,"children":5907},{"style":182},[5908],{"type":52,"value":201},{"type":46,"tag":156,"props":5910,"children":5911},{"style":182},[5912],{"type":52,"value":206},{"type":46,"tag":156,"props":5914,"children":5915},{"style":182},[5916],{"type":52,"value":663},{"type":46,"tag":156,"props":5918,"children":5919},{"class":158,"line":1843},[5920,5924,5928,5932,5936],{"type":46,"tag":156,"props":5921,"children":5922},{"style":182},[5923],{"type":52,"value":671},{"type":46,"tag":156,"props":5925,"children":5926},{"style":218},[5927],{"type":52,"value":18},{"type":46,"tag":156,"props":5929,"children":5930},{"style":182},[5931],{"type":52,"value":201},{"type":46,"tag":156,"props":5933,"children":5934},{"style":182},[5935],{"type":52,"value":206},{"type":46,"tag":156,"props":5937,"children":5938},{"style":182},[5939],{"type":52,"value":663},{"type":46,"tag":156,"props":5941,"children":5942},{"class":158,"line":1876},[5943,5947,5951,5955,5959,5963,5967,5971,5975],{"type":46,"tag":156,"props":5944,"children":5945},{"style":182},[5946],{"type":52,"value":2961},{"type":46,"tag":156,"props":5948,"children":5949},{"style":694},[5950],{"type":52,"value":697},{"type":46,"tag":156,"props":5952,"children":5953},{"style":182},[5954],{"type":52,"value":201},{"type":46,"tag":156,"props":5956,"children":5957},{"style":182},[5958],{"type":52,"value":206},{"type":46,"tag":156,"props":5960,"children":5961},{"style":182},[5962],{"type":52,"value":710},{"type":46,"tag":156,"props":5964,"children":5965},{"style":182},[5966],{"type":52,"value":201},{"type":46,"tag":156,"props":5968,"children":5969},{"style":235},[5970],{"type":52,"value":719},{"type":46,"tag":156,"props":5972,"children":5973},{"style":182},[5974],{"type":52,"value":201},{"type":46,"tag":156,"props":5976,"children":5977},{"style":182},[5978],{"type":52,"value":3190},{"type":46,"tag":156,"props":5980,"children":5981},{"class":158,"line":1884},[5982,5986,5990,5994,5998,6002,6006,6010,6014],{"type":46,"tag":156,"props":5983,"children":5984},{"style":182},[5985],{"type":52,"value":2961},{"type":46,"tag":156,"props":5987,"children":5988},{"style":694},[5989],{"type":52,"value":737},{"type":46,"tag":156,"props":5991,"children":5992},{"style":182},[5993],{"type":52,"value":201},{"type":46,"tag":156,"props":5995,"children":5996},{"style":182},[5997],{"type":52,"value":206},{"type":46,"tag":156,"props":5999,"children":6000},{"style":182},[6001],{"type":52,"value":710},{"type":46,"tag":156,"props":6003,"children":6004},{"style":182},[6005],{"type":52,"value":201},{"type":46,"tag":156,"props":6007,"children":6008},{"style":235},[6009],{"type":52,"value":758},{"type":46,"tag":156,"props":6011,"children":6012},{"style":182},[6013],{"type":52,"value":201},{"type":46,"tag":156,"props":6015,"children":6016},{"style":182},[6017],{"type":52,"value":2994},{"type":46,"tag":156,"props":6019,"children":6020},{"class":158,"line":2932},[6021],{"type":46,"tag":156,"props":6022,"children":6023},{"style":182},[6024],{"type":52,"value":3003},{"type":46,"tag":156,"props":6026,"children":6027},{"class":158,"line":28},[6028],{"type":46,"tag":156,"props":6029,"children":6030},{"style":182},[6031],{"type":52,"value":867},{"type":46,"tag":156,"props":6033,"children":6034},{"class":158,"line":2997},[6035],{"type":46,"tag":156,"props":6036,"children":6037},{"style":182},[6038],{"type":52,"value":875},{"type":46,"tag":55,"props":6040,"children":6041},{},[6042],{"type":52,"value":6043},"Common outputs by framework:",{"type":46,"tag":2661,"props":6045,"children":6046},{},[6047,6058,6069],{"type":46,"tag":86,"props":6048,"children":6049},{},[6050,6052],{"type":52,"value":6051},"Next.js: ",{"type":46,"tag":92,"props":6053,"children":6055},{"className":6054},[],[6056],{"type":52,"value":6057},"[\".next\u002F**\", \"!.next\u002Fcache\u002F**\"]",{"type":46,"tag":86,"props":6059,"children":6060},{},[6061,6063],{"type":52,"value":6062},"Vite\u002FRollup: ",{"type":46,"tag":92,"props":6064,"children":6066},{"className":6065},[],[6067],{"type":52,"value":6068},"[\"dist\u002F**\"]",{"type":46,"tag":86,"props":6070,"children":6071},{},[6072,6074,6079,6081],{"type":52,"value":6073},"tsc: ",{"type":46,"tag":92,"props":6075,"children":6077},{"className":6076},[],[6078],{"type":52,"value":6068},{"type":52,"value":6080}," or custom ",{"type":46,"tag":92,"props":6082,"children":6084},{"className":6083},[],[6085],{"type":52,"value":6086},"outDir",{"type":46,"tag":55,"props":6088,"children":6089},{},[6090],{"type":46,"tag":71,"props":6091,"children":6092},{},[6093,6095,6101],{"type":52,"value":6094},"TypeScript ",{"type":46,"tag":92,"props":6096,"children":6098},{"className":6097},[],[6099],{"type":52,"value":6100},"--noEmit",{"type":52,"value":6102}," can still produce cache files:",{"type":46,"tag":55,"props":6104,"children":6105},{},[6106,6108,6114,6116,6122,6124,6130],{"type":52,"value":6107},"When ",{"type":46,"tag":92,"props":6109,"children":6111},{"className":6110},[],[6112],{"type":52,"value":6113},"incremental: true",{"type":52,"value":6115}," in tsconfig.json, ",{"type":46,"tag":92,"props":6117,"children":6119},{"className":6118},[],[6120],{"type":52,"value":6121},"tsc --noEmit",{"type":52,"value":6123}," writes ",{"type":46,"tag":92,"props":6125,"children":6127},{"className":6126},[],[6128],{"type":52,"value":6129},".tsbuildinfo",{"type":52,"value":6131}," files even without emitting JS. Check the tsconfig before assuming no outputs:",{"type":46,"tag":145,"props":6133,"children":6135},{"className":147,"code":6134,"language":149,"meta":150,"style":150},"\u002F\u002F If tsconfig has incremental: true, tsc --noEmit produces cache files\n{\n  \"tasks\": {\n    \"typecheck\": {\n      \"outputs\": [\"node_modules\u002F.cache\u002Ftsbuildinfo.json\"] \u002F\u002F or wherever tsBuildInfoFile points\n    }\n  }\n}\n",[6136],{"type":46,"tag":92,"props":6137,"children":6138},{"__ignoreMap":150},[6139,6147,6154,6177,6201,6246,6253,6260],{"type":46,"tag":156,"props":6140,"children":6141},{"class":158,"line":159},[6142],{"type":46,"tag":156,"props":6143,"children":6144},{"style":163},[6145],{"type":52,"value":6146},"\u002F\u002F If tsconfig has incremental: true, tsc --noEmit produces cache files\n",{"type":46,"tag":156,"props":6148,"children":6149},{"class":158,"line":169},[6150],{"type":46,"tag":156,"props":6151,"children":6152},{"style":182},[6153],{"type":52,"value":637},{"type":46,"tag":156,"props":6155,"children":6156},{"class":158,"line":178},[6157,6161,6165,6169,6173],{"type":46,"tag":156,"props":6158,"children":6159},{"style":182},[6160],{"type":52,"value":645},{"type":46,"tag":156,"props":6162,"children":6163},{"style":193},[6164],{"type":52,"value":650},{"type":46,"tag":156,"props":6166,"children":6167},{"style":182},[6168],{"type":52,"value":201},{"type":46,"tag":156,"props":6170,"children":6171},{"style":182},[6172],{"type":52,"value":206},{"type":46,"tag":156,"props":6174,"children":6175},{"style":182},[6176],{"type":52,"value":663},{"type":46,"tag":156,"props":6178,"children":6179},{"class":158,"line":324},[6180,6184,6189,6193,6197],{"type":46,"tag":156,"props":6181,"children":6182},{"style":182},[6183],{"type":52,"value":671},{"type":46,"tag":156,"props":6185,"children":6186},{"style":218},[6187],{"type":52,"value":6188},"typecheck",{"type":46,"tag":156,"props":6190,"children":6191},{"style":182},[6192],{"type":52,"value":201},{"type":46,"tag":156,"props":6194,"children":6195},{"style":182},[6196],{"type":52,"value":206},{"type":46,"tag":156,"props":6198,"children":6199},{"style":182},[6200],{"type":52,"value":663},{"type":46,"tag":156,"props":6202,"children":6203},{"class":158,"line":334},[6204,6208,6212,6216,6220,6224,6228,6233,6237,6241],{"type":46,"tag":156,"props":6205,"children":6206},{"style":182},[6207],{"type":52,"value":2961},{"type":46,"tag":156,"props":6209,"children":6210},{"style":694},[6211],{"type":52,"value":737},{"type":46,"tag":156,"props":6213,"children":6214},{"style":182},[6215],{"type":52,"value":201},{"type":46,"tag":156,"props":6217,"children":6218},{"style":182},[6219],{"type":52,"value":206},{"type":46,"tag":156,"props":6221,"children":6222},{"style":182},[6223],{"type":52,"value":710},{"type":46,"tag":156,"props":6225,"children":6226},{"style":182},[6227],{"type":52,"value":201},{"type":46,"tag":156,"props":6229,"children":6230},{"style":235},[6231],{"type":52,"value":6232},"node_modules\u002F.cache\u002Ftsbuildinfo.json",{"type":46,"tag":156,"props":6234,"children":6235},{"style":182},[6236],{"type":52,"value":201},{"type":46,"tag":156,"props":6238,"children":6239},{"style":182},[6240],{"type":52,"value":767},{"type":46,"tag":156,"props":6242,"children":6243},{"style":163},[6244],{"type":52,"value":6245}," \u002F\u002F or wherever tsBuildInfoFile points\n",{"type":46,"tag":156,"props":6247,"children":6248},{"class":158,"line":343},[6249],{"type":46,"tag":156,"props":6250,"children":6251},{"style":182},[6252],{"type":52,"value":3003},{"type":46,"tag":156,"props":6254,"children":6255},{"class":158,"line":472},[6256],{"type":46,"tag":156,"props":6257,"children":6258},{"style":182},[6259],{"type":52,"value":867},{"type":46,"tag":156,"props":6261,"children":6262},{"class":158,"line":480},[6263],{"type":46,"tag":156,"props":6264,"children":6265},{"style":182},[6266],{"type":52,"value":875},{"type":46,"tag":55,"props":6268,"children":6269},{},[6270],{"type":52,"value":6271},"To determine correct outputs for TypeScript tasks:",{"type":46,"tag":82,"props":6273,"children":6274},{},[6275,6296,6316],{"type":46,"tag":86,"props":6276,"children":6277},{},[6278,6280,6286,6288,6294],{"type":52,"value":6279},"Check if ",{"type":46,"tag":92,"props":6281,"children":6283},{"className":6282},[],[6284],{"type":52,"value":6285},"incremental",{"type":52,"value":6287}," or ",{"type":46,"tag":92,"props":6289,"children":6291},{"className":6290},[],[6292],{"type":52,"value":6293},"composite",{"type":52,"value":6295}," is enabled in tsconfig",{"type":46,"tag":86,"props":6297,"children":6298},{},[6299,6301,6307,6309,6314],{"type":52,"value":6300},"Check ",{"type":46,"tag":92,"props":6302,"children":6304},{"className":6303},[],[6305],{"type":52,"value":6306},"tsBuildInfoFile",{"type":52,"value":6308}," for custom cache location (default: alongside ",{"type":46,"tag":92,"props":6310,"children":6312},{"className":6311},[],[6313],{"type":52,"value":6086},{"type":52,"value":6315}," or in project root)",{"type":46,"tag":86,"props":6317,"children":6318},{},[6319,6321,6326],{"type":52,"value":6320},"If no incremental mode, ",{"type":46,"tag":92,"props":6322,"children":6324},{"className":6323},[],[6325],{"type":52,"value":6121},{"type":52,"value":6327}," produces no files",{"type":46,"tag":1422,"props":6329,"children":6331},{"id":6330},"build-vs-build-confusion",[6332,6337,6338,6343],{"type":46,"tag":92,"props":6333,"children":6335},{"className":6334},[],[6336],{"type":52,"value":719},{"type":52,"value":1237},{"type":46,"tag":92,"props":6339,"children":6341},{"className":6340},[],[6342],{"type":52,"value":18},{"type":52,"value":6344}," Confusion",{"type":46,"tag":145,"props":6346,"children":6348},{"className":147,"code":6347,"language":149,"meta":150,"style":150},"{\n  \"tasks\": {\n    \u002F\u002F ^build = run build in DEPENDENCIES first (other packages this one imports)\n    \"build\": {\n      \"dependsOn\": [\"^build\"]\n    },\n    \u002F\u002F build (no ^) = run build in SAME PACKAGE first\n    \"test\": {\n      \"dependsOn\": [\"build\"]\n    },\n    \u002F\u002F pkg#task = specific package's task\n    \"deploy\": {\n      \"dependsOn\": [\"web#build\"]\n    }\n  }\n}\n",[6349],{"type":46,"tag":92,"props":6350,"children":6351},{"__ignoreMap":150},[6352,6359,6382,6390,6413,6452,6459,6467,6490,6529,6536,6544,6568,6608,6615,6622],{"type":46,"tag":156,"props":6353,"children":6354},{"class":158,"line":159},[6355],{"type":46,"tag":156,"props":6356,"children":6357},{"style":182},[6358],{"type":52,"value":637},{"type":46,"tag":156,"props":6360,"children":6361},{"class":158,"line":169},[6362,6366,6370,6374,6378],{"type":46,"tag":156,"props":6363,"children":6364},{"style":182},[6365],{"type":52,"value":645},{"type":46,"tag":156,"props":6367,"children":6368},{"style":193},[6369],{"type":52,"value":650},{"type":46,"tag":156,"props":6371,"children":6372},{"style":182},[6373],{"type":52,"value":201},{"type":46,"tag":156,"props":6375,"children":6376},{"style":182},[6377],{"type":52,"value":206},{"type":46,"tag":156,"props":6379,"children":6380},{"style":182},[6381],{"type":52,"value":663},{"type":46,"tag":156,"props":6383,"children":6384},{"class":158,"line":178},[6385],{"type":46,"tag":156,"props":6386,"children":6387},{"style":163},[6388],{"type":52,"value":6389},"    \u002F\u002F ^build = run build in DEPENDENCIES first (other packages this one imports)\n",{"type":46,"tag":156,"props":6391,"children":6392},{"class":158,"line":324},[6393,6397,6401,6405,6409],{"type":46,"tag":156,"props":6394,"children":6395},{"style":182},[6396],{"type":52,"value":671},{"type":46,"tag":156,"props":6398,"children":6399},{"style":218},[6400],{"type":52,"value":18},{"type":46,"tag":156,"props":6402,"children":6403},{"style":182},[6404],{"type":52,"value":201},{"type":46,"tag":156,"props":6406,"children":6407},{"style":182},[6408],{"type":52,"value":206},{"type":46,"tag":156,"props":6410,"children":6411},{"style":182},[6412],{"type":52,"value":663},{"type":46,"tag":156,"props":6414,"children":6415},{"class":158,"line":334},[6416,6420,6424,6428,6432,6436,6440,6444,6448],{"type":46,"tag":156,"props":6417,"children":6418},{"style":182},[6419],{"type":52,"value":2961},{"type":46,"tag":156,"props":6421,"children":6422},{"style":694},[6423],{"type":52,"value":697},{"type":46,"tag":156,"props":6425,"children":6426},{"style":182},[6427],{"type":52,"value":201},{"type":46,"tag":156,"props":6429,"children":6430},{"style":182},[6431],{"type":52,"value":206},{"type":46,"tag":156,"props":6433,"children":6434},{"style":182},[6435],{"type":52,"value":710},{"type":46,"tag":156,"props":6437,"children":6438},{"style":182},[6439],{"type":52,"value":201},{"type":46,"tag":156,"props":6441,"children":6442},{"style":235},[6443],{"type":52,"value":719},{"type":46,"tag":156,"props":6445,"children":6446},{"style":182},[6447],{"type":52,"value":201},{"type":46,"tag":156,"props":6449,"children":6450},{"style":182},[6451],{"type":52,"value":2994},{"type":46,"tag":156,"props":6453,"children":6454},{"class":158,"line":343},[6455],{"type":46,"tag":156,"props":6456,"children":6457},{"style":182},[6458],{"type":52,"value":3554},{"type":46,"tag":156,"props":6460,"children":6461},{"class":158,"line":472},[6462],{"type":46,"tag":156,"props":6463,"children":6464},{"style":163},[6465],{"type":52,"value":6466},"    \u002F\u002F build (no ^) = run build in SAME PACKAGE first\n",{"type":46,"tag":156,"props":6468,"children":6469},{"class":158,"line":480},[6470,6474,6478,6482,6486],{"type":46,"tag":156,"props":6471,"children":6472},{"style":182},[6473],{"type":52,"value":671},{"type":46,"tag":156,"props":6475,"children":6476},{"style":218},[6477],{"type":52,"value":290},{"type":46,"tag":156,"props":6479,"children":6480},{"style":182},[6481],{"type":52,"value":201},{"type":46,"tag":156,"props":6483,"children":6484},{"style":182},[6485],{"type":52,"value":206},{"type":46,"tag":156,"props":6487,"children":6488},{"style":182},[6489],{"type":52,"value":663},{"type":46,"tag":156,"props":6491,"children":6492},{"class":158,"line":489},[6493,6497,6501,6505,6509,6513,6517,6521,6525],{"type":46,"tag":156,"props":6494,"children":6495},{"style":182},[6496],{"type":52,"value":2961},{"type":46,"tag":156,"props":6498,"children":6499},{"style":694},[6500],{"type":52,"value":697},{"type":46,"tag":156,"props":6502,"children":6503},{"style":182},[6504],{"type":52,"value":201},{"type":46,"tag":156,"props":6506,"children":6507},{"style":182},[6508],{"type":52,"value":206},{"type":46,"tag":156,"props":6510,"children":6511},{"style":182},[6512],{"type":52,"value":710},{"type":46,"tag":156,"props":6514,"children":6515},{"style":182},[6516],{"type":52,"value":201},{"type":46,"tag":156,"props":6518,"children":6519},{"style":235},[6520],{"type":52,"value":18},{"type":46,"tag":156,"props":6522,"children":6523},{"style":182},[6524],{"type":52,"value":201},{"type":46,"tag":156,"props":6526,"children":6527},{"style":182},[6528],{"type":52,"value":2994},{"type":46,"tag":156,"props":6530,"children":6531},{"class":158,"line":1775},[6532],{"type":46,"tag":156,"props":6533,"children":6534},{"style":182},[6535],{"type":52,"value":3554},{"type":46,"tag":156,"props":6537,"children":6538},{"class":158,"line":1783},[6539],{"type":46,"tag":156,"props":6540,"children":6541},{"style":163},[6542],{"type":52,"value":6543},"    \u002F\u002F pkg#task = specific package's task\n",{"type":46,"tag":156,"props":6545,"children":6546},{"class":158,"line":1807},[6547,6551,6556,6560,6564],{"type":46,"tag":156,"props":6548,"children":6549},{"style":182},[6550],{"type":52,"value":671},{"type":46,"tag":156,"props":6552,"children":6553},{"style":218},[6554],{"type":52,"value":6555},"deploy",{"type":46,"tag":156,"props":6557,"children":6558},{"style":182},[6559],{"type":52,"value":201},{"type":46,"tag":156,"props":6561,"children":6562},{"style":182},[6563],{"type":52,"value":206},{"type":46,"tag":156,"props":6565,"children":6566},{"style":182},[6567],{"type":52,"value":663},{"type":46,"tag":156,"props":6569,"children":6570},{"class":158,"line":1843},[6571,6575,6579,6583,6587,6591,6595,6600,6604],{"type":46,"tag":156,"props":6572,"children":6573},{"style":182},[6574],{"type":52,"value":2961},{"type":46,"tag":156,"props":6576,"children":6577},{"style":694},[6578],{"type":52,"value":697},{"type":46,"tag":156,"props":6580,"children":6581},{"style":182},[6582],{"type":52,"value":201},{"type":46,"tag":156,"props":6584,"children":6585},{"style":182},[6586],{"type":52,"value":206},{"type":46,"tag":156,"props":6588,"children":6589},{"style":182},[6590],{"type":52,"value":710},{"type":46,"tag":156,"props":6592,"children":6593},{"style":182},[6594],{"type":52,"value":201},{"type":46,"tag":156,"props":6596,"children":6597},{"style":235},[6598],{"type":52,"value":6599},"web#build",{"type":46,"tag":156,"props":6601,"children":6602},{"style":182},[6603],{"type":52,"value":201},{"type":46,"tag":156,"props":6605,"children":6606},{"style":182},[6607],{"type":52,"value":2994},{"type":46,"tag":156,"props":6609,"children":6610},{"class":158,"line":1876},[6611],{"type":46,"tag":156,"props":6612,"children":6613},{"style":182},[6614],{"type":52,"value":3003},{"type":46,"tag":156,"props":6616,"children":6617},{"class":158,"line":1884},[6618],{"type":46,"tag":156,"props":6619,"children":6620},{"style":182},[6621],{"type":52,"value":867},{"type":46,"tag":156,"props":6623,"children":6624},{"class":158,"line":2932},[6625],{"type":46,"tag":156,"props":6626,"children":6627},{"style":182},[6628],{"type":52,"value":875},{"type":46,"tag":1422,"props":6630,"children":6632},{"id":6631},"environment-variables-not-hashed",[6633],{"type":52,"value":6634},"Environment Variables Not Hashed",{"type":46,"tag":145,"props":6636,"children":6638},{"className":147,"code":6637,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG: API_URL changes won't cause rebuilds\n{\n  \"tasks\": {\n    \"build\": {\n      \"outputs\": [\"dist\u002F**\"]\n    }\n  }\n}\n\n\u002F\u002F CORRECT: API_URL changes invalidate cache\n{\n  \"tasks\": {\n    \"build\": {\n      \"outputs\": [\"dist\u002F**\"],\n      \"env\": [\"API_URL\", \"API_KEY\"]\n    }\n  }\n}\n",[6639],{"type":46,"tag":92,"props":6640,"children":6641},{"__ignoreMap":150},[6642,6650,6657,6680,6703,6742,6749,6756,6763,6770,6778,6785,6808,6831,6870,6926,6933,6940],{"type":46,"tag":156,"props":6643,"children":6644},{"class":158,"line":159},[6645],{"type":46,"tag":156,"props":6646,"children":6647},{"style":163},[6648],{"type":52,"value":6649},"\u002F\u002F WRONG: API_URL changes won't cause rebuilds\n",{"type":46,"tag":156,"props":6651,"children":6652},{"class":158,"line":169},[6653],{"type":46,"tag":156,"props":6654,"children":6655},{"style":182},[6656],{"type":52,"value":637},{"type":46,"tag":156,"props":6658,"children":6659},{"class":158,"line":178},[6660,6664,6668,6672,6676],{"type":46,"tag":156,"props":6661,"children":6662},{"style":182},[6663],{"type":52,"value":645},{"type":46,"tag":156,"props":6665,"children":6666},{"style":193},[6667],{"type":52,"value":650},{"type":46,"tag":156,"props":6669,"children":6670},{"style":182},[6671],{"type":52,"value":201},{"type":46,"tag":156,"props":6673,"children":6674},{"style":182},[6675],{"type":52,"value":206},{"type":46,"tag":156,"props":6677,"children":6678},{"style":182},[6679],{"type":52,"value":663},{"type":46,"tag":156,"props":6681,"children":6682},{"class":158,"line":324},[6683,6687,6691,6695,6699],{"type":46,"tag":156,"props":6684,"children":6685},{"style":182},[6686],{"type":52,"value":671},{"type":46,"tag":156,"props":6688,"children":6689},{"style":218},[6690],{"type":52,"value":18},{"type":46,"tag":156,"props":6692,"children":6693},{"style":182},[6694],{"type":52,"value":201},{"type":46,"tag":156,"props":6696,"children":6697},{"style":182},[6698],{"type":52,"value":206},{"type":46,"tag":156,"props":6700,"children":6701},{"style":182},[6702],{"type":52,"value":663},{"type":46,"tag":156,"props":6704,"children":6705},{"class":158,"line":334},[6706,6710,6714,6718,6722,6726,6730,6734,6738],{"type":46,"tag":156,"props":6707,"children":6708},{"style":182},[6709],{"type":52,"value":2961},{"type":46,"tag":156,"props":6711,"children":6712},{"style":694},[6713],{"type":52,"value":737},{"type":46,"tag":156,"props":6715,"children":6716},{"style":182},[6717],{"type":52,"value":201},{"type":46,"tag":156,"props":6719,"children":6720},{"style":182},[6721],{"type":52,"value":206},{"type":46,"tag":156,"props":6723,"children":6724},{"style":182},[6725],{"type":52,"value":710},{"type":46,"tag":156,"props":6727,"children":6728},{"style":182},[6729],{"type":52,"value":201},{"type":46,"tag":156,"props":6731,"children":6732},{"style":235},[6733],{"type":52,"value":758},{"type":46,"tag":156,"props":6735,"children":6736},{"style":182},[6737],{"type":52,"value":201},{"type":46,"tag":156,"props":6739,"children":6740},{"style":182},[6741],{"type":52,"value":2994},{"type":46,"tag":156,"props":6743,"children":6744},{"class":158,"line":343},[6745],{"type":46,"tag":156,"props":6746,"children":6747},{"style":182},[6748],{"type":52,"value":3003},{"type":46,"tag":156,"props":6750,"children":6751},{"class":158,"line":472},[6752],{"type":46,"tag":156,"props":6753,"children":6754},{"style":182},[6755],{"type":52,"value":867},{"type":46,"tag":156,"props":6757,"children":6758},{"class":158,"line":480},[6759],{"type":46,"tag":156,"props":6760,"children":6761},{"style":182},[6762],{"type":52,"value":875},{"type":46,"tag":156,"props":6764,"children":6765},{"class":158,"line":489},[6766],{"type":46,"tag":156,"props":6767,"children":6768},{"emptyLinePlaceholder":328},[6769],{"type":52,"value":331},{"type":46,"tag":156,"props":6771,"children":6772},{"class":158,"line":1775},[6773],{"type":46,"tag":156,"props":6774,"children":6775},{"style":163},[6776],{"type":52,"value":6777},"\u002F\u002F CORRECT: API_URL changes invalidate cache\n",{"type":46,"tag":156,"props":6779,"children":6780},{"class":158,"line":1783},[6781],{"type":46,"tag":156,"props":6782,"children":6783},{"style":182},[6784],{"type":52,"value":637},{"type":46,"tag":156,"props":6786,"children":6787},{"class":158,"line":1807},[6788,6792,6796,6800,6804],{"type":46,"tag":156,"props":6789,"children":6790},{"style":182},[6791],{"type":52,"value":645},{"type":46,"tag":156,"props":6793,"children":6794},{"style":193},[6795],{"type":52,"value":650},{"type":46,"tag":156,"props":6797,"children":6798},{"style":182},[6799],{"type":52,"value":201},{"type":46,"tag":156,"props":6801,"children":6802},{"style":182},[6803],{"type":52,"value":206},{"type":46,"tag":156,"props":6805,"children":6806},{"style":182},[6807],{"type":52,"value":663},{"type":46,"tag":156,"props":6809,"children":6810},{"class":158,"line":1843},[6811,6815,6819,6823,6827],{"type":46,"tag":156,"props":6812,"children":6813},{"style":182},[6814],{"type":52,"value":671},{"type":46,"tag":156,"props":6816,"children":6817},{"style":218},[6818],{"type":52,"value":18},{"type":46,"tag":156,"props":6820,"children":6821},{"style":182},[6822],{"type":52,"value":201},{"type":46,"tag":156,"props":6824,"children":6825},{"style":182},[6826],{"type":52,"value":206},{"type":46,"tag":156,"props":6828,"children":6829},{"style":182},[6830],{"type":52,"value":663},{"type":46,"tag":156,"props":6832,"children":6833},{"class":158,"line":1876},[6834,6838,6842,6846,6850,6854,6858,6862,6866],{"type":46,"tag":156,"props":6835,"children":6836},{"style":182},[6837],{"type":52,"value":2961},{"type":46,"tag":156,"props":6839,"children":6840},{"style":694},[6841],{"type":52,"value":737},{"type":46,"tag":156,"props":6843,"children":6844},{"style":182},[6845],{"type":52,"value":201},{"type":46,"tag":156,"props":6847,"children":6848},{"style":182},[6849],{"type":52,"value":206},{"type":46,"tag":156,"props":6851,"children":6852},{"style":182},[6853],{"type":52,"value":710},{"type":46,"tag":156,"props":6855,"children":6856},{"style":182},[6857],{"type":52,"value":201},{"type":46,"tag":156,"props":6859,"children":6860},{"style":235},[6861],{"type":52,"value":758},{"type":46,"tag":156,"props":6863,"children":6864},{"style":182},[6865],{"type":52,"value":201},{"type":46,"tag":156,"props":6867,"children":6868},{"style":182},[6869],{"type":52,"value":3190},{"type":46,"tag":156,"props":6871,"children":6872},{"class":158,"line":1884},[6873,6877,6881,6885,6889,6893,6897,6901,6905,6909,6913,6918,6922],{"type":46,"tag":156,"props":6874,"children":6875},{"style":182},[6876],{"type":52,"value":2961},{"type":46,"tag":156,"props":6878,"children":6879},{"style":694},[6880],{"type":52,"value":3445},{"type":46,"tag":156,"props":6882,"children":6883},{"style":182},[6884],{"type":52,"value":201},{"type":46,"tag":156,"props":6886,"children":6887},{"style":182},[6888],{"type":52,"value":206},{"type":46,"tag":156,"props":6890,"children":6891},{"style":182},[6892],{"type":52,"value":710},{"type":46,"tag":156,"props":6894,"children":6895},{"style":182},[6896],{"type":52,"value":201},{"type":46,"tag":156,"props":6898,"children":6899},{"style":235},[6900],{"type":52,"value":3466},{"type":46,"tag":156,"props":6902,"children":6903},{"style":182},[6904],{"type":52,"value":201},{"type":46,"tag":156,"props":6906,"children":6907},{"style":182},[6908],{"type":52,"value":247},{"type":46,"tag":156,"props":6910,"children":6911},{"style":182},[6912],{"type":52,"value":190},{"type":46,"tag":156,"props":6914,"children":6915},{"style":235},[6916],{"type":52,"value":6917},"API_KEY",{"type":46,"tag":156,"props":6919,"children":6920},{"style":182},[6921],{"type":52,"value":201},{"type":46,"tag":156,"props":6923,"children":6924},{"style":182},[6925],{"type":52,"value":2994},{"type":46,"tag":156,"props":6927,"children":6928},{"class":158,"line":2932},[6929],{"type":46,"tag":156,"props":6930,"children":6931},{"style":182},[6932],{"type":52,"value":3003},{"type":46,"tag":156,"props":6934,"children":6935},{"class":158,"line":28},[6936],{"type":46,"tag":156,"props":6937,"children":6938},{"style":182},[6939],{"type":52,"value":867},{"type":46,"tag":156,"props":6941,"children":6942},{"class":158,"line":2997},[6943],{"type":46,"tag":156,"props":6944,"children":6945},{"style":182},[6946],{"type":52,"value":875},{"type":46,"tag":1422,"props":6948,"children":6950},{"id":6949},"env-files-not-in-inputs",[6951,6956],{"type":46,"tag":92,"props":6952,"children":6954},{"className":6953},[],[6955],{"type":52,"value":3181},{"type":52,"value":6957}," Files Not in Inputs",{"type":46,"tag":55,"props":6959,"children":6960},{},[6961,6963,6968],{"type":52,"value":6962},"Turbo does NOT load ",{"type":46,"tag":92,"props":6964,"children":6966},{"className":6965},[],[6967],{"type":52,"value":3181},{"type":52,"value":6969}," files - your framework does. But Turbo needs to know about changes:",{"type":46,"tag":145,"props":6971,"children":6973},{"className":147,"code":6972,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG: .env changes don't invalidate cache\n{\n  \"tasks\": {\n    \"build\": {\n      \"env\": [\"API_URL\"]\n    }\n  }\n}\n\n\u002F\u002F CORRECT: .env file changes invalidate cache\n{\n  \"tasks\": {\n    \"build\": {\n      \"env\": [\"API_URL\"],\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env\", \".env.*\"]\n    }\n  }\n}\n",[6974],{"type":46,"tag":92,"props":6975,"children":6976},{"__ignoreMap":150},[6977,6985,6992,7015,7038,7077,7084,7091,7098,7105,7113,7120,7143,7166,7205,7277,7284,7291],{"type":46,"tag":156,"props":6978,"children":6979},{"class":158,"line":159},[6980],{"type":46,"tag":156,"props":6981,"children":6982},{"style":163},[6983],{"type":52,"value":6984},"\u002F\u002F WRONG: .env changes don't invalidate cache\n",{"type":46,"tag":156,"props":6986,"children":6987},{"class":158,"line":169},[6988],{"type":46,"tag":156,"props":6989,"children":6990},{"style":182},[6991],{"type":52,"value":637},{"type":46,"tag":156,"props":6993,"children":6994},{"class":158,"line":178},[6995,6999,7003,7007,7011],{"type":46,"tag":156,"props":6996,"children":6997},{"style":182},[6998],{"type":52,"value":645},{"type":46,"tag":156,"props":7000,"children":7001},{"style":193},[7002],{"type":52,"value":650},{"type":46,"tag":156,"props":7004,"children":7005},{"style":182},[7006],{"type":52,"value":201},{"type":46,"tag":156,"props":7008,"children":7009},{"style":182},[7010],{"type":52,"value":206},{"type":46,"tag":156,"props":7012,"children":7013},{"style":182},[7014],{"type":52,"value":663},{"type":46,"tag":156,"props":7016,"children":7017},{"class":158,"line":324},[7018,7022,7026,7030,7034],{"type":46,"tag":156,"props":7019,"children":7020},{"style":182},[7021],{"type":52,"value":671},{"type":46,"tag":156,"props":7023,"children":7024},{"style":218},[7025],{"type":52,"value":18},{"type":46,"tag":156,"props":7027,"children":7028},{"style":182},[7029],{"type":52,"value":201},{"type":46,"tag":156,"props":7031,"children":7032},{"style":182},[7033],{"type":52,"value":206},{"type":46,"tag":156,"props":7035,"children":7036},{"style":182},[7037],{"type":52,"value":663},{"type":46,"tag":156,"props":7039,"children":7040},{"class":158,"line":334},[7041,7045,7049,7053,7057,7061,7065,7069,7073],{"type":46,"tag":156,"props":7042,"children":7043},{"style":182},[7044],{"type":52,"value":2961},{"type":46,"tag":156,"props":7046,"children":7047},{"style":694},[7048],{"type":52,"value":3445},{"type":46,"tag":156,"props":7050,"children":7051},{"style":182},[7052],{"type":52,"value":201},{"type":46,"tag":156,"props":7054,"children":7055},{"style":182},[7056],{"type":52,"value":206},{"type":46,"tag":156,"props":7058,"children":7059},{"style":182},[7060],{"type":52,"value":710},{"type":46,"tag":156,"props":7062,"children":7063},{"style":182},[7064],{"type":52,"value":201},{"type":46,"tag":156,"props":7066,"children":7067},{"style":235},[7068],{"type":52,"value":3466},{"type":46,"tag":156,"props":7070,"children":7071},{"style":182},[7072],{"type":52,"value":201},{"type":46,"tag":156,"props":7074,"children":7075},{"style":182},[7076],{"type":52,"value":2994},{"type":46,"tag":156,"props":7078,"children":7079},{"class":158,"line":343},[7080],{"type":46,"tag":156,"props":7081,"children":7082},{"style":182},[7083],{"type":52,"value":3003},{"type":46,"tag":156,"props":7085,"children":7086},{"class":158,"line":472},[7087],{"type":46,"tag":156,"props":7088,"children":7089},{"style":182},[7090],{"type":52,"value":867},{"type":46,"tag":156,"props":7092,"children":7093},{"class":158,"line":480},[7094],{"type":46,"tag":156,"props":7095,"children":7096},{"style":182},[7097],{"type":52,"value":875},{"type":46,"tag":156,"props":7099,"children":7100},{"class":158,"line":489},[7101],{"type":46,"tag":156,"props":7102,"children":7103},{"emptyLinePlaceholder":328},[7104],{"type":52,"value":331},{"type":46,"tag":156,"props":7106,"children":7107},{"class":158,"line":1775},[7108],{"type":46,"tag":156,"props":7109,"children":7110},{"style":163},[7111],{"type":52,"value":7112},"\u002F\u002F CORRECT: .env file changes invalidate cache\n",{"type":46,"tag":156,"props":7114,"children":7115},{"class":158,"line":1783},[7116],{"type":46,"tag":156,"props":7117,"children":7118},{"style":182},[7119],{"type":52,"value":637},{"type":46,"tag":156,"props":7121,"children":7122},{"class":158,"line":1807},[7123,7127,7131,7135,7139],{"type":46,"tag":156,"props":7124,"children":7125},{"style":182},[7126],{"type":52,"value":645},{"type":46,"tag":156,"props":7128,"children":7129},{"style":193},[7130],{"type":52,"value":650},{"type":46,"tag":156,"props":7132,"children":7133},{"style":182},[7134],{"type":52,"value":201},{"type":46,"tag":156,"props":7136,"children":7137},{"style":182},[7138],{"type":52,"value":206},{"type":46,"tag":156,"props":7140,"children":7141},{"style":182},[7142],{"type":52,"value":663},{"type":46,"tag":156,"props":7144,"children":7145},{"class":158,"line":1843},[7146,7150,7154,7158,7162],{"type":46,"tag":156,"props":7147,"children":7148},{"style":182},[7149],{"type":52,"value":671},{"type":46,"tag":156,"props":7151,"children":7152},{"style":218},[7153],{"type":52,"value":18},{"type":46,"tag":156,"props":7155,"children":7156},{"style":182},[7157],{"type":52,"value":201},{"type":46,"tag":156,"props":7159,"children":7160},{"style":182},[7161],{"type":52,"value":206},{"type":46,"tag":156,"props":7163,"children":7164},{"style":182},[7165],{"type":52,"value":663},{"type":46,"tag":156,"props":7167,"children":7168},{"class":158,"line":1876},[7169,7173,7177,7181,7185,7189,7193,7197,7201],{"type":46,"tag":156,"props":7170,"children":7171},{"style":182},[7172],{"type":52,"value":2961},{"type":46,"tag":156,"props":7174,"children":7175},{"style":694},[7176],{"type":52,"value":3445},{"type":46,"tag":156,"props":7178,"children":7179},{"style":182},[7180],{"type":52,"value":201},{"type":46,"tag":156,"props":7182,"children":7183},{"style":182},[7184],{"type":52,"value":206},{"type":46,"tag":156,"props":7186,"children":7187},{"style":182},[7188],{"type":52,"value":710},{"type":46,"tag":156,"props":7190,"children":7191},{"style":182},[7192],{"type":52,"value":201},{"type":46,"tag":156,"props":7194,"children":7195},{"style":235},[7196],{"type":52,"value":3466},{"type":46,"tag":156,"props":7198,"children":7199},{"style":182},[7200],{"type":52,"value":201},{"type":46,"tag":156,"props":7202,"children":7203},{"style":182},[7204],{"type":52,"value":3190},{"type":46,"tag":156,"props":7206,"children":7207},{"class":158,"line":1884},[7208,7212,7216,7220,7224,7228,7232,7236,7240,7244,7248,7252,7256,7260,7264,7269,7273],{"type":46,"tag":156,"props":7209,"children":7210},{"style":182},[7211],{"type":52,"value":2961},{"type":46,"tag":156,"props":7213,"children":7214},{"style":694},[7215],{"type":52,"value":3248},{"type":46,"tag":156,"props":7217,"children":7218},{"style":182},[7219],{"type":52,"value":201},{"type":46,"tag":156,"props":7221,"children":7222},{"style":182},[7223],{"type":52,"value":206},{"type":46,"tag":156,"props":7225,"children":7226},{"style":182},[7227],{"type":52,"value":710},{"type":46,"tag":156,"props":7229,"children":7230},{"style":182},[7231],{"type":52,"value":201},{"type":46,"tag":156,"props":7233,"children":7234},{"style":235},[7235],{"type":52,"value":3269},{"type":46,"tag":156,"props":7237,"children":7238},{"style":182},[7239],{"type":52,"value":201},{"type":46,"tag":156,"props":7241,"children":7242},{"style":182},[7243],{"type":52,"value":247},{"type":46,"tag":156,"props":7245,"children":7246},{"style":182},[7247],{"type":52,"value":190},{"type":46,"tag":156,"props":7249,"children":7250},{"style":235},[7251],{"type":52,"value":3181},{"type":46,"tag":156,"props":7253,"children":7254},{"style":182},[7255],{"type":52,"value":201},{"type":46,"tag":156,"props":7257,"children":7258},{"style":182},[7259],{"type":52,"value":247},{"type":46,"tag":156,"props":7261,"children":7262},{"style":182},[7263],{"type":52,"value":190},{"type":46,"tag":156,"props":7265,"children":7266},{"style":235},[7267],{"type":52,"value":7268},".env.*",{"type":46,"tag":156,"props":7270,"children":7271},{"style":182},[7272],{"type":52,"value":201},{"type":46,"tag":156,"props":7274,"children":7275},{"style":182},[7276],{"type":52,"value":2994},{"type":46,"tag":156,"props":7278,"children":7279},{"class":158,"line":2932},[7280],{"type":46,"tag":156,"props":7281,"children":7282},{"style":182},[7283],{"type":52,"value":3003},{"type":46,"tag":156,"props":7285,"children":7286},{"class":158,"line":28},[7287],{"type":46,"tag":156,"props":7288,"children":7289},{"style":182},[7290],{"type":52,"value":867},{"type":46,"tag":156,"props":7292,"children":7293},{"class":158,"line":2997},[7294],{"type":46,"tag":156,"props":7295,"children":7296},{"style":182},[7297],{"type":52,"value":875},{"type":46,"tag":1422,"props":7299,"children":7301},{"id":7300},"root-env-file-in-monorepo",[7302,7303,7308],{"type":52,"value":113},{"type":46,"tag":92,"props":7304,"children":7306},{"className":7305},[],[7307],{"type":52,"value":3181},{"type":52,"value":7309}," File in Monorepo",{"type":46,"tag":55,"props":7311,"children":7312},{},[7313,7315,7320],{"type":52,"value":7314},"A ",{"type":46,"tag":92,"props":7316,"children":7318},{"className":7317},[],[7319],{"type":52,"value":3181},{"type":52,"value":7321}," file at the repo root is an anti-pattern — even for small monorepos or starter templates. It creates implicit coupling between packages and makes it unclear which packages depend on which variables.",{"type":46,"tag":145,"props":7323,"children":7326},{"className":7324,"code":7325,"language":52},[1431],"\u002F\u002F WRONG - root .env affects all packages implicitly\nmy-monorepo\u002F\n├── .env              # Which packages use this?\n├── apps\u002F\n│   ├── web\u002F\n│   └── api\u002F\n└── packages\u002F\n\n\u002F\u002F CORRECT - .env files in packages that need them\nmy-monorepo\u002F\n├── apps\u002F\n│   ├── web\u002F\n│   │   └── .env      # Clear: web needs DATABASE_URL\n│   └── api\u002F\n│       └── .env      # Clear: api needs API_KEY\n└── packages\u002F\n",[7327],{"type":46,"tag":92,"props":7328,"children":7329},{"__ignoreMap":150},[7330],{"type":52,"value":7325},{"type":46,"tag":55,"props":7332,"children":7333},{},[7334],{"type":46,"tag":71,"props":7335,"children":7336},{},[7337,7339,7344],{"type":52,"value":7338},"Problems with root ",{"type":46,"tag":92,"props":7340,"children":7342},{"className":7341},[],[7343],{"type":52,"value":3181},{"type":52,"value":206},{"type":46,"tag":2661,"props":7346,"children":7347},{},[7348,7353,7358,7363,7368],{"type":46,"tag":86,"props":7349,"children":7350},{},[7351],{"type":52,"value":7352},"Unclear which packages consume which variables",{"type":46,"tag":86,"props":7354,"children":7355},{},[7356],{"type":52,"value":7357},"All packages get all variables (even ones they don't need)",{"type":46,"tag":86,"props":7359,"children":7360},{},[7361],{"type":52,"value":7362},"Cache invalidation is coarse-grained (root .env change invalidates everything)",{"type":46,"tag":86,"props":7364,"children":7365},{},[7366],{"type":52,"value":7367},"Security risk: packages may accidentally access sensitive vars meant for others",{"type":46,"tag":86,"props":7369,"children":7370},{},[7371],{"type":52,"value":7372},"Bad habits start small — starter templates should model correct patterns",{"type":46,"tag":55,"props":7374,"children":7375},{},[7376,7381,7383,7388],{"type":46,"tag":71,"props":7377,"children":7378},{},[7379],{"type":52,"value":7380},"If you must share variables",{"type":52,"value":7382},", use ",{"type":46,"tag":92,"props":7384,"children":7386},{"className":7385},[],[7387],{"type":52,"value":3935},{"type":52,"value":7389}," to be explicit about what's shared, and document why.",{"type":46,"tag":1422,"props":7391,"children":7393},{"id":7392},"strict-mode-filtering-ci-variables",[7394],{"type":52,"value":7395},"Strict Mode Filtering CI Variables",{"type":46,"tag":55,"props":7397,"children":7398},{},[7399,7401,7406,7408,7413],{"type":52,"value":7400},"By default, Turborepo filters environment variables to only those in ",{"type":46,"tag":92,"props":7402,"children":7404},{"className":7403},[],[7405],{"type":52,"value":3445},{"type":52,"value":7407},"\u002F",{"type":46,"tag":92,"props":7409,"children":7411},{"className":7410},[],[7412],{"type":52,"value":3935},{"type":52,"value":7414},". CI variables may be missing:",{"type":46,"tag":145,"props":7416,"children":7418},{"className":147,"code":7417,"language":149,"meta":150,"style":150},"\u002F\u002F If CI scripts need GITHUB_TOKEN but it's not in env:\n{\n  \"globalPassThroughEnv\": [\"GITHUB_TOKEN\", \"CI\"],\n  \"tasks\": { ... }\n}\n",[7419],{"type":46,"tag":92,"props":7420,"children":7421},{"__ignoreMap":150},[7422,7430,7437,7495,7528],{"type":46,"tag":156,"props":7423,"children":7424},{"class":158,"line":159},[7425],{"type":46,"tag":156,"props":7426,"children":7427},{"style":163},[7428],{"type":52,"value":7429},"\u002F\u002F If CI scripts need GITHUB_TOKEN but it's not in env:\n",{"type":46,"tag":156,"props":7431,"children":7432},{"class":158,"line":169},[7433],{"type":46,"tag":156,"props":7434,"children":7435},{"style":182},[7436],{"type":52,"value":637},{"type":46,"tag":156,"props":7438,"children":7439},{"class":158,"line":178},[7440,7444,7449,7453,7457,7461,7465,7470,7474,7478,7482,7487,7491],{"type":46,"tag":156,"props":7441,"children":7442},{"style":182},[7443],{"type":52,"value":645},{"type":46,"tag":156,"props":7445,"children":7446},{"style":193},[7447],{"type":52,"value":7448},"globalPassThroughEnv",{"type":46,"tag":156,"props":7450,"children":7451},{"style":182},[7452],{"type":52,"value":201},{"type":46,"tag":156,"props":7454,"children":7455},{"style":182},[7456],{"type":52,"value":206},{"type":46,"tag":156,"props":7458,"children":7459},{"style":182},[7460],{"type":52,"value":710},{"type":46,"tag":156,"props":7462,"children":7463},{"style":182},[7464],{"type":52,"value":201},{"type":46,"tag":156,"props":7466,"children":7467},{"style":235},[7468],{"type":52,"value":7469},"GITHUB_TOKEN",{"type":46,"tag":156,"props":7471,"children":7472},{"style":182},[7473],{"type":52,"value":201},{"type":46,"tag":156,"props":7475,"children":7476},{"style":182},[7477],{"type":52,"value":247},{"type":46,"tag":156,"props":7479,"children":7480},{"style":182},[7481],{"type":52,"value":190},{"type":46,"tag":156,"props":7483,"children":7484},{"style":235},[7485],{"type":52,"value":7486},"CI",{"type":46,"tag":156,"props":7488,"children":7489},{"style":182},[7490],{"type":52,"value":201},{"type":46,"tag":156,"props":7492,"children":7493},{"style":182},[7494],{"type":52,"value":3190},{"type":46,"tag":156,"props":7496,"children":7497},{"class":158,"line":324},[7498,7502,7506,7510,7514,7518,7524],{"type":46,"tag":156,"props":7499,"children":7500},{"style":182},[7501],{"type":52,"value":645},{"type":46,"tag":156,"props":7503,"children":7504},{"style":193},[7505],{"type":52,"value":650},{"type":46,"tag":156,"props":7507,"children":7508},{"style":182},[7509],{"type":52,"value":201},{"type":46,"tag":156,"props":7511,"children":7512},{"style":182},[7513],{"type":52,"value":206},{"type":46,"tag":156,"props":7515,"children":7516},{"style":182},[7517],{"type":52,"value":211},{"type":46,"tag":156,"props":7519,"children":7521},{"style":7520},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[7522],{"type":52,"value":7523}," ... ",{"type":46,"tag":156,"props":7525,"children":7526},{"style":182},[7527],{"type":52,"value":875},{"type":46,"tag":156,"props":7529,"children":7530},{"class":158,"line":334},[7531],{"type":46,"tag":156,"props":7532,"children":7533},{"style":182},[7534],{"type":52,"value":875},{"type":46,"tag":55,"props":7536,"children":7537},{},[7538,7540,7546],{"type":52,"value":7539},"Or use ",{"type":46,"tag":92,"props":7541,"children":7543},{"className":7542},[],[7544],{"type":52,"value":7545},"--env-mode=loose",{"type":52,"value":7547}," (not recommended for production).",{"type":46,"tag":1422,"props":7549,"children":7551},{"id":7550},"shared-code-in-apps-should-be-a-package",[7552],{"type":52,"value":7553},"Shared Code in Apps (Should Be a Package)",{"type":46,"tag":145,"props":7555,"children":7558},{"className":7556,"code":7557,"language":52},[1431],"\u002F\u002F WRONG: Shared code inside an app\napps\u002F\n  web\u002F\n    shared\u002F          # This breaks monorepo principles!\n      utils.ts\n\n\u002F\u002F CORRECT: Extract to a package\npackages\u002F\n  utils\u002F\n    src\u002Futils.ts\n",[7559],{"type":46,"tag":92,"props":7560,"children":7561},{"__ignoreMap":150},[7562],{"type":52,"value":7557},{"type":46,"tag":1422,"props":7564,"children":7566},{"id":7565},"accessing-files-across-package-boundaries",[7567],{"type":52,"value":7568},"Accessing Files Across Package Boundaries",{"type":46,"tag":145,"props":7570,"children":7574},{"className":7571,"code":7572,"language":7573,"meta":150,"style":150},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F WRONG: Reaching into another package's internals\nimport { Button } from \"..\u002F..\u002Fpackages\u002Fui\u002Fsrc\u002Fbutton\";\n\n\u002F\u002F CORRECT: Install and import properly\nimport { Button } from \"@repo\u002Fui\u002Fbutton\";\n","typescript",[7575],{"type":46,"tag":92,"props":7576,"children":7577},{"__ignoreMap":150},[7578,7586,7631,7638,7646],{"type":46,"tag":156,"props":7579,"children":7580},{"class":158,"line":159},[7581],{"type":46,"tag":156,"props":7582,"children":7583},{"style":163},[7584],{"type":52,"value":7585},"\u002F\u002F WRONG: Reaching into another package's internals\n",{"type":46,"tag":156,"props":7587,"children":7588},{"class":158,"line":169},[7589,7595,7599,7604,7608,7613,7617,7622,7626],{"type":46,"tag":156,"props":7590,"children":7592},{"style":7591},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[7593],{"type":52,"value":7594},"import",{"type":46,"tag":156,"props":7596,"children":7597},{"style":182},[7598],{"type":52,"value":211},{"type":46,"tag":156,"props":7600,"children":7601},{"style":7520},[7602],{"type":52,"value":7603}," Button",{"type":46,"tag":156,"props":7605,"children":7606},{"style":182},[7607],{"type":52,"value":316},{"type":46,"tag":156,"props":7609,"children":7610},{"style":7591},[7611],{"type":52,"value":7612}," from",{"type":46,"tag":156,"props":7614,"children":7615},{"style":182},[7616],{"type":52,"value":190},{"type":46,"tag":156,"props":7618,"children":7619},{"style":235},[7620],{"type":52,"value":7621},"..\u002F..\u002Fpackages\u002Fui\u002Fsrc\u002Fbutton",{"type":46,"tag":156,"props":7623,"children":7624},{"style":182},[7625],{"type":52,"value":201},{"type":46,"tag":156,"props":7627,"children":7628},{"style":182},[7629],{"type":52,"value":7630},";\n",{"type":46,"tag":156,"props":7632,"children":7633},{"class":158,"line":178},[7634],{"type":46,"tag":156,"props":7635,"children":7636},{"emptyLinePlaceholder":328},[7637],{"type":52,"value":331},{"type":46,"tag":156,"props":7639,"children":7640},{"class":158,"line":324},[7641],{"type":46,"tag":156,"props":7642,"children":7643},{"style":163},[7644],{"type":52,"value":7645},"\u002F\u002F CORRECT: Install and import properly\n",{"type":46,"tag":156,"props":7647,"children":7648},{"class":158,"line":334},[7649,7653,7657,7661,7665,7669,7673,7678,7682],{"type":46,"tag":156,"props":7650,"children":7651},{"style":7591},[7652],{"type":52,"value":7594},{"type":46,"tag":156,"props":7654,"children":7655},{"style":182},[7656],{"type":52,"value":211},{"type":46,"tag":156,"props":7658,"children":7659},{"style":7520},[7660],{"type":52,"value":7603},{"type":46,"tag":156,"props":7662,"children":7663},{"style":182},[7664],{"type":52,"value":316},{"type":46,"tag":156,"props":7666,"children":7667},{"style":7591},[7668],{"type":52,"value":7612},{"type":46,"tag":156,"props":7670,"children":7671},{"style":182},[7672],{"type":52,"value":190},{"type":46,"tag":156,"props":7674,"children":7675},{"style":235},[7676],{"type":52,"value":7677},"@repo\u002Fui\u002Fbutton",{"type":46,"tag":156,"props":7679,"children":7680},{"style":182},[7681],{"type":52,"value":201},{"type":46,"tag":156,"props":7683,"children":7684},{"style":182},[7685],{"type":52,"value":7630},{"type":46,"tag":1422,"props":7687,"children":7689},{"id":7688},"too-many-root-dependencies",[7690],{"type":52,"value":7691},"Too Many Root Dependencies",{"type":46,"tag":145,"props":7693,"children":7695},{"className":147,"code":7694,"language":149,"meta":150,"style":150},"\u002F\u002F WRONG: App dependencies in root\n{\n  \"dependencies\": {\n    \"react\": \"^18\",\n    \"next\": \"^14\"\n  }\n}\n\n\u002F\u002F CORRECT: Only repo tools in root\n{\n  \"devDependencies\": {\n    \"turbo\": \"latest\"\n  }\n}\n",[7696],{"type":46,"tag":92,"props":7697,"children":7698},{"__ignoreMap":150},[7699,7707,7714,7737,7774,7807,7814,7821,7828,7836,7843,7867,7899,7906],{"type":46,"tag":156,"props":7700,"children":7701},{"class":158,"line":159},[7702],{"type":46,"tag":156,"props":7703,"children":7704},{"style":163},[7705],{"type":52,"value":7706},"\u002F\u002F WRONG: App dependencies in root\n",{"type":46,"tag":156,"props":7708,"children":7709},{"class":158,"line":169},[7710],{"type":46,"tag":156,"props":7711,"children":7712},{"style":182},[7713],{"type":52,"value":637},{"type":46,"tag":156,"props":7715,"children":7716},{"class":158,"line":178},[7717,7721,7725,7729,7733],{"type":46,"tag":156,"props":7718,"children":7719},{"style":182},[7720],{"type":52,"value":645},{"type":46,"tag":156,"props":7722,"children":7723},{"style":193},[7724],{"type":52,"value":2727},{"type":46,"tag":156,"props":7726,"children":7727},{"style":182},[7728],{"type":52,"value":201},{"type":46,"tag":156,"props":7730,"children":7731},{"style":182},[7732],{"type":52,"value":206},{"type":46,"tag":156,"props":7734,"children":7735},{"style":182},[7736],{"type":52,"value":663},{"type":46,"tag":156,"props":7738,"children":7739},{"class":158,"line":324},[7740,7744,7749,7753,7757,7761,7766,7770],{"type":46,"tag":156,"props":7741,"children":7742},{"style":182},[7743],{"type":52,"value":671},{"type":46,"tag":156,"props":7745,"children":7746},{"style":218},[7747],{"type":52,"value":7748},"react",{"type":46,"tag":156,"props":7750,"children":7751},{"style":182},[7752],{"type":52,"value":201},{"type":46,"tag":156,"props":7754,"children":7755},{"style":182},[7756],{"type":52,"value":206},{"type":46,"tag":156,"props":7758,"children":7759},{"style":182},[7760],{"type":52,"value":190},{"type":46,"tag":156,"props":7762,"children":7763},{"style":235},[7764],{"type":52,"value":7765},"^18",{"type":46,"tag":156,"props":7767,"children":7768},{"style":182},[7769],{"type":52,"value":201},{"type":46,"tag":156,"props":7771,"children":7772},{"style":182},[7773],{"type":52,"value":957},{"type":46,"tag":156,"props":7775,"children":7776},{"class":158,"line":334},[7777,7781,7786,7790,7794,7798,7803],{"type":46,"tag":156,"props":7778,"children":7779},{"style":182},[7780],{"type":52,"value":671},{"type":46,"tag":156,"props":7782,"children":7783},{"style":218},[7784],{"type":52,"value":7785},"next",{"type":46,"tag":156,"props":7787,"children":7788},{"style":182},[7789],{"type":52,"value":201},{"type":46,"tag":156,"props":7791,"children":7792},{"style":182},[7793],{"type":52,"value":206},{"type":46,"tag":156,"props":7795,"children":7796},{"style":182},[7797],{"type":52,"value":190},{"type":46,"tag":156,"props":7799,"children":7800},{"style":235},[7801],{"type":52,"value":7802},"^14",{"type":46,"tag":156,"props":7804,"children":7805},{"style":182},[7806],{"type":52,"value":1026},{"type":46,"tag":156,"props":7808,"children":7809},{"class":158,"line":343},[7810],{"type":46,"tag":156,"props":7811,"children":7812},{"style":182},[7813],{"type":52,"value":867},{"type":46,"tag":156,"props":7815,"children":7816},{"class":158,"line":472},[7817],{"type":46,"tag":156,"props":7818,"children":7819},{"style":182},[7820],{"type":52,"value":875},{"type":46,"tag":156,"props":7822,"children":7823},{"class":158,"line":480},[7824],{"type":46,"tag":156,"props":7825,"children":7826},{"emptyLinePlaceholder":328},[7827],{"type":52,"value":331},{"type":46,"tag":156,"props":7829,"children":7830},{"class":158,"line":489},[7831],{"type":46,"tag":156,"props":7832,"children":7833},{"style":163},[7834],{"type":52,"value":7835},"\u002F\u002F CORRECT: Only repo tools in root\n",{"type":46,"tag":156,"props":7837,"children":7838},{"class":158,"line":1775},[7839],{"type":46,"tag":156,"props":7840,"children":7841},{"style":182},[7842],{"type":52,"value":637},{"type":46,"tag":156,"props":7844,"children":7845},{"class":158,"line":1783},[7846,7850,7855,7859,7863],{"type":46,"tag":156,"props":7847,"children":7848},{"style":182},[7849],{"type":52,"value":645},{"type":46,"tag":156,"props":7851,"children":7852},{"style":193},[7853],{"type":52,"value":7854},"devDependencies",{"type":46,"tag":156,"props":7856,"children":7857},{"style":182},[7858],{"type":52,"value":201},{"type":46,"tag":156,"props":7860,"children":7861},{"style":182},[7862],{"type":52,"value":206},{"type":46,"tag":156,"props":7864,"children":7865},{"style":182},[7866],{"type":52,"value":663},{"type":46,"tag":156,"props":7868,"children":7869},{"class":158,"line":1807},[7870,7874,7878,7882,7886,7890,7895],{"type":46,"tag":156,"props":7871,"children":7872},{"style":182},[7873],{"type":52,"value":671},{"type":46,"tag":156,"props":7875,"children":7876},{"style":218},[7877],{"type":52,"value":1243},{"type":46,"tag":156,"props":7879,"children":7880},{"style":182},[7881],{"type":52,"value":201},{"type":46,"tag":156,"props":7883,"children":7884},{"style":182},[7885],{"type":52,"value":206},{"type":46,"tag":156,"props":7887,"children":7888},{"style":182},[7889],{"type":52,"value":190},{"type":46,"tag":156,"props":7891,"children":7892},{"style":235},[7893],{"type":52,"value":7894},"latest",{"type":46,"tag":156,"props":7896,"children":7897},{"style":182},[7898],{"type":52,"value":1026},{"type":46,"tag":156,"props":7900,"children":7901},{"class":158,"line":1843},[7902],{"type":46,"tag":156,"props":7903,"children":7904},{"style":182},[7905],{"type":52,"value":867},{"type":46,"tag":156,"props":7907,"children":7908},{"class":158,"line":1876},[7909],{"type":46,"tag":156,"props":7910,"children":7911},{"style":182},[7912],{"type":52,"value":875},{"type":46,"tag":61,"props":7914,"children":7916},{"id":7915},"common-task-configurations",[7917],{"type":52,"value":7918},"Common Task Configurations",{"type":46,"tag":1422,"props":7920,"children":7922},{"id":7921},"standard-build-pipeline",[7923],{"type":52,"value":7924},"Standard Build Pipeline",{"type":46,"tag":145,"props":7926,"children":7928},{"className":147,"code":7927,"language":149,"meta":150,"style":150},"{\n  \"$schema\": \"https:\u002F\u002Fv2-8-18-canary-7.turborepo.dev\u002Fschema.json\",\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist\u002F**\", \".next\u002F**\", \"!.next\u002Fcache\u002F**\"]\n    },\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n",[7929],{"type":46,"tag":92,"props":7930,"children":7931},{"__ignoreMap":150},[7932,7939,7976,7999,8022,8061,8134,8141,8164,8187,8210,8217,8224],{"type":46,"tag":156,"props":7933,"children":7934},{"class":158,"line":159},[7935],{"type":46,"tag":156,"props":7936,"children":7937},{"style":182},[7938],{"type":52,"value":637},{"type":46,"tag":156,"props":7940,"children":7941},{"class":158,"line":169},[7942,7946,7951,7955,7959,7963,7968,7972],{"type":46,"tag":156,"props":7943,"children":7944},{"style":182},[7945],{"type":52,"value":645},{"type":46,"tag":156,"props":7947,"children":7948},{"style":193},[7949],{"type":52,"value":7950},"$schema",{"type":46,"tag":156,"props":7952,"children":7953},{"style":182},[7954],{"type":52,"value":201},{"type":46,"tag":156,"props":7956,"children":7957},{"style":182},[7958],{"type":52,"value":206},{"type":46,"tag":156,"props":7960,"children":7961},{"style":182},[7962],{"type":52,"value":190},{"type":46,"tag":156,"props":7964,"children":7965},{"style":235},[7966],{"type":52,"value":7967},"https:\u002F\u002Fv2-8-18-canary-7.turborepo.dev\u002Fschema.json",{"type":46,"tag":156,"props":7969,"children":7970},{"style":182},[7971],{"type":52,"value":201},{"type":46,"tag":156,"props":7973,"children":7974},{"style":182},[7975],{"type":52,"value":957},{"type":46,"tag":156,"props":7977,"children":7978},{"class":158,"line":178},[7979,7983,7987,7991,7995],{"type":46,"tag":156,"props":7980,"children":7981},{"style":182},[7982],{"type":52,"value":645},{"type":46,"tag":156,"props":7984,"children":7985},{"style":193},[7986],{"type":52,"value":650},{"type":46,"tag":156,"props":7988,"children":7989},{"style":182},[7990],{"type":52,"value":201},{"type":46,"tag":156,"props":7992,"children":7993},{"style":182},[7994],{"type":52,"value":206},{"type":46,"tag":156,"props":7996,"children":7997},{"style":182},[7998],{"type":52,"value":663},{"type":46,"tag":156,"props":8000,"children":8001},{"class":158,"line":324},[8002,8006,8010,8014,8018],{"type":46,"tag":156,"props":8003,"children":8004},{"style":182},[8005],{"type":52,"value":671},{"type":46,"tag":156,"props":8007,"children":8008},{"style":218},[8009],{"type":52,"value":18},{"type":46,"tag":156,"props":8011,"children":8012},{"style":182},[8013],{"type":52,"value":201},{"type":46,"tag":156,"props":8015,"children":8016},{"style":182},[8017],{"type":52,"value":206},{"type":46,"tag":156,"props":8019,"children":8020},{"style":182},[8021],{"type":52,"value":663},{"type":46,"tag":156,"props":8023,"children":8024},{"class":158,"line":334},[8025,8029,8033,8037,8041,8045,8049,8053,8057],{"type":46,"tag":156,"props":8026,"children":8027},{"style":182},[8028],{"type":52,"value":2961},{"type":46,"tag":156,"props":8030,"children":8031},{"style":694},[8032],{"type":52,"value":697},{"type":46,"tag":156,"props":8034,"children":8035},{"style":182},[8036],{"type":52,"value":201},{"type":46,"tag":156,"props":8038,"children":8039},{"style":182},[8040],{"type":52,"value":206},{"type":46,"tag":156,"props":8042,"children":8043},{"style":182},[8044],{"type":52,"value":710},{"type":46,"tag":156,"props":8046,"children":8047},{"style":182},[8048],{"type":52,"value":201},{"type":46,"tag":156,"props":8050,"children":8051},{"style":235},[8052],{"type":52,"value":719},{"type":46,"tag":156,"props":8054,"children":8055},{"style":182},[8056],{"type":52,"value":201},{"type":46,"tag":156,"props":8058,"children":8059},{"style":182},[8060],{"type":52,"value":3190},{"type":46,"tag":156,"props":8062,"children":8063},{"class":158,"line":343},[8064,8068,8072,8076,8080,8084,8088,8092,8096,8100,8104,8109,8113,8117,8121,8126,8130],{"type":46,"tag":156,"props":8065,"children":8066},{"style":182},[8067],{"type":52,"value":2961},{"type":46,"tag":156,"props":8069,"children":8070},{"style":694},[8071],{"type":52,"value":737},{"type":46,"tag":156,"props":8073,"children":8074},{"style":182},[8075],{"type":52,"value":201},{"type":46,"tag":156,"props":8077,"children":8078},{"style":182},[8079],{"type":52,"value":206},{"type":46,"tag":156,"props":8081,"children":8082},{"style":182},[8083],{"type":52,"value":710},{"type":46,"tag":156,"props":8085,"children":8086},{"style":182},[8087],{"type":52,"value":201},{"type":46,"tag":156,"props":8089,"children":8090},{"style":235},[8091],{"type":52,"value":758},{"type":46,"tag":156,"props":8093,"children":8094},{"style":182},[8095],{"type":52,"value":201},{"type":46,"tag":156,"props":8097,"children":8098},{"style":182},[8099],{"type":52,"value":247},{"type":46,"tag":156,"props":8101,"children":8102},{"style":182},[8103],{"type":52,"value":190},{"type":46,"tag":156,"props":8105,"children":8106},{"style":235},[8107],{"type":52,"value":8108},".next\u002F**",{"type":46,"tag":156,"props":8110,"children":8111},{"style":182},[8112],{"type":52,"value":201},{"type":46,"tag":156,"props":8114,"children":8115},{"style":182},[8116],{"type":52,"value":247},{"type":46,"tag":156,"props":8118,"children":8119},{"style":182},[8120],{"type":52,"value":190},{"type":46,"tag":156,"props":8122,"children":8123},{"style":235},[8124],{"type":52,"value":8125},"!.next\u002Fcache\u002F**",{"type":46,"tag":156,"props":8127,"children":8128},{"style":182},[8129],{"type":52,"value":201},{"type":46,"tag":156,"props":8131,"children":8132},{"style":182},[8133],{"type":52,"value":2994},{"type":46,"tag":156,"props":8135,"children":8136},{"class":158,"line":472},[8137],{"type":46,"tag":156,"props":8138,"children":8139},{"style":182},[8140],{"type":52,"value":3554},{"type":46,"tag":156,"props":8142,"children":8143},{"class":158,"line":480},[8144,8148,8152,8156,8160],{"type":46,"tag":156,"props":8145,"children":8146},{"style":182},[8147],{"type":52,"value":671},{"type":46,"tag":156,"props":8149,"children":8150},{"style":218},[8151],{"type":52,"value":1722},{"type":46,"tag":156,"props":8153,"children":8154},{"style":182},[8155],{"type":52,"value":201},{"type":46,"tag":156,"props":8157,"children":8158},{"style":182},[8159],{"type":52,"value":206},{"type":46,"tag":156,"props":8161,"children":8162},{"style":182},[8163],{"type":52,"value":663},{"type":46,"tag":156,"props":8165,"children":8166},{"class":158,"line":489},[8167,8171,8175,8179,8183],{"type":46,"tag":156,"props":8168,"children":8169},{"style":182},[8170],{"type":52,"value":2961},{"type":46,"tag":156,"props":8172,"children":8173},{"style":694},[8174],{"type":52,"value":3839},{"type":46,"tag":156,"props":8176,"children":8177},{"style":182},[8178],{"type":52,"value":201},{"type":46,"tag":156,"props":8180,"children":8181},{"style":182},[8182],{"type":52,"value":206},{"type":46,"tag":156,"props":8184,"children":8185},{"style":182},[8186],{"type":52,"value":3852},{"type":46,"tag":156,"props":8188,"children":8189},{"class":158,"line":1775},[8190,8194,8198,8202,8206],{"type":46,"tag":156,"props":8191,"children":8192},{"style":182},[8193],{"type":52,"value":2961},{"type":46,"tag":156,"props":8195,"children":8196},{"style":694},[8197],{"type":52,"value":3864},{"type":46,"tag":156,"props":8199,"children":8200},{"style":182},[8201],{"type":52,"value":201},{"type":46,"tag":156,"props":8203,"children":8204},{"style":182},[8205],{"type":52,"value":206},{"type":46,"tag":156,"props":8207,"children":8208},{"style":182},[8209],{"type":52,"value":3877},{"type":46,"tag":156,"props":8211,"children":8212},{"class":158,"line":1783},[8213],{"type":46,"tag":156,"props":8214,"children":8215},{"style":182},[8216],{"type":52,"value":3003},{"type":46,"tag":156,"props":8218,"children":8219},{"class":158,"line":1807},[8220],{"type":46,"tag":156,"props":8221,"children":8222},{"style":182},[8223],{"type":52,"value":867},{"type":46,"tag":156,"props":8225,"children":8226},{"class":158,"line":1843},[8227],{"type":46,"tag":156,"props":8228,"children":8229},{"style":182},[8230],{"type":52,"value":875},{"type":46,"tag":55,"props":8232,"children":8233},{},[8234,8236,8242],{"type":52,"value":8235},"Add a ",{"type":46,"tag":92,"props":8237,"children":8239},{"className":8238},[],[8240],{"type":52,"value":8241},"transit",{"type":52,"value":8243}," task if you have tasks that need parallel execution with cache invalidation (see below).",{"type":46,"tag":1422,"props":8245,"children":8247},{"id":8246},"dev-task-with-dev-pattern-for-turbo-watch",[8248,8250,8256,8258,8264],{"type":52,"value":8249},"Dev Task with ",{"type":46,"tag":92,"props":8251,"children":8253},{"className":8252},[],[8254],{"type":52,"value":8255},"^dev",{"type":52,"value":8257}," Pattern (for ",{"type":46,"tag":92,"props":8259,"children":8261},{"className":8260},[],[8262],{"type":52,"value":8263},"turbo watch",{"type":52,"value":5336},{"type":46,"tag":55,"props":8266,"children":8267},{},[8268,8269,8274,8276,8282,8284,8290,8292,8304],{"type":52,"value":7314},{"type":46,"tag":92,"props":8270,"children":8272},{"className":8271},[],[8273],{"type":52,"value":1722},{"type":52,"value":8275}," task with ",{"type":46,"tag":92,"props":8277,"children":8279},{"className":8278},[],[8280],{"type":52,"value":8281},"dependsOn: [\"^dev\"]",{"type":52,"value":8283}," and ",{"type":46,"tag":92,"props":8285,"children":8287},{"className":8286},[],[8288],{"type":52,"value":8289},"persistent: false",{"type":52,"value":8291}," in root turbo.json may look unusual but is ",{"type":46,"tag":71,"props":8293,"children":8294},{},[8295,8297,8302],{"type":52,"value":8296},"correct for ",{"type":46,"tag":92,"props":8298,"children":8300},{"className":8299},[],[8301],{"type":52,"value":8263},{"type":52,"value":8303}," workflows",{"type":52,"value":206},{"type":46,"tag":145,"props":8306,"children":8308},{"className":147,"code":8307,"language":149,"meta":150,"style":150},"\u002F\u002F Root turbo.json\n{\n  \"tasks\": {\n    \"dev\": {\n      \"dependsOn\": [\"^dev\"],\n      \"cache\": false,\n      \"persistent\": false  \u002F\u002F Packages have one-shot dev scripts\n    }\n  }\n}\n\n\u002F\u002F Package turbo.json (apps\u002Fweb\u002Fturbo.json)\n{\n  \"extends\": [\"\u002F\u002F\"],\n  \"tasks\": {\n    \"dev\": {\n      \"persistent\": true  \u002F\u002F Apps run long-running dev servers\n    }\n  }\n}\n",[8309],{"type":46,"tag":92,"props":8310,"children":8311},{"__ignoreMap":150},[8312,8320,8327,8350,8373,8412,8435,8464,8471,8478,8485,8492,8500,8507,8546,8569,8592,8621,8628,8635],{"type":46,"tag":156,"props":8313,"children":8314},{"class":158,"line":159},[8315],{"type":46,"tag":156,"props":8316,"children":8317},{"style":163},[8318],{"type":52,"value":8319},"\u002F\u002F Root turbo.json\n",{"type":46,"tag":156,"props":8321,"children":8322},{"class":158,"line":169},[8323],{"type":46,"tag":156,"props":8324,"children":8325},{"style":182},[8326],{"type":52,"value":637},{"type":46,"tag":156,"props":8328,"children":8329},{"class":158,"line":178},[8330,8334,8338,8342,8346],{"type":46,"tag":156,"props":8331,"children":8332},{"style":182},[8333],{"type":52,"value":645},{"type":46,"tag":156,"props":8335,"children":8336},{"style":193},[8337],{"type":52,"value":650},{"type":46,"tag":156,"props":8339,"children":8340},{"style":182},[8341],{"type":52,"value":201},{"type":46,"tag":156,"props":8343,"children":8344},{"style":182},[8345],{"type":52,"value":206},{"type":46,"tag":156,"props":8347,"children":8348},{"style":182},[8349],{"type":52,"value":663},{"type":46,"tag":156,"props":8351,"children":8352},{"class":158,"line":324},[8353,8357,8361,8365,8369],{"type":46,"tag":156,"props":8354,"children":8355},{"style":182},[8356],{"type":52,"value":671},{"type":46,"tag":156,"props":8358,"children":8359},{"style":218},[8360],{"type":52,"value":1722},{"type":46,"tag":156,"props":8362,"children":8363},{"style":182},[8364],{"type":52,"value":201},{"type":46,"tag":156,"props":8366,"children":8367},{"style":182},[8368],{"type":52,"value":206},{"type":46,"tag":156,"props":8370,"children":8371},{"style":182},[8372],{"type":52,"value":663},{"type":46,"tag":156,"props":8374,"children":8375},{"class":158,"line":334},[8376,8380,8384,8388,8392,8396,8400,8404,8408],{"type":46,"tag":156,"props":8377,"children":8378},{"style":182},[8379],{"type":52,"value":2961},{"type":46,"tag":156,"props":8381,"children":8382},{"style":694},[8383],{"type":52,"value":697},{"type":46,"tag":156,"props":8385,"children":8386},{"style":182},[8387],{"type":52,"value":201},{"type":46,"tag":156,"props":8389,"children":8390},{"style":182},[8391],{"type":52,"value":206},{"type":46,"tag":156,"props":8393,"children":8394},{"style":182},[8395],{"type":52,"value":710},{"type":46,"tag":156,"props":8397,"children":8398},{"style":182},[8399],{"type":52,"value":201},{"type":46,"tag":156,"props":8401,"children":8402},{"style":235},[8403],{"type":52,"value":8255},{"type":46,"tag":156,"props":8405,"children":8406},{"style":182},[8407],{"type":52,"value":201},{"type":46,"tag":156,"props":8409,"children":8410},{"style":182},[8411],{"type":52,"value":3190},{"type":46,"tag":156,"props":8413,"children":8414},{"class":158,"line":343},[8415,8419,8423,8427,8431],{"type":46,"tag":156,"props":8416,"children":8417},{"style":182},[8418],{"type":52,"value":2961},{"type":46,"tag":156,"props":8420,"children":8421},{"style":694},[8422],{"type":52,"value":3839},{"type":46,"tag":156,"props":8424,"children":8425},{"style":182},[8426],{"type":52,"value":201},{"type":46,"tag":156,"props":8428,"children":8429},{"style":182},[8430],{"type":52,"value":206},{"type":46,"tag":156,"props":8432,"children":8433},{"style":182},[8434],{"type":52,"value":3852},{"type":46,"tag":156,"props":8436,"children":8437},{"class":158,"line":472},[8438,8442,8446,8450,8454,8459],{"type":46,"tag":156,"props":8439,"children":8440},{"style":182},[8441],{"type":52,"value":2961},{"type":46,"tag":156,"props":8443,"children":8444},{"style":694},[8445],{"type":52,"value":3864},{"type":46,"tag":156,"props":8447,"children":8448},{"style":182},[8449],{"type":52,"value":201},{"type":46,"tag":156,"props":8451,"children":8452},{"style":182},[8453],{"type":52,"value":206},{"type":46,"tag":156,"props":8455,"children":8456},{"style":182},[8457],{"type":52,"value":8458}," false",{"type":46,"tag":156,"props":8460,"children":8461},{"style":163},[8462],{"type":52,"value":8463},"  \u002F\u002F Packages have one-shot dev scripts\n",{"type":46,"tag":156,"props":8465,"children":8466},{"class":158,"line":480},[8467],{"type":46,"tag":156,"props":8468,"children":8469},{"style":182},[8470],{"type":52,"value":3003},{"type":46,"tag":156,"props":8472,"children":8473},{"class":158,"line":489},[8474],{"type":46,"tag":156,"props":8475,"children":8476},{"style":182},[8477],{"type":52,"value":867},{"type":46,"tag":156,"props":8479,"children":8480},{"class":158,"line":1775},[8481],{"type":46,"tag":156,"props":8482,"children":8483},{"style":182},[8484],{"type":52,"value":875},{"type":46,"tag":156,"props":8486,"children":8487},{"class":158,"line":1783},[8488],{"type":46,"tag":156,"props":8489,"children":8490},{"emptyLinePlaceholder":328},[8491],{"type":52,"value":331},{"type":46,"tag":156,"props":8493,"children":8494},{"class":158,"line":1807},[8495],{"type":46,"tag":156,"props":8496,"children":8497},{"style":163},[8498],{"type":52,"value":8499},"\u002F\u002F Package turbo.json (apps\u002Fweb\u002Fturbo.json)\n",{"type":46,"tag":156,"props":8501,"children":8502},{"class":158,"line":1843},[8503],{"type":46,"tag":156,"props":8504,"children":8505},{"style":182},[8506],{"type":52,"value":637},{"type":46,"tag":156,"props":8508,"children":8509},{"class":158,"line":1876},[8510,8514,8518,8522,8526,8530,8534,8538,8542],{"type":46,"tag":156,"props":8511,"children":8512},{"style":182},[8513],{"type":52,"value":645},{"type":46,"tag":156,"props":8515,"children":8516},{"style":193},[8517],{"type":52,"value":4974},{"type":46,"tag":156,"props":8519,"children":8520},{"style":182},[8521],{"type":52,"value":201},{"type":46,"tag":156,"props":8523,"children":8524},{"style":182},[8525],{"type":52,"value":206},{"type":46,"tag":156,"props":8527,"children":8528},{"style":182},[8529],{"type":52,"value":710},{"type":46,"tag":156,"props":8531,"children":8532},{"style":182},[8533],{"type":52,"value":201},{"type":46,"tag":156,"props":8535,"children":8536},{"style":235},[8537],{"type":52,"value":4995},{"type":46,"tag":156,"props":8539,"children":8540},{"style":182},[8541],{"type":52,"value":201},{"type":46,"tag":156,"props":8543,"children":8544},{"style":182},[8545],{"type":52,"value":3190},{"type":46,"tag":156,"props":8547,"children":8548},{"class":158,"line":1884},[8549,8553,8557,8561,8565],{"type":46,"tag":156,"props":8550,"children":8551},{"style":182},[8552],{"type":52,"value":645},{"type":46,"tag":156,"props":8554,"children":8555},{"style":193},[8556],{"type":52,"value":650},{"type":46,"tag":156,"props":8558,"children":8559},{"style":182},[8560],{"type":52,"value":201},{"type":46,"tag":156,"props":8562,"children":8563},{"style":182},[8564],{"type":52,"value":206},{"type":46,"tag":156,"props":8566,"children":8567},{"style":182},[8568],{"type":52,"value":663},{"type":46,"tag":156,"props":8570,"children":8571},{"class":158,"line":2932},[8572,8576,8580,8584,8588],{"type":46,"tag":156,"props":8573,"children":8574},{"style":182},[8575],{"type":52,"value":671},{"type":46,"tag":156,"props":8577,"children":8578},{"style":218},[8579],{"type":52,"value":1722},{"type":46,"tag":156,"props":8581,"children":8582},{"style":182},[8583],{"type":52,"value":201},{"type":46,"tag":156,"props":8585,"children":8586},{"style":182},[8587],{"type":52,"value":206},{"type":46,"tag":156,"props":8589,"children":8590},{"style":182},[8591],{"type":52,"value":663},{"type":46,"tag":156,"props":8593,"children":8594},{"class":158,"line":28},[8595,8599,8603,8607,8611,8616],{"type":46,"tag":156,"props":8596,"children":8597},{"style":182},[8598],{"type":52,"value":2961},{"type":46,"tag":156,"props":8600,"children":8601},{"style":694},[8602],{"type":52,"value":3864},{"type":46,"tag":156,"props":8604,"children":8605},{"style":182},[8606],{"type":52,"value":201},{"type":46,"tag":156,"props":8608,"children":8609},{"style":182},[8610],{"type":52,"value":206},{"type":46,"tag":156,"props":8612,"children":8613},{"style":182},[8614],{"type":52,"value":8615}," true",{"type":46,"tag":156,"props":8617,"children":8618},{"style":163},[8619],{"type":52,"value":8620},"  \u002F\u002F Apps run long-running dev servers\n",{"type":46,"tag":156,"props":8622,"children":8623},{"class":158,"line":2997},[8624],{"type":46,"tag":156,"props":8625,"children":8626},{"style":182},[8627],{"type":52,"value":3003},{"type":46,"tag":156,"props":8629,"children":8630},{"class":158,"line":3006},[8631],{"type":46,"tag":156,"props":8632,"children":8633},{"style":182},[8634],{"type":52,"value":867},{"type":46,"tag":156,"props":8636,"children":8637},{"class":158,"line":3014},[8638],{"type":46,"tag":156,"props":8639,"children":8640},{"style":182},[8641],{"type":52,"value":875},{"type":46,"tag":55,"props":8643,"children":8644},{},[8645],{"type":46,"tag":71,"props":8646,"children":8647},{},[8648],{"type":52,"value":8649},"Why this works:",{"type":46,"tag":2661,"props":8651,"children":8652},{},[8653,8685,8703],{"type":46,"tag":86,"props":8654,"children":8655},{},[8656,8661,8662,8668,8669,8675,8677,8683],{"type":46,"tag":71,"props":8657,"children":8658},{},[8659],{"type":52,"value":8660},"Packages",{"type":52,"value":2612},{"type":46,"tag":92,"props":8663,"children":8665},{"className":8664},[],[8666],{"type":52,"value":8667},"@acme\u002Fdb",{"type":52,"value":5726},{"type":46,"tag":92,"props":8670,"children":8672},{"className":8671},[],[8673],{"type":52,"value":8674},"@acme\u002Fvalidators",{"type":52,"value":8676},") have ",{"type":46,"tag":92,"props":8678,"children":8680},{"className":8679},[],[8681],{"type":52,"value":8682},"\"dev\": \"tsc\"",{"type":52,"value":8684}," — one-shot type generation that completes quickly",{"type":46,"tag":86,"props":8686,"children":8687},{},[8688,8693,8695,8701],{"type":46,"tag":71,"props":8689,"children":8690},{},[8691],{"type":52,"value":8692},"Apps",{"type":52,"value":8694}," override with ",{"type":46,"tag":92,"props":8696,"children":8698},{"className":8697},[],[8699],{"type":52,"value":8700},"persistent: true",{"type":52,"value":8702}," for actual dev servers (Next.js, etc.)",{"type":46,"tag":86,"props":8704,"children":8705},{},[8706,8714,8716,8721],{"type":46,"tag":71,"props":8707,"children":8708},{},[8709],{"type":46,"tag":92,"props":8710,"children":8712},{"className":8711},[],[8713],{"type":52,"value":8263},{"type":52,"value":8715}," re-runs the one-shot package ",{"type":46,"tag":92,"props":8717,"children":8719},{"className":8718},[],[8720],{"type":52,"value":1722},{"type":52,"value":8722}," scripts when source files change, keeping types in sync",{"type":46,"tag":55,"props":8724,"children":8725},{},[8726,8731,8733,8739,8741,8746],{"type":46,"tag":71,"props":8727,"children":8728},{},[8729],{"type":52,"value":8730},"Intended usage:",{"type":52,"value":8732}," Run ",{"type":46,"tag":92,"props":8734,"children":8736},{"className":8735},[],[8737],{"type":52,"value":8738},"turbo watch dev",{"type":52,"value":8740}," (not ",{"type":46,"tag":92,"props":8742,"children":8744},{"className":8743},[],[8745],{"type":52,"value":1869},{"type":52,"value":8747},"). Watch mode re-executes one-shot tasks on file changes while keeping persistent tasks running.",{"type":46,"tag":55,"props":8749,"children":8750},{},[8751,8756,8758,8764,8765,8771],{"type":46,"tag":71,"props":8752,"children":8753},{},[8754],{"type":52,"value":8755},"Alternative pattern:",{"type":52,"value":8757}," Use a separate task name like ",{"type":46,"tag":92,"props":8759,"children":8761},{"className":8760},[],[8762],{"type":52,"value":8763},"prepare",{"type":52,"value":6287},{"type":46,"tag":92,"props":8766,"children":8768},{"className":8767},[],[8769],{"type":52,"value":8770},"generate",{"type":52,"value":8772}," for one-shot dependency builds to make the intent clearer:",{"type":46,"tag":145,"props":8774,"children":8776},{"className":147,"code":8775,"language":149,"meta":150,"style":150},"{\n  \"tasks\": {\n    \"prepare\": {\n      \"dependsOn\": [\"^prepare\"],\n      \"outputs\": [\"dist\u002F**\"]\n    },\n    \"dev\": {\n      \"dependsOn\": [\"prepare\"],\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n",[8777],{"type":46,"tag":92,"props":8778,"children":8779},{"__ignoreMap":150},[8780,8787,8810,8833,8873,8912,8919,8942,8981,9004,9027,9034,9041],{"type":46,"tag":156,"props":8781,"children":8782},{"class":158,"line":159},[8783],{"type":46,"tag":156,"props":8784,"children":8785},{"style":182},[8786],{"type":52,"value":637},{"type":46,"tag":156,"props":8788,"children":8789},{"class":158,"line":169},[8790,8794,8798,8802,8806],{"type":46,"tag":156,"props":8791,"children":8792},{"style":182},[8793],{"type":52,"value":645},{"type":46,"tag":156,"props":8795,"children":8796},{"style":193},[8797],{"type":52,"value":650},{"type":46,"tag":156,"props":8799,"children":8800},{"style":182},[8801],{"type":52,"value":201},{"type":46,"tag":156,"props":8803,"children":8804},{"style":182},[8805],{"type":52,"value":206},{"type":46,"tag":156,"props":8807,"children":8808},{"style":182},[8809],{"type":52,"value":663},{"type":46,"tag":156,"props":8811,"children":8812},{"class":158,"line":178},[8813,8817,8821,8825,8829],{"type":46,"tag":156,"props":8814,"children":8815},{"style":182},[8816],{"type":52,"value":671},{"type":46,"tag":156,"props":8818,"children":8819},{"style":218},[8820],{"type":52,"value":8763},{"type":46,"tag":156,"props":8822,"children":8823},{"style":182},[8824],{"type":52,"value":201},{"type":46,"tag":156,"props":8826,"children":8827},{"style":182},[8828],{"type":52,"value":206},{"type":46,"tag":156,"props":8830,"children":8831},{"style":182},[8832],{"type":52,"value":663},{"type":46,"tag":156,"props":8834,"children":8835},{"class":158,"line":324},[8836,8840,8844,8848,8852,8856,8860,8865,8869],{"type":46,"tag":156,"props":8837,"children":8838},{"style":182},[8839],{"type":52,"value":2961},{"type":46,"tag":156,"props":8841,"children":8842},{"style":694},[8843],{"type":52,"value":697},{"type":46,"tag":156,"props":8845,"children":8846},{"style":182},[8847],{"type":52,"value":201},{"type":46,"tag":156,"props":8849,"children":8850},{"style":182},[8851],{"type":52,"value":206},{"type":46,"tag":156,"props":8853,"children":8854},{"style":182},[8855],{"type":52,"value":710},{"type":46,"tag":156,"props":8857,"children":8858},{"style":182},[8859],{"type":52,"value":201},{"type":46,"tag":156,"props":8861,"children":8862},{"style":235},[8863],{"type":52,"value":8864},"^prepare",{"type":46,"tag":156,"props":8866,"children":8867},{"style":182},[8868],{"type":52,"value":201},{"type":46,"tag":156,"props":8870,"children":8871},{"style":182},[8872],{"type":52,"value":3190},{"type":46,"tag":156,"props":8874,"children":8875},{"class":158,"line":334},[8876,8880,8884,8888,8892,8896,8900,8904,8908],{"type":46,"tag":156,"props":8877,"children":8878},{"style":182},[8879],{"type":52,"value":2961},{"type":46,"tag":156,"props":8881,"children":8882},{"style":694},[8883],{"type":52,"value":737},{"type":46,"tag":156,"props":8885,"children":8886},{"style":182},[8887],{"type":52,"value":201},{"type":46,"tag":156,"props":8889,"children":8890},{"style":182},[8891],{"type":52,"value":206},{"type":46,"tag":156,"props":8893,"children":8894},{"style":182},[8895],{"type":52,"value":710},{"type":46,"tag":156,"props":8897,"children":8898},{"style":182},[8899],{"type":52,"value":201},{"type":46,"tag":156,"props":8901,"children":8902},{"style":235},[8903],{"type":52,"value":758},{"type":46,"tag":156,"props":8905,"children":8906},{"style":182},[8907],{"type":52,"value":201},{"type":46,"tag":156,"props":8909,"children":8910},{"style":182},[8911],{"type":52,"value":2994},{"type":46,"tag":156,"props":8913,"children":8914},{"class":158,"line":343},[8915],{"type":46,"tag":156,"props":8916,"children":8917},{"style":182},[8918],{"type":52,"value":3554},{"type":46,"tag":156,"props":8920,"children":8921},{"class":158,"line":472},[8922,8926,8930,8934,8938],{"type":46,"tag":156,"props":8923,"children":8924},{"style":182},[8925],{"type":52,"value":671},{"type":46,"tag":156,"props":8927,"children":8928},{"style":218},[8929],{"type":52,"value":1722},{"type":46,"tag":156,"props":8931,"children":8932},{"style":182},[8933],{"type":52,"value":201},{"type":46,"tag":156,"props":8935,"children":8936},{"style":182},[8937],{"type":52,"value":206},{"type":46,"tag":156,"props":8939,"children":8940},{"style":182},[8941],{"type":52,"value":663},{"type":46,"tag":156,"props":8943,"children":8944},{"class":158,"line":480},[8945,8949,8953,8957,8961,8965,8969,8973,8977],{"type":46,"tag":156,"props":8946,"children":8947},{"style":182},[8948],{"type":52,"value":2961},{"type":46,"tag":156,"props":8950,"children":8951},{"style":694},[8952],{"type":52,"value":697},{"type":46,"tag":156,"props":8954,"children":8955},{"style":182},[8956],{"type":52,"value":201},{"type":46,"tag":156,"props":8958,"children":8959},{"style":182},[8960],{"type":52,"value":206},{"type":46,"tag":156,"props":8962,"children":8963},{"style":182},[8964],{"type":52,"value":710},{"type":46,"tag":156,"props":8966,"children":8967},{"style":182},[8968],{"type":52,"value":201},{"type":46,"tag":156,"props":8970,"children":8971},{"style":235},[8972],{"type":52,"value":8763},{"type":46,"tag":156,"props":8974,"children":8975},{"style":182},[8976],{"type":52,"value":201},{"type":46,"tag":156,"props":8978,"children":8979},{"style":182},[8980],{"type":52,"value":3190},{"type":46,"tag":156,"props":8982,"children":8983},{"class":158,"line":489},[8984,8988,8992,8996,9000],{"type":46,"tag":156,"props":8985,"children":8986},{"style":182},[8987],{"type":52,"value":2961},{"type":46,"tag":156,"props":8989,"children":8990},{"style":694},[8991],{"type":52,"value":3839},{"type":46,"tag":156,"props":8993,"children":8994},{"style":182},[8995],{"type":52,"value":201},{"type":46,"tag":156,"props":8997,"children":8998},{"style":182},[8999],{"type":52,"value":206},{"type":46,"tag":156,"props":9001,"children":9002},{"style":182},[9003],{"type":52,"value":3852},{"type":46,"tag":156,"props":9005,"children":9006},{"class":158,"line":1775},[9007,9011,9015,9019,9023],{"type":46,"tag":156,"props":9008,"children":9009},{"style":182},[9010],{"type":52,"value":2961},{"type":46,"tag":156,"props":9012,"children":9013},{"style":694},[9014],{"type":52,"value":3864},{"type":46,"tag":156,"props":9016,"children":9017},{"style":182},[9018],{"type":52,"value":201},{"type":46,"tag":156,"props":9020,"children":9021},{"style":182},[9022],{"type":52,"value":206},{"type":46,"tag":156,"props":9024,"children":9025},{"style":182},[9026],{"type":52,"value":3877},{"type":46,"tag":156,"props":9028,"children":9029},{"class":158,"line":1783},[9030],{"type":46,"tag":156,"props":9031,"children":9032},{"style":182},[9033],{"type":52,"value":3003},{"type":46,"tag":156,"props":9035,"children":9036},{"class":158,"line":1807},[9037],{"type":46,"tag":156,"props":9038,"children":9039},{"style":182},[9040],{"type":52,"value":867},{"type":46,"tag":156,"props":9042,"children":9043},{"class":158,"line":1843},[9044],{"type":46,"tag":156,"props":9045,"children":9046},{"style":182},[9047],{"type":52,"value":875},{"type":46,"tag":1422,"props":9049,"children":9051},{"id":9050},"transit-nodes-for-parallel-tasks-with-cache-invalidation",[9052],{"type":52,"value":9053},"Transit Nodes for Parallel Tasks with Cache Invalidation",{"type":46,"tag":55,"props":9055,"children":9056},{},[9057],{"type":52,"value":9058},"Some tasks can run in parallel (don't need built output from dependencies) but must invalidate cache when dependency source code changes.",{"type":46,"tag":55,"props":9060,"children":9061},{},[9062],{"type":46,"tag":71,"props":9063,"children":9064},{},[9065,9067,9073],{"type":52,"value":9066},"The problem with ",{"type":46,"tag":92,"props":9068,"children":9070},{"className":9069},[],[9071],{"type":52,"value":9072},"dependsOn: [\"^taskname\"]",{"type":52,"value":206},{"type":46,"tag":2661,"props":9075,"children":9076},{},[9077],{"type":46,"tag":86,"props":9078,"children":9079},{},[9080],{"type":52,"value":9081},"Forces sequential execution (slow)",{"type":46,"tag":55,"props":9083,"children":9084},{},[9085],{"type":46,"tag":71,"props":9086,"children":9087},{},[9088,9089,9095],{"type":52,"value":9066},{"type":46,"tag":92,"props":9090,"children":9092},{"className":9091},[],[9093],{"type":52,"value":9094},"dependsOn: []",{"type":52,"value":9096}," (no dependencies):",{"type":46,"tag":2661,"props":9098,"children":9099},{},[9100,9105],{"type":46,"tag":86,"props":9101,"children":9102},{},[9103],{"type":52,"value":9104},"Allows parallel execution (fast)",{"type":46,"tag":86,"props":9106,"children":9107},{},[9108],{"type":52,"value":9109},"But cache is INCORRECT - changing dependency source won't invalidate cache",{"type":46,"tag":55,"props":9111,"children":9112},{},[9113],{"type":46,"tag":71,"props":9114,"children":9115},{},[9116],{"type":52,"value":9117},"Transit Nodes solve both:",{"type":46,"tag":145,"props":9119,"children":9121},{"className":147,"code":9120,"language":149,"meta":150,"style":150},"{\n  \"tasks\": {\n    \"transit\": { \"dependsOn\": [\"^transit\"] },\n    \"my-task\": { \"dependsOn\": [\"transit\"] }\n  }\n}\n",[9122],{"type":46,"tag":92,"props":9123,"children":9124},{"__ignoreMap":150},[9125,9132,9155,9219,9283,9290],{"type":46,"tag":156,"props":9126,"children":9127},{"class":158,"line":159},[9128],{"type":46,"tag":156,"props":9129,"children":9130},{"style":182},[9131],{"type":52,"value":637},{"type":46,"tag":156,"props":9133,"children":9134},{"class":158,"line":169},[9135,9139,9143,9147,9151],{"type":46,"tag":156,"props":9136,"children":9137},{"style":182},[9138],{"type":52,"value":645},{"type":46,"tag":156,"props":9140,"children":9141},{"style":193},[9142],{"type":52,"value":650},{"type":46,"tag":156,"props":9144,"children":9145},{"style":182},[9146],{"type":52,"value":201},{"type":46,"tag":156,"props":9148,"children":9149},{"style":182},[9150],{"type":52,"value":206},{"type":46,"tag":156,"props":9152,"children":9153},{"style":182},[9154],{"type":52,"value":663},{"type":46,"tag":156,"props":9156,"children":9157},{"class":158,"line":178},[9158,9162,9166,9170,9174,9178,9182,9186,9190,9194,9198,9202,9207,9211,9215],{"type":46,"tag":156,"props":9159,"children":9160},{"style":182},[9161],{"type":52,"value":671},{"type":46,"tag":156,"props":9163,"children":9164},{"style":218},[9165],{"type":52,"value":8241},{"type":46,"tag":156,"props":9167,"children":9168},{"style":182},[9169],{"type":52,"value":201},{"type":46,"tag":156,"props":9171,"children":9172},{"style":182},[9173],{"type":52,"value":206},{"type":46,"tag":156,"props":9175,"children":9176},{"style":182},[9177],{"type":52,"value":211},{"type":46,"tag":156,"props":9179,"children":9180},{"style":182},[9181],{"type":52,"value":190},{"type":46,"tag":156,"props":9183,"children":9184},{"style":694},[9185],{"type":52,"value":697},{"type":46,"tag":156,"props":9187,"children":9188},{"style":182},[9189],{"type":52,"value":201},{"type":46,"tag":156,"props":9191,"children":9192},{"style":182},[9193],{"type":52,"value":206},{"type":46,"tag":156,"props":9195,"children":9196},{"style":182},[9197],{"type":52,"value":710},{"type":46,"tag":156,"props":9199,"children":9200},{"style":182},[9201],{"type":52,"value":201},{"type":46,"tag":156,"props":9203,"children":9204},{"style":235},[9205],{"type":52,"value":9206},"^transit",{"type":46,"tag":156,"props":9208,"children":9209},{"style":182},[9210],{"type":52,"value":201},{"type":46,"tag":156,"props":9212,"children":9213},{"style":182},[9214],{"type":52,"value":767},{"type":46,"tag":156,"props":9216,"children":9217},{"style":182},[9218],{"type":52,"value":772},{"type":46,"tag":156,"props":9220,"children":9221},{"class":158,"line":324},[9222,9226,9231,9235,9239,9243,9247,9251,9255,9259,9263,9267,9271,9275,9279],{"type":46,"tag":156,"props":9223,"children":9224},{"style":182},[9225],{"type":52,"value":671},{"type":46,"tag":156,"props":9227,"children":9228},{"style":218},[9229],{"type":52,"value":9230},"my-task",{"type":46,"tag":156,"props":9232,"children":9233},{"style":182},[9234],{"type":52,"value":201},{"type":46,"tag":156,"props":9236,"children":9237},{"style":182},[9238],{"type":52,"value":206},{"type":46,"tag":156,"props":9240,"children":9241},{"style":182},[9242],{"type":52,"value":211},{"type":46,"tag":156,"props":9244,"children":9245},{"style":182},[9246],{"type":52,"value":190},{"type":46,"tag":156,"props":9248,"children":9249},{"style":694},[9250],{"type":52,"value":697},{"type":46,"tag":156,"props":9252,"children":9253},{"style":182},[9254],{"type":52,"value":201},{"type":46,"tag":156,"props":9256,"children":9257},{"style":182},[9258],{"type":52,"value":206},{"type":46,"tag":156,"props":9260,"children":9261},{"style":182},[9262],{"type":52,"value":710},{"type":46,"tag":156,"props":9264,"children":9265},{"style":182},[9266],{"type":52,"value":201},{"type":46,"tag":156,"props":9268,"children":9269},{"style":235},[9270],{"type":52,"value":8241},{"type":46,"tag":156,"props":9272,"children":9273},{"style":182},[9274],{"type":52,"value":201},{"type":46,"tag":156,"props":9276,"children":9277},{"style":182},[9278],{"type":52,"value":767},{"type":46,"tag":156,"props":9280,"children":9281},{"style":182},[9282],{"type":52,"value":321},{"type":46,"tag":156,"props":9284,"children":9285},{"class":158,"line":334},[9286],{"type":46,"tag":156,"props":9287,"children":9288},{"style":182},[9289],{"type":52,"value":867},{"type":46,"tag":156,"props":9291,"children":9292},{"class":158,"line":343},[9293],{"type":46,"tag":156,"props":9294,"children":9295},{"style":182},[9296],{"type":52,"value":875},{"type":46,"tag":55,"props":9298,"children":9299},{},[9300,9301,9306],{"type":52,"value":4283},{"type":46,"tag":92,"props":9302,"children":9304},{"className":9303},[],[9305],{"type":52,"value":8241},{"type":52,"value":9307}," task creates dependency relationships without matching any actual script, so tasks run in parallel with correct cache invalidation.",{"type":46,"tag":55,"props":9309,"children":9310},{},[9311,9316],{"type":46,"tag":71,"props":9312,"children":9313},{},[9314],{"type":52,"value":9315},"How to identify tasks that need this pattern:",{"type":52,"value":9317}," Look for tasks that read source files from dependencies but don't need their build outputs.",{"type":46,"tag":1422,"props":9319,"children":9321},{"id":9320},"with-environment-variables",[9322],{"type":52,"value":9323},"With Environment Variables",{"type":46,"tag":145,"props":9325,"children":9327},{"className":147,"code":9326,"language":149,"meta":150,"style":150},"{\n  \"globalEnv\": [\"NODE_ENV\"],\n  \"globalDependencies\": [\".env\"],\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist\u002F**\"],\n      \"env\": [\"API_URL\", \"DATABASE_URL\"]\n    }\n  }\n}\n",[9328],{"type":46,"tag":92,"props":9329,"children":9330},{"__ignoreMap":150},[9331,9338,9378,9417,9440,9463,9502,9541,9596,9603,9610],{"type":46,"tag":156,"props":9332,"children":9333},{"class":158,"line":159},[9334],{"type":46,"tag":156,"props":9335,"children":9336},{"style":182},[9337],{"type":52,"value":637},{"type":46,"tag":156,"props":9339,"children":9340},{"class":158,"line":169},[9341,9345,9349,9353,9357,9361,9365,9370,9374],{"type":46,"tag":156,"props":9342,"children":9343},{"style":182},[9344],{"type":52,"value":645},{"type":46,"tag":156,"props":9346,"children":9347},{"style":193},[9348],{"type":52,"value":3935},{"type":46,"tag":156,"props":9350,"children":9351},{"style":182},[9352],{"type":52,"value":201},{"type":46,"tag":156,"props":9354,"children":9355},{"style":182},[9356],{"type":52,"value":206},{"type":46,"tag":156,"props":9358,"children":9359},{"style":182},[9360],{"type":52,"value":710},{"type":46,"tag":156,"props":9362,"children":9363},{"style":182},[9364],{"type":52,"value":201},{"type":46,"tag":156,"props":9366,"children":9367},{"style":235},[9368],{"type":52,"value":9369},"NODE_ENV",{"type":46,"tag":156,"props":9371,"children":9372},{"style":182},[9373],{"type":52,"value":201},{"type":46,"tag":156,"props":9375,"children":9376},{"style":182},[9377],{"type":52,"value":3190},{"type":46,"tag":156,"props":9379,"children":9380},{"class":158,"line":178},[9381,9385,9389,9393,9397,9401,9405,9409,9413],{"type":46,"tag":156,"props":9382,"children":9383},{"style":182},[9384],{"type":52,"value":645},{"type":46,"tag":156,"props":9386,"children":9387},{"style":193},[9388],{"type":52,"value":3048},{"type":46,"tag":156,"props":9390,"children":9391},{"style":182},[9392],{"type":52,"value":201},{"type":46,"tag":156,"props":9394,"children":9395},{"style":182},[9396],{"type":52,"value":206},{"type":46,"tag":156,"props":9398,"children":9399},{"style":182},[9400],{"type":52,"value":710},{"type":46,"tag":156,"props":9402,"children":9403},{"style":182},[9404],{"type":52,"value":201},{"type":46,"tag":156,"props":9406,"children":9407},{"style":235},[9408],{"type":52,"value":3181},{"type":46,"tag":156,"props":9410,"children":9411},{"style":182},[9412],{"type":52,"value":201},{"type":46,"tag":156,"props":9414,"children":9415},{"style":182},[9416],{"type":52,"value":3190},{"type":46,"tag":156,"props":9418,"children":9419},{"class":158,"line":324},[9420,9424,9428,9432,9436],{"type":46,"tag":156,"props":9421,"children":9422},{"style":182},[9423],{"type":52,"value":645},{"type":46,"tag":156,"props":9425,"children":9426},{"style":193},[9427],{"type":52,"value":650},{"type":46,"tag":156,"props":9429,"children":9430},{"style":182},[9431],{"type":52,"value":201},{"type":46,"tag":156,"props":9433,"children":9434},{"style":182},[9435],{"type":52,"value":206},{"type":46,"tag":156,"props":9437,"children":9438},{"style":182},[9439],{"type":52,"value":663},{"type":46,"tag":156,"props":9441,"children":9442},{"class":158,"line":334},[9443,9447,9451,9455,9459],{"type":46,"tag":156,"props":9444,"children":9445},{"style":182},[9446],{"type":52,"value":671},{"type":46,"tag":156,"props":9448,"children":9449},{"style":218},[9450],{"type":52,"value":18},{"type":46,"tag":156,"props":9452,"children":9453},{"style":182},[9454],{"type":52,"value":201},{"type":46,"tag":156,"props":9456,"children":9457},{"style":182},[9458],{"type":52,"value":206},{"type":46,"tag":156,"props":9460,"children":9461},{"style":182},[9462],{"type":52,"value":663},{"type":46,"tag":156,"props":9464,"children":9465},{"class":158,"line":343},[9466,9470,9474,9478,9482,9486,9490,9494,9498],{"type":46,"tag":156,"props":9467,"children":9468},{"style":182},[9469],{"type":52,"value":2961},{"type":46,"tag":156,"props":9471,"children":9472},{"style":694},[9473],{"type":52,"value":697},{"type":46,"tag":156,"props":9475,"children":9476},{"style":182},[9477],{"type":52,"value":201},{"type":46,"tag":156,"props":9479,"children":9480},{"style":182},[9481],{"type":52,"value":206},{"type":46,"tag":156,"props":9483,"children":9484},{"style":182},[9485],{"type":52,"value":710},{"type":46,"tag":156,"props":9487,"children":9488},{"style":182},[9489],{"type":52,"value":201},{"type":46,"tag":156,"props":9491,"children":9492},{"style":235},[9493],{"type":52,"value":719},{"type":46,"tag":156,"props":9495,"children":9496},{"style":182},[9497],{"type":52,"value":201},{"type":46,"tag":156,"props":9499,"children":9500},{"style":182},[9501],{"type":52,"value":3190},{"type":46,"tag":156,"props":9503,"children":9504},{"class":158,"line":472},[9505,9509,9513,9517,9521,9525,9529,9533,9537],{"type":46,"tag":156,"props":9506,"children":9507},{"style":182},[9508],{"type":52,"value":2961},{"type":46,"tag":156,"props":9510,"children":9511},{"style":694},[9512],{"type":52,"value":737},{"type":46,"tag":156,"props":9514,"children":9515},{"style":182},[9516],{"type":52,"value":201},{"type":46,"tag":156,"props":9518,"children":9519},{"style":182},[9520],{"type":52,"value":206},{"type":46,"tag":156,"props":9522,"children":9523},{"style":182},[9524],{"type":52,"value":710},{"type":46,"tag":156,"props":9526,"children":9527},{"style":182},[9528],{"type":52,"value":201},{"type":46,"tag":156,"props":9530,"children":9531},{"style":235},[9532],{"type":52,"value":758},{"type":46,"tag":156,"props":9534,"children":9535},{"style":182},[9536],{"type":52,"value":201},{"type":46,"tag":156,"props":9538,"children":9539},{"style":182},[9540],{"type":52,"value":3190},{"type":46,"tag":156,"props":9542,"children":9543},{"class":158,"line":480},[9544,9548,9552,9556,9560,9564,9568,9572,9576,9580,9584,9588,9592],{"type":46,"tag":156,"props":9545,"children":9546},{"style":182},[9547],{"type":52,"value":2961},{"type":46,"tag":156,"props":9549,"children":9550},{"style":694},[9551],{"type":52,"value":3445},{"type":46,"tag":156,"props":9553,"children":9554},{"style":182},[9555],{"type":52,"value":201},{"type":46,"tag":156,"props":9557,"children":9558},{"style":182},[9559],{"type":52,"value":206},{"type":46,"tag":156,"props":9561,"children":9562},{"style":182},[9563],{"type":52,"value":710},{"type":46,"tag":156,"props":9565,"children":9566},{"style":182},[9567],{"type":52,"value":201},{"type":46,"tag":156,"props":9569,"children":9570},{"style":235},[9571],{"type":52,"value":3466},{"type":46,"tag":156,"props":9573,"children":9574},{"style":182},[9575],{"type":52,"value":201},{"type":46,"tag":156,"props":9577,"children":9578},{"style":182},[9579],{"type":52,"value":247},{"type":46,"tag":156,"props":9581,"children":9582},{"style":182},[9583],{"type":52,"value":190},{"type":46,"tag":156,"props":9585,"children":9586},{"style":235},[9587],{"type":52,"value":3483},{"type":46,"tag":156,"props":9589,"children":9590},{"style":182},[9591],{"type":52,"value":201},{"type":46,"tag":156,"props":9593,"children":9594},{"style":182},[9595],{"type":52,"value":2994},{"type":46,"tag":156,"props":9597,"children":9598},{"class":158,"line":489},[9599],{"type":46,"tag":156,"props":9600,"children":9601},{"style":182},[9602],{"type":52,"value":3003},{"type":46,"tag":156,"props":9604,"children":9605},{"class":158,"line":1775},[9606],{"type":46,"tag":156,"props":9607,"children":9608},{"style":182},[9609],{"type":52,"value":867},{"type":46,"tag":156,"props":9611,"children":9612},{"class":158,"line":1783},[9613],{"type":46,"tag":156,"props":9614,"children":9615},{"style":182},[9616],{"type":52,"value":875},{"type":46,"tag":61,"props":9618,"children":9620},{"id":9619},"reference-index",[9621],{"type":52,"value":9622},"Reference Index",{"type":46,"tag":1422,"props":9624,"children":9626},{"id":9625},"configuration",[9627],{"type":52,"value":9628},"Configuration",{"type":46,"tag":9630,"props":9631,"children":9632},"table",{},[9633,9652],{"type":46,"tag":9634,"props":9635,"children":9636},"thead",{},[9637],{"type":46,"tag":9638,"props":9639,"children":9640},"tr",{},[9641,9647],{"type":46,"tag":9642,"props":9643,"children":9644},"th",{},[9645],{"type":52,"value":9646},"File",{"type":46,"tag":9642,"props":9648,"children":9649},{},[9650],{"type":52,"value":9651},"Purpose",{"type":46,"tag":9653,"props":9654,"children":9655},"tbody",{},[9656,9675,9692,9709],{"type":46,"tag":9638,"props":9657,"children":9658},{},[9659,9670],{"type":46,"tag":9660,"props":9661,"children":9662},"td",{},[9663],{"type":46,"tag":9664,"props":9665,"children":9667},"a",{"href":9666},".\u002Freferences\u002Fconfiguration\u002FRULE.md",[9668],{"type":52,"value":9669},"configuration\u002FRULE.md",{"type":46,"tag":9660,"props":9671,"children":9672},{},[9673],{"type":52,"value":9674},"turbo.json overview, Package Configurations",{"type":46,"tag":9638,"props":9676,"children":9677},{},[9678,9687],{"type":46,"tag":9660,"props":9679,"children":9680},{},[9681],{"type":46,"tag":9664,"props":9682,"children":9684},{"href":9683},".\u002Freferences\u002Fconfiguration\u002Ftasks.md",[9685],{"type":52,"value":9686},"configuration\u002Ftasks.md",{"type":46,"tag":9660,"props":9688,"children":9689},{},[9690],{"type":52,"value":9691},"dependsOn, outputs, inputs, env, cache, persistent",{"type":46,"tag":9638,"props":9693,"children":9694},{},[9695,9704],{"type":46,"tag":9660,"props":9696,"children":9697},{},[9698],{"type":46,"tag":9664,"props":9699,"children":9701},{"href":9700},".\u002Freferences\u002Fconfiguration\u002Fglobal-options.md",[9702],{"type":52,"value":9703},"configuration\u002Fglobal-options.md",{"type":46,"tag":9660,"props":9705,"children":9706},{},[9707],{"type":52,"value":9708},"globalEnv, globalDependencies, cacheDir, daemon, envMode",{"type":46,"tag":9638,"props":9710,"children":9711},{},[9712,9721],{"type":46,"tag":9660,"props":9713,"children":9714},{},[9715],{"type":46,"tag":9664,"props":9716,"children":9718},{"href":9717},".\u002Freferences\u002Fconfiguration\u002Fgotchas.md",[9719],{"type":52,"value":9720},"configuration\u002Fgotchas.md",{"type":46,"tag":9660,"props":9722,"children":9723},{},[9724],{"type":52,"value":9725},"Common configuration mistakes",{"type":46,"tag":1422,"props":9727,"children":9729},{"id":9728},"caching",[9730],{"type":52,"value":9731},"Caching",{"type":46,"tag":9630,"props":9733,"children":9734},{},[9735,9749],{"type":46,"tag":9634,"props":9736,"children":9737},{},[9738],{"type":46,"tag":9638,"props":9739,"children":9740},{},[9741,9745],{"type":46,"tag":9642,"props":9742,"children":9743},{},[9744],{"type":52,"value":9646},{"type":46,"tag":9642,"props":9746,"children":9747},{},[9748],{"type":52,"value":9651},{"type":46,"tag":9653,"props":9750,"children":9751},{},[9752,9769,9786],{"type":46,"tag":9638,"props":9753,"children":9754},{},[9755,9764],{"type":46,"tag":9660,"props":9756,"children":9757},{},[9758],{"type":46,"tag":9664,"props":9759,"children":9761},{"href":9760},".\u002Freferences\u002Fcaching\u002FRULE.md",[9762],{"type":52,"value":9763},"caching\u002FRULE.md",{"type":46,"tag":9660,"props":9765,"children":9766},{},[9767],{"type":52,"value":9768},"How caching works, hash inputs",{"type":46,"tag":9638,"props":9770,"children":9771},{},[9772,9781],{"type":46,"tag":9660,"props":9773,"children":9774},{},[9775],{"type":46,"tag":9664,"props":9776,"children":9778},{"href":9777},".\u002Freferences\u002Fcaching\u002Fremote-cache.md",[9779],{"type":52,"value":9780},"caching\u002Fremote-cache.md",{"type":46,"tag":9660,"props":9782,"children":9783},{},[9784],{"type":52,"value":9785},"Vercel Remote Cache, self-hosted, login\u002Flink",{"type":46,"tag":9638,"props":9787,"children":9788},{},[9789,9798],{"type":46,"tag":9660,"props":9790,"children":9791},{},[9792],{"type":46,"tag":9664,"props":9793,"children":9795},{"href":9794},".\u002Freferences\u002Fcaching\u002Fgotchas.md",[9796],{"type":52,"value":9797},"caching\u002Fgotchas.md",{"type":46,"tag":9660,"props":9799,"children":9800},{},[9801],{"type":52,"value":9802},"Debugging cache misses, --summarize, --dry",{"type":46,"tag":1422,"props":9804,"children":9806},{"id":9805},"environment-variables",[9807],{"type":52,"value":9808},"Environment Variables",{"type":46,"tag":9630,"props":9810,"children":9811},{},[9812,9826],{"type":46,"tag":9634,"props":9813,"children":9814},{},[9815],{"type":46,"tag":9638,"props":9816,"children":9817},{},[9818,9822],{"type":46,"tag":9642,"props":9819,"children":9820},{},[9821],{"type":52,"value":9646},{"type":46,"tag":9642,"props":9823,"children":9824},{},[9825],{"type":52,"value":9651},{"type":46,"tag":9653,"props":9827,"children":9828},{},[9829,9846,9863],{"type":46,"tag":9638,"props":9830,"children":9831},{},[9832,9841],{"type":46,"tag":9660,"props":9833,"children":9834},{},[9835],{"type":46,"tag":9664,"props":9836,"children":9838},{"href":9837},".\u002Freferences\u002Fenvironment\u002FRULE.md",[9839],{"type":52,"value":9840},"environment\u002FRULE.md",{"type":46,"tag":9660,"props":9842,"children":9843},{},[9844],{"type":52,"value":9845},"env, globalEnv, passThroughEnv",{"type":46,"tag":9638,"props":9847,"children":9848},{},[9849,9858],{"type":46,"tag":9660,"props":9850,"children":9851},{},[9852],{"type":46,"tag":9664,"props":9853,"children":9855},{"href":9854},".\u002Freferences\u002Fenvironment\u002Fmodes.md",[9856],{"type":52,"value":9857},"environment\u002Fmodes.md",{"type":46,"tag":9660,"props":9859,"children":9860},{},[9861],{"type":52,"value":9862},"Strict vs Loose mode, framework inference",{"type":46,"tag":9638,"props":9864,"children":9865},{},[9866,9875],{"type":46,"tag":9660,"props":9867,"children":9868},{},[9869],{"type":46,"tag":9664,"props":9870,"children":9872},{"href":9871},".\u002Freferences\u002Fenvironment\u002Fgotchas.md",[9873],{"type":52,"value":9874},"environment\u002Fgotchas.md",{"type":46,"tag":9660,"props":9876,"children":9877},{},[9878],{"type":52,"value":9879},".env files, CI issues",{"type":46,"tag":1422,"props":9881,"children":9883},{"id":9882},"filtering",[9884],{"type":52,"value":9885},"Filtering",{"type":46,"tag":9630,"props":9887,"children":9888},{},[9889,9903],{"type":46,"tag":9634,"props":9890,"children":9891},{},[9892],{"type":46,"tag":9638,"props":9893,"children":9894},{},[9895,9899],{"type":46,"tag":9642,"props":9896,"children":9897},{},[9898],{"type":52,"value":9646},{"type":46,"tag":9642,"props":9900,"children":9901},{},[9902],{"type":52,"value":9651},{"type":46,"tag":9653,"props":9904,"children":9905},{},[9906,9923],{"type":46,"tag":9638,"props":9907,"children":9908},{},[9909,9918],{"type":46,"tag":9660,"props":9910,"children":9911},{},[9912],{"type":46,"tag":9664,"props":9913,"children":9915},{"href":9914},".\u002Freferences\u002Ffiltering\u002FRULE.md",[9916],{"type":52,"value":9917},"filtering\u002FRULE.md",{"type":46,"tag":9660,"props":9919,"children":9920},{},[9921],{"type":52,"value":9922},"--filter syntax overview",{"type":46,"tag":9638,"props":9924,"children":9925},{},[9926,9935],{"type":46,"tag":9660,"props":9927,"children":9928},{},[9929],{"type":46,"tag":9664,"props":9930,"children":9932},{"href":9931},".\u002Freferences\u002Ffiltering\u002Fpatterns.md",[9933],{"type":52,"value":9934},"filtering\u002Fpatterns.md",{"type":46,"tag":9660,"props":9936,"children":9937},{},[9938],{"type":52,"value":9939},"Common filter patterns",{"type":46,"tag":1422,"props":9941,"children":9943},{"id":9942},"cicd",[9944],{"type":52,"value":22},{"type":46,"tag":9630,"props":9946,"children":9947},{},[9948,9962],{"type":46,"tag":9634,"props":9949,"children":9950},{},[9951],{"type":46,"tag":9638,"props":9952,"children":9953},{},[9954,9958],{"type":46,"tag":9642,"props":9955,"children":9956},{},[9957],{"type":52,"value":9646},{"type":46,"tag":9642,"props":9959,"children":9960},{},[9961],{"type":52,"value":9651},{"type":46,"tag":9653,"props":9963,"children":9964},{},[9965,9982,9999,10016],{"type":46,"tag":9638,"props":9966,"children":9967},{},[9968,9977],{"type":46,"tag":9660,"props":9969,"children":9970},{},[9971],{"type":46,"tag":9664,"props":9972,"children":9974},{"href":9973},".\u002Freferences\u002Fci\u002FRULE.md",[9975],{"type":52,"value":9976},"ci\u002FRULE.md",{"type":46,"tag":9660,"props":9978,"children":9979},{},[9980],{"type":52,"value":9981},"General CI principles",{"type":46,"tag":9638,"props":9983,"children":9984},{},[9985,9994],{"type":46,"tag":9660,"props":9986,"children":9987},{},[9988],{"type":46,"tag":9664,"props":9989,"children":9991},{"href":9990},".\u002Freferences\u002Fci\u002Fgithub-actions.md",[9992],{"type":52,"value":9993},"ci\u002Fgithub-actions.md",{"type":46,"tag":9660,"props":9995,"children":9996},{},[9997],{"type":52,"value":9998},"Complete GitHub Actions setup",{"type":46,"tag":9638,"props":10000,"children":10001},{},[10002,10011],{"type":46,"tag":9660,"props":10003,"children":10004},{},[10005],{"type":46,"tag":9664,"props":10006,"children":10008},{"href":10007},".\u002Freferences\u002Fci\u002Fvercel.md",[10009],{"type":52,"value":10010},"ci\u002Fvercel.md",{"type":46,"tag":9660,"props":10012,"children":10013},{},[10014],{"type":52,"value":10015},"Vercel deployment, turbo-ignore",{"type":46,"tag":9638,"props":10017,"children":10018},{},[10019,10028],{"type":46,"tag":9660,"props":10020,"children":10021},{},[10022],{"type":46,"tag":9664,"props":10023,"children":10025},{"href":10024},".\u002Freferences\u002Fci\u002Fpatterns.md",[10026],{"type":52,"value":10027},"ci\u002Fpatterns.md",{"type":46,"tag":9660,"props":10029,"children":10030},{},[10031],{"type":52,"value":10032},"--affected, caching strategies",{"type":46,"tag":1422,"props":10034,"children":10036},{"id":10035},"cli",[10037],{"type":52,"value":10038},"CLI",{"type":46,"tag":9630,"props":10040,"children":10041},{},[10042,10056],{"type":46,"tag":9634,"props":10043,"children":10044},{},[10045],{"type":46,"tag":9638,"props":10046,"children":10047},{},[10048,10052],{"type":46,"tag":9642,"props":10049,"children":10050},{},[10051],{"type":52,"value":9646},{"type":46,"tag":9642,"props":10053,"children":10054},{},[10055],{"type":52,"value":9651},{"type":46,"tag":9653,"props":10057,"children":10058},{},[10059,10076],{"type":46,"tag":9638,"props":10060,"children":10061},{},[10062,10071],{"type":46,"tag":9660,"props":10063,"children":10064},{},[10065],{"type":46,"tag":9664,"props":10066,"children":10068},{"href":10067},".\u002Freferences\u002Fcli\u002FRULE.md",[10069],{"type":52,"value":10070},"cli\u002FRULE.md",{"type":46,"tag":9660,"props":10072,"children":10073},{},[10074],{"type":52,"value":10075},"turbo run basics",{"type":46,"tag":9638,"props":10077,"children":10078},{},[10079,10088],{"type":46,"tag":9660,"props":10080,"children":10081},{},[10082],{"type":46,"tag":9664,"props":10083,"children":10085},{"href":10084},".\u002Freferences\u002Fcli\u002Fcommands.md",[10086],{"type":52,"value":10087},"cli\u002Fcommands.md",{"type":46,"tag":9660,"props":10089,"children":10090},{},[10091],{"type":52,"value":10092},"turbo run flags, turbo-ignore, other commands",{"type":46,"tag":1422,"props":10094,"children":10096},{"id":10095},"best-practices",[10097],{"type":52,"value":10098},"Best Practices",{"type":46,"tag":9630,"props":10100,"children":10101},{},[10102,10116],{"type":46,"tag":9634,"props":10103,"children":10104},{},[10105],{"type":46,"tag":9638,"props":10106,"children":10107},{},[10108,10112],{"type":46,"tag":9642,"props":10109,"children":10110},{},[10111],{"type":52,"value":9646},{"type":46,"tag":9642,"props":10113,"children":10114},{},[10115],{"type":52,"value":9651},{"type":46,"tag":9653,"props":10117,"children":10118},{},[10119,10136,10153,10170],{"type":46,"tag":9638,"props":10120,"children":10121},{},[10122,10131],{"type":46,"tag":9660,"props":10123,"children":10124},{},[10125],{"type":46,"tag":9664,"props":10126,"children":10128},{"href":10127},".\u002Freferences\u002Fbest-practices\u002FRULE.md",[10129],{"type":52,"value":10130},"best-practices\u002FRULE.md",{"type":46,"tag":9660,"props":10132,"children":10133},{},[10134],{"type":52,"value":10135},"Monorepo best practices overview",{"type":46,"tag":9638,"props":10137,"children":10138},{},[10139,10148],{"type":46,"tag":9660,"props":10140,"children":10141},{},[10142],{"type":46,"tag":9664,"props":10143,"children":10145},{"href":10144},".\u002Freferences\u002Fbest-practices\u002Fstructure.md",[10146],{"type":52,"value":10147},"best-practices\u002Fstructure.md",{"type":46,"tag":9660,"props":10149,"children":10150},{},[10151],{"type":52,"value":10152},"Repository structure, workspace config, TypeScript\u002FESLint setup",{"type":46,"tag":9638,"props":10154,"children":10155},{},[10156,10165],{"type":46,"tag":9660,"props":10157,"children":10158},{},[10159],{"type":46,"tag":9664,"props":10160,"children":10162},{"href":10161},".\u002Freferences\u002Fbest-practices\u002Fpackages.md",[10163],{"type":52,"value":10164},"best-practices\u002Fpackages.md",{"type":46,"tag":9660,"props":10166,"children":10167},{},[10168],{"type":52,"value":10169},"Creating internal packages, JIT vs Compiled, exports",{"type":46,"tag":9638,"props":10171,"children":10172},{},[10173,10182],{"type":46,"tag":9660,"props":10174,"children":10175},{},[10176],{"type":46,"tag":9664,"props":10177,"children":10179},{"href":10178},".\u002Freferences\u002Fbest-practices\u002Fdependencies.md",[10180],{"type":52,"value":10181},"best-practices\u002Fdependencies.md",{"type":46,"tag":9660,"props":10183,"children":10184},{},[10185],{"type":52,"value":10186},"Dependency management, installing, version sync",{"type":46,"tag":1422,"props":10188,"children":10190},{"id":10189},"watch-mode",[10191],{"type":52,"value":10192},"Watch Mode",{"type":46,"tag":9630,"props":10194,"children":10195},{},[10196,10210],{"type":46,"tag":9634,"props":10197,"children":10198},{},[10199],{"type":46,"tag":9638,"props":10200,"children":10201},{},[10202,10206],{"type":46,"tag":9642,"props":10203,"children":10204},{},[10205],{"type":52,"value":9646},{"type":46,"tag":9642,"props":10207,"children":10208},{},[10209],{"type":52,"value":9651},{"type":46,"tag":9653,"props":10211,"children":10212},{},[10213],{"type":46,"tag":9638,"props":10214,"children":10215},{},[10216,10225],{"type":46,"tag":9660,"props":10217,"children":10218},{},[10219],{"type":46,"tag":9664,"props":10220,"children":10222},{"href":10221},".\u002Freferences\u002Fwatch\u002FRULE.md",[10223],{"type":52,"value":10224},"watch\u002FRULE.md",{"type":46,"tag":9660,"props":10226,"children":10227},{},[10228],{"type":52,"value":10229},"turbo watch, interruptible tasks, dev workflows",{"type":46,"tag":1422,"props":10231,"children":10233},{"id":10232},"boundaries-experimental",[10234],{"type":52,"value":10235},"Boundaries (Experimental)",{"type":46,"tag":9630,"props":10237,"children":10238},{},[10239,10253],{"type":46,"tag":9634,"props":10240,"children":10241},{},[10242],{"type":46,"tag":9638,"props":10243,"children":10244},{},[10245,10249],{"type":46,"tag":9642,"props":10246,"children":10247},{},[10248],{"type":52,"value":9646},{"type":46,"tag":9642,"props":10250,"children":10251},{},[10252],{"type":52,"value":9651},{"type":46,"tag":9653,"props":10254,"children":10255},{},[10256],{"type":46,"tag":9638,"props":10257,"children":10258},{},[10259,10268],{"type":46,"tag":9660,"props":10260,"children":10261},{},[10262],{"type":46,"tag":9664,"props":10263,"children":10265},{"href":10264},".\u002Freferences\u002Fboundaries\u002FRULE.md",[10266],{"type":52,"value":10267},"boundaries\u002FRULE.md",{"type":46,"tag":9660,"props":10269,"children":10270},{},[10271],{"type":52,"value":10272},"Enforce package isolation, tag-based dependency rules",{"type":46,"tag":61,"props":10274,"children":10276},{"id":10275},"source-documentation",[10277],{"type":52,"value":10278},"Source Documentation",{"type":46,"tag":55,"props":10280,"children":10281},{},[10282],{"type":52,"value":10283},"This skill is based on the official Turborepo documentation at:",{"type":46,"tag":2661,"props":10285,"children":10286},{},[10287,10300],{"type":46,"tag":86,"props":10288,"children":10289},{},[10290,10292,10298],{"type":52,"value":10291},"Source: ",{"type":46,"tag":92,"props":10293,"children":10295},{"className":10294},[],[10296],{"type":52,"value":10297},"apps\u002Fdocs\u002Fcontent\u002Fdocs\u002F",{"type":52,"value":10299}," in the Turborepo repository",{"type":46,"tag":86,"props":10301,"children":10302},{},[10303,10305],{"type":52,"value":10304},"Live: ",{"type":46,"tag":9664,"props":10306,"children":10310},{"href":10307,"rel":10308},"https:\u002F\u002Fturborepo.dev\u002Fdocs",[10309],"nofollow",[10311],{"type":52,"value":10307},{"type":46,"tag":10313,"props":10314,"children":10315},"style",{},[10316],{"type":52,"value":10317},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":10319,"total":10438},[10320,10339,10353,10369,10384,10405,10422],{"slug":10321,"name":10321,"fn":10322,"description":10323,"org":10324,"tags":10325,"stars":24,"repoUrl":25,"updatedAt":10338},"algorithmic-art","create generative art with p5.js","Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10326,10329,10332,10335],{"name":10327,"slug":10328,"type":15},"Creative","creative",{"name":10330,"slug":10331,"type":15},"Generative Art","generative-art",{"name":10333,"slug":10334,"type":15},"Graphics","graphics",{"name":10336,"slug":10337,"type":15},"JavaScript","javascript","2026-07-13T06:41:35.540127",{"slug":10340,"name":10340,"fn":10341,"description":10342,"org":10343,"tags":10344,"stars":24,"repoUrl":25,"updatedAt":10352},"antfu","configure JavaScript projects with Anthony Fu's tools","Anthony Fu's opinionated tooling and conventions for JavaScript\u002FTypeScript projects. Use when setting up new projects, configuring ESLint\u002FPrettier alternatives, monorepos, library publishing, or when the user mentions Anthony Fu's preferences.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10345,10346,10349,10350],{"name":10098,"slug":10095,"type":15},{"name":10347,"slug":10348,"type":15},"Engineering","engineering",{"name":10336,"slug":10337,"type":15},{"name":10351,"slug":7573,"type":15},"TypeScript","2026-07-13T06:43:13.153309",{"slug":10354,"name":10354,"fn":10355,"description":10356,"org":10357,"tags":10358,"stars":24,"repoUrl":25,"updatedAt":10368},"brand-guidelines","apply Anthropic brand guidelines","Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10359,10362,10365],{"name":10360,"slug":10361,"type":15},"Branding","branding",{"name":10363,"slug":10364,"type":15},"Design","design",{"name":10366,"slug":10367,"type":15},"Typography","typography","2026-07-13T06:43:06.077629",{"slug":10370,"name":10370,"fn":10371,"description":10372,"org":10373,"tags":10374,"stars":24,"repoUrl":25,"updatedAt":10383},"canvas-design","create visual art and design assets","Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10375,10376,10377,10380],{"name":10327,"slug":10328,"type":15},{"name":10363,"slug":10364,"type":15},{"name":10378,"slug":10379,"type":15},"Images","images",{"name":10381,"slug":10382,"type":15},"PDF","pdf","2026-07-13T06:39:58.803113",{"slug":10385,"name":10385,"fn":10386,"description":10387,"org":10388,"tags":10389,"stars":24,"repoUrl":25,"updatedAt":10404},"ci-cd-containerization-advisor","design CI\u002FCD pipelines for Kotlin applications","Design reproducible build, image, and deployment pipelines for Kotlin plus Spring applications, including CI verification, layered containers, rollout safety, and deployment-time migration coordination. Use when creating or improving Dockerfiles, CI workflows, image hardening, Kubernetes manifests, release gates, or deployment strategies for Spring Boot services, especially where build reproducibility and operational safety matter.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10390,10391,10394,10397,10398,10401],{"name":22,"slug":23,"type":15},{"name":10392,"slug":10393,"type":15},"Containers","containers",{"name":10395,"slug":10396,"type":15},"Deployment","deployment",{"name":10347,"slug":10348,"type":15},{"name":10399,"slug":10400,"type":15},"Kotlin","kotlin",{"name":10402,"slug":10403,"type":15},"Spring","spring","2026-07-13T06:41:47.83899",{"slug":10406,"name":10406,"fn":10407,"description":10408,"org":10409,"tags":10410,"stars":24,"repoUrl":25,"updatedAt":10421},"cloudflare-deploy","deploy applications to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10411,10414,10417,10420],{"name":10412,"slug":10413,"type":15},"Cloudflare","cloudflare",{"name":10415,"slug":10416,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":10418,"slug":10419,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":10395,"slug":10396,"type":15},"2026-07-17T06:04:42.853896",{"slug":10423,"name":10423,"fn":10424,"description":10425,"org":10426,"tags":10427,"stars":24,"repoUrl":25,"updatedAt":10437},"compose-ui-control","interact with Compose Desktop applications","Control a running Compose Desktop application via HTTP. Use when you need to interact with UI elements, click buttons, enter text, wait for elements to appear, or capture screenshots in a Compose Desktop app that has compose-ui-test-server enabled.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10428,10431,10434],{"name":10429,"slug":10430,"type":15},"Automation","automation",{"name":10432,"slug":10433,"type":15},"Desktop","desktop",{"name":10435,"slug":10436,"type":15},"UI Components","ui-components","2026-07-13T06:40:38.798626",128,{"items":10440,"total":10563},[10441,10455,10464,10473,10484,10494,10503,10512,10521,10531,10540,10553],{"slug":10442,"name":10442,"fn":10443,"description":10444,"org":10445,"tags":10446,"stars":10452,"repoUrl":10453,"updatedAt":10454},"mps-aspect-accessories","configure JetBrains MPS module dependencies","Wire MPS module and model dependencies, used languages, used devkits, extended languages, runtime solutions, accessory models, and language\u002Fdependency versions. Use when adding\u002Fremoving module dependencies, importing languages or devkits into a model, declaring runtime solutions, or shipping accessory content visible to consumers without explicit import.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10447,10450,10451],{"name":10448,"slug":10449,"type":15},"Architecture","architecture",{"name":9628,"slug":9625,"type":15},{"name":10347,"slug":10348,"type":15},1650,"https:\u002F\u002Fgithub.com\u002FJetBrains\u002FMPS","2026-07-17T06:06:57.311661",{"slug":10456,"name":10456,"fn":10457,"description":10458,"org":10459,"tags":10460,"stars":10452,"repoUrl":10453,"updatedAt":10463},"mps-aspect-actions","define and edit MPS node factories","Use when defining or editing MPS node factories (the \"actions\" aspect) — `NodeFactories` roots, per-concept `NodeFactory` setup functions that initialize a freshly created node and optionally copy data from a replaced `sampleNode`, plus the actions aspect's `CopyPasteHandlers` and `PasteWrappers` roots. Reach for this skill when a substitution, side transform, completion replacement, or `add new initialized(...)` should preserve fields from the node it is replacing, or when defaults set in a constructor are not enough.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10461,10462],{"name":10448,"slug":10449,"type":15},{"name":10347,"slug":10348,"type":15},"2026-07-17T06:04:48.066901",{"slug":10465,"name":10465,"fn":10466,"description":10467,"org":10468,"tags":10469,"stars":10452,"repoUrl":10453,"updatedAt":10472},"mps-aspect-behavior","define and edit MPS concept behavior","Use when defining or editing MPS `ConceptBehavior` — per-concept methods (non-virtual \u002F virtual \u002F abstract \u002F static \u002F virtual static), constructors, virtual dispatch (MRO), super and interface-default calls (`super\u003CInterface>.method`), overriding methods from `lang.core.behavior` interfaces such as `ScopeProvider.getScope` \u002F `INamedConcept.getName` \u002F `BaseConcept.getPresentation`, calling sibling methods (`LocalBehaviorMethodCall`) and behavior methods from other aspects via `node.method(...)`. Reach for this skill whenever the task involves authoring or modifying `\u003Clang>\u002FlanguageModels\u002Fbehavior.mps`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10470,10471],{"name":10448,"slug":10449,"type":15},{"name":10347,"slug":10348,"type":15},"2026-07-13T06:45:21.757084",{"slug":10474,"name":10474,"fn":10475,"description":10476,"org":10477,"tags":10478,"stars":10452,"repoUrl":10453,"updatedAt":10483},"mps-aspect-constraints","define JetBrains MPS language constraints","Use when defining or editing MPS language constraints — property validators \u002F setters \u002F getters, referent search scopes (imperative or inherited via `ScopeProvider.getScope`), `referentSetHandler` side effects, default-scope blocks, `canBeChild` \u002F `canBeParent` \u002F `canBeAncestor` \u002F `canBeRoot` placement rules, `defaultConcreteConcept` for abstract concepts, `set \u003Cread-only>` and `{name}` aliasing, and scope helpers (`SimpleRoleScope`, `ListScope`, `CompositeScope`, `HidingByNameScope`). Reach for this skill whenever the task involves authoring or modifying `\u003Clang>\u002FlanguageModels\u002Fconstraints.mps`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10479,10480],{"name":10448,"slug":10449,"type":15},{"name":10481,"slug":10482,"type":15},"Code Analysis","code-analysis","2026-07-23T05:41:33.639365",{"slug":10485,"name":10485,"fn":10486,"description":10487,"org":10488,"tags":10489,"stars":10452,"repoUrl":10453,"updatedAt":10493},"mps-aspect-dataflow","define and debug MPS dataflow builders","Use when defining or debugging MPS dataflow builders for a concept — control\u002Fdata flow declarations that drive reachability analysis and variable-use checking. Covers DataFlowBuilderDeclaration, BuilderBlock, emit instructions (code for, jump, ifjump, label, read, write, ret, mayBeUnreachable), positions (AfterPosition, BeforePosition, LabelPosition), the jetbrains.mps.lang.dataFlow language, the NodeParameter implicit, BL+smodel usage inside builder bodies, and IBuilderMode for advanced analyses such as nullable\u002Fnon-null tracking.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10490],{"name":10491,"slug":10492,"type":15},"Data Analysis","data-analysis","2026-07-13T06:45:19.114674",{"slug":10495,"name":10495,"fn":10496,"description":10497,"org":10498,"tags":10499,"stars":10452,"repoUrl":10453,"updatedAt":10502},"mps-aspect-editor","define MPS editor layouts","Use when creating or changing MPS editor definitions — the overall workflow from scaffolding a `ConceptEditorDeclaration` through componentizing reusable `EditorComponentDeclaration`s, refining cell models and cell layouts, applying style sheets and indent-layout style items, wiring smart references, leveraging inheritance via super-concepts and interfaces, inspecting (`print_node_json`, `show_node_representation`) and validating (`check_root_node_problems`). Covers `jetbrains.mps.lang.editor` cell models (`CellModel_RefNode`\u002F`CellModel_RefNodeList`\u002F`CellModel_RefCell`\u002F`CellModel_Property`\u002F`CellModel_Constant`), layout choices, and JSON blueprints for common editor shapes. For the non-layout side (action maps, keymaps, transformation\u002Fsubstitute menus) use `mps-aspect-editor-menus-and-keymaps`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10500,10501],{"name":10363,"slug":10364,"type":15},{"name":10435,"slug":10436,"type":15},"2026-07-23T05:41:56.638151",{"slug":10504,"name":10504,"fn":10505,"description":10506,"org":10507,"tags":10508,"stars":10452,"repoUrl":10453,"updatedAt":10511},"mps-aspect-editor-menus-and-keymaps","author MPS editor menus and keymaps","Use when authoring the **non-layout** parts of the MPS editor aspect — what happens when the user types, presses a key, triggers completion, pastes, or invokes a context action. Covers action maps (`CellActionMapDeclaration`), cell keymaps (`CellKeyMapDeclaration`), transformation menus (`TransformationMenu_Default` \u002F `_Named` \u002F `_Contribution`), substitute menus (`SubstituteMenu_Default` \u002F `SubstituteMenu` \u002F contributions), side transforms (LEFT\u002FRIGHT), legacy cell menus, paste wrappers and copy-paste handlers (in the actions language), completion styling, reference presentation, two-step deletion, and the editor selection API. Trigger terms: `actionMap`, `keyMap`, `delete_action_id`, `transformationMenu`, `substituteMenu`, `Ctrl+Space`, `Ctrl+Alt+B`, side transform, paste wrapper, completion styling, `PasteWrappers`, `CopyPasteHandlers`. For the **layout** side (cells, layouts, style sheets) use `mps-aspect-editor` instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10509,10510],{"name":10347,"slug":10348,"type":15},{"name":10435,"slug":10436,"type":15},"2026-07-23T05:41:49.666535",{"slug":10513,"name":10513,"fn":10514,"description":10515,"org":10516,"tags":10517,"stars":10452,"repoUrl":10453,"updatedAt":10520},"mps-aspect-generation-plan","modify MPS generation plans","Use when defining or modifying an MPS generation plan — explicit ordering of generators, checkpoints for cross-model reference resolution, forks for parallel branches, IncludePlan composition, conditional PlanContribution activation, ParameterEquals\u002FConceptListSelector fork selectors, and InitModelAttributes for targetFacet routing. Apply when working with @genplan models, the jetbrains.mps.lang.generator.plan language, attaching plans via DevKits or the Custom generation facet, or debugging cross-model mapping label resolution.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10518,10519],{"name":10448,"slug":10449,"type":15},{"name":10347,"slug":10348,"type":15},"2026-07-13T06:44:59.507855",{"slug":10522,"name":10522,"fn":10523,"description":10524,"org":10525,"tags":10526,"stars":10452,"repoUrl":10453,"updatedAt":10530},"mps-aspect-generator","define JetBrains MPS generator rules","Use when defining or modifying MPS generators — author a generator module, add or edit root\u002Freduction\u002Fweaving\u002Fpattern mapping rules, attach template macros ($COPY_SRC, $LOOP, $IF, $PROPERTY, $REF, $SWITCH, $MAP_SRC, $WEAVE, $INSERT, $LABEL, $TRACE, $VAR), wire mapping labels, build template switches, write pre\u002Fpost mapping scripts, navigate `genContext`, or debug \"rule didn't fire\", missing references, empty output, infinite reduction loops, and generated-Java compile failures.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10527,10528,10529],{"name":10448,"slug":10449,"type":15},{"name":10481,"slug":10482,"type":15},{"name":10347,"slug":10348,"type":15},"2026-07-17T06:06:58.042999",{"slug":10532,"name":10532,"fn":10533,"description":10534,"org":10535,"tags":10536,"stars":10452,"repoUrl":10453,"updatedAt":10539},"mps-aspect-intentions","define and edit MPS intentions","Use when defining or editing MPS intentions (the Alt+Enter context-action aspect) — adding `IntentionDeclaration` roots, parameterized or surround-with variants, description\u002FisApplicable\u002Fexecute blocks, child-filter functions, factory-initialized AST splicing, or debugging why an intention is not offered. Lives in the language's `intentions` model and uses `jetbrains.mps.lang.intentions`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10537,10538],{"name":10448,"slug":10449,"type":15},{"name":10347,"slug":10348,"type":15},"2026-07-23T05:41:48.692899",{"slug":10541,"name":10541,"fn":10542,"description":10543,"org":10544,"tags":10545,"stars":10452,"repoUrl":10453,"updatedAt":10552},"mps-aspect-migrations","author and debug MPS migration scripts","Use when authoring or debugging MPS migration scripts that upgrade user models after a language definition changes — covers jetbrains.mps.lang.migration (MigrationScript class-based, PureMigrationScript declarative, MoveConcept\u002FMoveContainmentLink\u002FMoveReferenceLink\u002FMoveProperty, ordering via OrderDependency, data exchange via putData\u002FgetData, RefactoringLog, ConceptMigrationReference) and jetbrains.mps.lang.script Enhancement Scripts (MigrationScript with MigrationScriptPart_Instance, ExtractInterfaceMigration, FactoryMigrationScriptPart, CommentMigrationScriptPart) — when a model needs version-gated upgrade, concept rename or removal, link or property rename, instance-level transformation, or composition of migration steps.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10546,10549],{"name":10547,"slug":10548,"type":15},"Debugging","debugging",{"name":10550,"slug":10551,"type":15},"Migration","migration","2026-07-13T06:45:20.372122",{"slug":10554,"name":10554,"fn":10555,"description":10556,"org":10557,"tags":10558,"stars":10452,"repoUrl":10453,"updatedAt":10562},"mps-aspect-structure-concepts","define concepts in MPS structure aspect","Define concepts, interface concepts, enumerations, and constrained data types in an MPS language's `structure` aspect. Covers smart-reference detection, alias rules, cardinality, INamedConcept usage, bulk creation, and the full `mps_mcp_alter_structure` \u002F `mps_mcp_query_structure` reference. Use when authoring or modifying a language's structure model.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[10559],{"name":10560,"slug":10561,"type":15},"Data Modeling","data-modeling","2026-07-23T05:41:30.705975",188]