[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-vercel-turborepo":3,"mdc--9y4yzu-key":37,"related-repo-vercel-turborepo":11106,"related-org-vercel-turborepo":11114},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":21,"repoUrl":22,"updatedAt":23,"license":24,"forks":25,"topics":26,"repo":32,"sourceUrl":35,"mdContent":36},"turborepo","manage monorepos with Turborepo","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":8},"vercel","Vercel","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fvercel.png",[12,16,18],{"name":13,"slug":14,"type":15},"Performance","performance","tag",{"name":17,"slug":4,"type":15},"Turborepo",{"name":19,"slug":20,"type":15},"CI\u002FCD","ci-cd",30809,"https:\u002F\u002Fgithub.com\u002Fvercel\u002Fturborepo","2026-07-30T05:32:14.920116",null,2401,[27,28,29,30,31],"build-system","build-tool","javascript","monorepo","typescript",{"repoUrl":22,"stars":21,"forks":25,"topics":33,"description":34},[27,28,29,30,31],"Build system optimized for JavaScript and TypeScript, written in Rust","https:\u002F\u002Fgithub.com\u002Fvercel\u002Fturborepo\u002Ftree\u002FHEAD\u002Fskills\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  version: 2.10.8-canary.4\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**Prefer package tasks over Root Tasks.**\n\nWhen creating tasks\u002Fscripts\u002Fpipelines, you MUST default to package tasks:\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` when it can live in packages. 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, such as Vitest Projects' `\u002F\u002F#test`, repo-wide release scripts, or tooling that does not invoke `turbo` itself.\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 via the **global hash** — tasks cannot opt out of specific files, even with negation globs in `inputs`. 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\nWith `futureFlags.globalConfiguration`, this problem is reduced because `global.inputs` files are folded into each task's inputs (not the global hash). Tasks can exclude specific files:\n\n```json\n\u002F\u002F BEST - global.inputs with per-task exclusion\n{\n  \"futureFlags\": { \"globalConfiguration\": true },\n  \"global\": {\n    \"inputs\": [\".env\"]\n  },\n  \"tasks\": {\n    \"build\": { \"outputs\": [\"dist\u002F**\"] },\n    \"lint\": {\n      \"inputs\": [\"$TURBO_DEFAULT$\", \"!$TURBO_ROOT$\u002F.env\"]\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**\", \"!.next\u002Fdev\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-10-8-canary-4.turborepo.dev\u002Fschema.json\",\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist\u002F**\", \".next\u002F**\", \"!.next\u002Fcache\u002F**\", \"!.next\u002Fdev\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\nWith `futureFlags.globalConfiguration`, the same config moves global settings under `global` — and `.env` becomes a per-task input instead of a global hash input:\n\n```json\n{\n  \"futureFlags\": { \"globalConfiguration\": true },\n  \"global\": {\n    \"env\": [\"NODE_ENV\"],\n    \"inputs\": [\".env\"]\n  },\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, global key, futureFlags, cacheDir, 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":38,"body":41},{"name":4,"description":6,"metadata":39},{"version":40},"2.10.8-canary.4",{"type":42,"children":43},"root",[44,53,59,66,75,80,126,143,615,876,1041,1211,1240,1259,1274,1364,1404,1430,1436,1443,1453,1459,1468,1474,1483,1499,1505,1514,1520,1529,1535,1544,1550,1559,1565,1574,1580,1589,1595,1604,1610,1623,1646,1905,1974,1980,1998,2250,2263,2275,2457,2469,2481,2607,2615,2701,3036,3053,3065,3090,3385,3406,3734,3740,3745,4567,4575,4613,4626,4645,4658,4677,4754,4760,4794,5646,5654,5685,5700,5721,5734,5752,5772,6062,6075,6090,6123,6418,6423,6466,6482,6511,6646,6651,6707,6724,7008,7014,7326,7337,7349,7677,7689,7701,7710,7724,7752,7769,7775,7794,7914,7927,7933,7942,7948,8064,8070,8291,8297,8303,8626,8639,8660,8700,9036,9044,9117,9142,9167,9442,9448,9453,9468,9476,9491,9504,9512,9691,9702,9712,9718,10011,10036,10405,10411,10417,10514,10520,10591,10597,10668,10674,10728,10733,10821,10827,10881,10887,10975,10981,11018,11024,11061,11067,11072,11100],{"type":45,"tag":46,"props":47,"children":49},"element","h1",{"id":48},"turborepo-skill",[50],{"type":51,"value":52},"text","Turborepo Skill",{"type":45,"tag":54,"props":55,"children":56},"p",{},[57],{"type":51,"value":58},"Build system for JavaScript\u002FTypeScript monorepos. Turborepo caches task outputs and runs tasks in parallel based on dependency graph.",{"type":45,"tag":60,"props":61,"children":63},"h2",{"id":62},"important-package-tasks-not-root-tasks",[64],{"type":51,"value":65},"IMPORTANT: Package Tasks, Not Root Tasks",{"type":45,"tag":54,"props":67,"children":68},{},[69],{"type":45,"tag":70,"props":71,"children":72},"strong",{},[73],{"type":51,"value":74},"Prefer package tasks over Root Tasks.",{"type":45,"tag":54,"props":76,"children":77},{},[78],{"type":51,"value":79},"When creating tasks\u002Fscripts\u002Fpipelines, you MUST default to package tasks:",{"type":45,"tag":81,"props":82,"children":83},"ol",{},[84,97,108],{"type":45,"tag":85,"props":86,"children":87},"li",{},[88,90],{"type":51,"value":89},"Add the script to each relevant package's ",{"type":45,"tag":91,"props":92,"children":94},"code",{"className":93},[],[95],{"type":51,"value":96},"package.json",{"type":45,"tag":85,"props":98,"children":99},{},[100,102],{"type":51,"value":101},"Register the task in root ",{"type":45,"tag":91,"props":103,"children":105},{"className":104},[],[106],{"type":51,"value":107},"turbo.json",{"type":45,"tag":85,"props":109,"children":110},{},[111,113,118,120],{"type":51,"value":112},"Root ",{"type":45,"tag":91,"props":114,"children":116},{"className":115},[],[117],{"type":51,"value":96},{"type":51,"value":119}," only delegates via ",{"type":45,"tag":91,"props":121,"children":123},{"className":122},[],[124],{"type":51,"value":125},"turbo run \u003Ctask>",{"type":45,"tag":54,"props":127,"children":128},{},[129,134,136,141],{"type":45,"tag":70,"props":130,"children":131},{},[132],{"type":51,"value":133},"DO NOT",{"type":51,"value":135}," put task logic in root ",{"type":45,"tag":91,"props":137,"children":139},{"className":138},[],[140],{"type":51,"value":96},{"type":51,"value":142}," when it can live in packages. This defeats Turborepo's parallelization.",{"type":45,"tag":144,"props":145,"children":150},"pre",{"className":146,"code":147,"language":148,"meta":149,"style":149},"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","",[151],{"type":45,"tag":91,"props":152,"children":153},{"__ignoreMap":149},[154,166,175,322,332,341,470,478,487],{"type":45,"tag":155,"props":156,"children":159},"span",{"class":157,"line":158},"line",1,[160],{"type":45,"tag":155,"props":161,"children":163},{"style":162},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[164],{"type":51,"value":165},"\u002F\u002F DO THIS: Scripts in each package\n",{"type":45,"tag":155,"props":167,"children":169},{"class":157,"line":168},2,[170],{"type":45,"tag":155,"props":171,"children":172},{"style":162},[173],{"type":51,"value":174},"\u002F\u002F apps\u002Fweb\u002Fpackage.json\n",{"type":45,"tag":155,"props":176,"children":178},{"class":157,"line":177},3,[179,185,190,196,201,206,211,215,221,225,229,233,239,243,248,252,257,261,265,269,274,278,282,286,291,295,299,303,308,312,317],{"type":45,"tag":155,"props":180,"children":182},{"style":181},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[183],{"type":51,"value":184},"{",{"type":45,"tag":155,"props":186,"children":187},{"style":181},[188],{"type":51,"value":189}," \"",{"type":45,"tag":155,"props":191,"children":193},{"style":192},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[194],{"type":51,"value":195},"scripts",{"type":45,"tag":155,"props":197,"children":198},{"style":181},[199],{"type":51,"value":200},"\"",{"type":45,"tag":155,"props":202,"children":203},{"style":181},[204],{"type":51,"value":205},":",{"type":45,"tag":155,"props":207,"children":208},{"style":181},[209],{"type":51,"value":210}," {",{"type":45,"tag":155,"props":212,"children":213},{"style":181},[214],{"type":51,"value":189},{"type":45,"tag":155,"props":216,"children":218},{"style":217},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[219],{"type":51,"value":220},"build",{"type":45,"tag":155,"props":222,"children":223},{"style":181},[224],{"type":51,"value":200},{"type":45,"tag":155,"props":226,"children":227},{"style":181},[228],{"type":51,"value":205},{"type":45,"tag":155,"props":230,"children":231},{"style":181},[232],{"type":51,"value":189},{"type":45,"tag":155,"props":234,"children":236},{"style":235},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[237],{"type":51,"value":238},"next build",{"type":45,"tag":155,"props":240,"children":241},{"style":181},[242],{"type":51,"value":200},{"type":45,"tag":155,"props":244,"children":245},{"style":181},[246],{"type":51,"value":247},",",{"type":45,"tag":155,"props":249,"children":250},{"style":181},[251],{"type":51,"value":189},{"type":45,"tag":155,"props":253,"children":254},{"style":217},[255],{"type":51,"value":256},"lint",{"type":45,"tag":155,"props":258,"children":259},{"style":181},[260],{"type":51,"value":200},{"type":45,"tag":155,"props":262,"children":263},{"style":181},[264],{"type":51,"value":205},{"type":45,"tag":155,"props":266,"children":267},{"style":181},[268],{"type":51,"value":189},{"type":45,"tag":155,"props":270,"children":271},{"style":235},[272],{"type":51,"value":273},"eslint .",{"type":45,"tag":155,"props":275,"children":276},{"style":181},[277],{"type":51,"value":200},{"type":45,"tag":155,"props":279,"children":280},{"style":181},[281],{"type":51,"value":247},{"type":45,"tag":155,"props":283,"children":284},{"style":181},[285],{"type":51,"value":189},{"type":45,"tag":155,"props":287,"children":288},{"style":217},[289],{"type":51,"value":290},"test",{"type":45,"tag":155,"props":292,"children":293},{"style":181},[294],{"type":51,"value":200},{"type":45,"tag":155,"props":296,"children":297},{"style":181},[298],{"type":51,"value":205},{"type":45,"tag":155,"props":300,"children":301},{"style":181},[302],{"type":51,"value":189},{"type":45,"tag":155,"props":304,"children":305},{"style":235},[306],{"type":51,"value":307},"vitest",{"type":45,"tag":155,"props":309,"children":310},{"style":181},[311],{"type":51,"value":200},{"type":45,"tag":155,"props":313,"children":314},{"style":181},[315],{"type":51,"value":316}," }",{"type":45,"tag":155,"props":318,"children":319},{"style":181},[320],{"type":51,"value":321}," }\n",{"type":45,"tag":155,"props":323,"children":325},{"class":157,"line":324},4,[326],{"type":45,"tag":155,"props":327,"children":329},{"emptyLinePlaceholder":328},true,[330],{"type":51,"value":331},"\n",{"type":45,"tag":155,"props":333,"children":335},{"class":157,"line":334},5,[336],{"type":45,"tag":155,"props":337,"children":338},{"style":162},[339],{"type":51,"value":340},"\u002F\u002F apps\u002Fapi\u002Fpackage.json\n",{"type":45,"tag":155,"props":342,"children":344},{"class":157,"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":45,"tag":155,"props":346,"children":347},{"style":181},[348],{"type":51,"value":184},{"type":45,"tag":155,"props":350,"children":351},{"style":181},[352],{"type":51,"value":189},{"type":45,"tag":155,"props":354,"children":355},{"style":192},[356],{"type":51,"value":195},{"type":45,"tag":155,"props":358,"children":359},{"style":181},[360],{"type":51,"value":200},{"type":45,"tag":155,"props":362,"children":363},{"style":181},[364],{"type":51,"value":205},{"type":45,"tag":155,"props":366,"children":367},{"style":181},[368],{"type":51,"value":210},{"type":45,"tag":155,"props":370,"children":371},{"style":181},[372],{"type":51,"value":189},{"type":45,"tag":155,"props":374,"children":375},{"style":217},[376],{"type":51,"value":220},{"type":45,"tag":155,"props":378,"children":379},{"style":181},[380],{"type":51,"value":200},{"type":45,"tag":155,"props":382,"children":383},{"style":181},[384],{"type":51,"value":205},{"type":45,"tag":155,"props":386,"children":387},{"style":181},[388],{"type":51,"value":189},{"type":45,"tag":155,"props":390,"children":391},{"style":235},[392],{"type":51,"value":393},"tsc",{"type":45,"tag":155,"props":395,"children":396},{"style":181},[397],{"type":51,"value":200},{"type":45,"tag":155,"props":399,"children":400},{"style":181},[401],{"type":51,"value":247},{"type":45,"tag":155,"props":403,"children":404},{"style":181},[405],{"type":51,"value":189},{"type":45,"tag":155,"props":407,"children":408},{"style":217},[409],{"type":51,"value":256},{"type":45,"tag":155,"props":411,"children":412},{"style":181},[413],{"type":51,"value":200},{"type":45,"tag":155,"props":415,"children":416},{"style":181},[417],{"type":51,"value":205},{"type":45,"tag":155,"props":419,"children":420},{"style":181},[421],{"type":51,"value":189},{"type":45,"tag":155,"props":423,"children":424},{"style":235},[425],{"type":51,"value":273},{"type":45,"tag":155,"props":427,"children":428},{"style":181},[429],{"type":51,"value":200},{"type":45,"tag":155,"props":431,"children":432},{"style":181},[433],{"type":51,"value":247},{"type":45,"tag":155,"props":435,"children":436},{"style":181},[437],{"type":51,"value":189},{"type":45,"tag":155,"props":439,"children":440},{"style":217},[441],{"type":51,"value":290},{"type":45,"tag":155,"props":443,"children":444},{"style":181},[445],{"type":51,"value":200},{"type":45,"tag":155,"props":447,"children":448},{"style":181},[449],{"type":51,"value":205},{"type":45,"tag":155,"props":451,"children":452},{"style":181},[453],{"type":51,"value":189},{"type":45,"tag":155,"props":455,"children":456},{"style":235},[457],{"type":51,"value":307},{"type":45,"tag":155,"props":459,"children":460},{"style":181},[461],{"type":51,"value":200},{"type":45,"tag":155,"props":463,"children":464},{"style":181},[465],{"type":51,"value":316},{"type":45,"tag":155,"props":467,"children":468},{"style":181},[469],{"type":51,"value":321},{"type":45,"tag":155,"props":471,"children":473},{"class":157,"line":472},7,[474],{"type":45,"tag":155,"props":475,"children":476},{"emptyLinePlaceholder":328},[477],{"type":51,"value":331},{"type":45,"tag":155,"props":479,"children":481},{"class":157,"line":480},8,[482],{"type":45,"tag":155,"props":483,"children":484},{"style":162},[485],{"type":51,"value":486},"\u002F\u002F packages\u002Fui\u002Fpackage.json\n",{"type":45,"tag":155,"props":488,"children":490},{"class":157,"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":45,"tag":155,"props":492,"children":493},{"style":181},[494],{"type":51,"value":184},{"type":45,"tag":155,"props":496,"children":497},{"style":181},[498],{"type":51,"value":189},{"type":45,"tag":155,"props":500,"children":501},{"style":192},[502],{"type":51,"value":195},{"type":45,"tag":155,"props":504,"children":505},{"style":181},[506],{"type":51,"value":200},{"type":45,"tag":155,"props":508,"children":509},{"style":181},[510],{"type":51,"value":205},{"type":45,"tag":155,"props":512,"children":513},{"style":181},[514],{"type":51,"value":210},{"type":45,"tag":155,"props":516,"children":517},{"style":181},[518],{"type":51,"value":189},{"type":45,"tag":155,"props":520,"children":521},{"style":217},[522],{"type":51,"value":220},{"type":45,"tag":155,"props":524,"children":525},{"style":181},[526],{"type":51,"value":200},{"type":45,"tag":155,"props":528,"children":529},{"style":181},[530],{"type":51,"value":205},{"type":45,"tag":155,"props":532,"children":533},{"style":181},[534],{"type":51,"value":189},{"type":45,"tag":155,"props":536,"children":537},{"style":235},[538],{"type":51,"value":393},{"type":45,"tag":155,"props":540,"children":541},{"style":181},[542],{"type":51,"value":200},{"type":45,"tag":155,"props":544,"children":545},{"style":181},[546],{"type":51,"value":247},{"type":45,"tag":155,"props":548,"children":549},{"style":181},[550],{"type":51,"value":189},{"type":45,"tag":155,"props":552,"children":553},{"style":217},[554],{"type":51,"value":256},{"type":45,"tag":155,"props":556,"children":557},{"style":181},[558],{"type":51,"value":200},{"type":45,"tag":155,"props":560,"children":561},{"style":181},[562],{"type":51,"value":205},{"type":45,"tag":155,"props":564,"children":565},{"style":181},[566],{"type":51,"value":189},{"type":45,"tag":155,"props":568,"children":569},{"style":235},[570],{"type":51,"value":273},{"type":45,"tag":155,"props":572,"children":573},{"style":181},[574],{"type":51,"value":200},{"type":45,"tag":155,"props":576,"children":577},{"style":181},[578],{"type":51,"value":247},{"type":45,"tag":155,"props":580,"children":581},{"style":181},[582],{"type":51,"value":189},{"type":45,"tag":155,"props":584,"children":585},{"style":217},[586],{"type":51,"value":290},{"type":45,"tag":155,"props":588,"children":589},{"style":181},[590],{"type":51,"value":200},{"type":45,"tag":155,"props":592,"children":593},{"style":181},[594],{"type":51,"value":205},{"type":45,"tag":155,"props":596,"children":597},{"style":181},[598],{"type":51,"value":189},{"type":45,"tag":155,"props":600,"children":601},{"style":235},[602],{"type":51,"value":307},{"type":45,"tag":155,"props":604,"children":605},{"style":181},[606],{"type":51,"value":200},{"type":45,"tag":155,"props":608,"children":609},{"style":181},[610],{"type":51,"value":316},{"type":45,"tag":155,"props":612,"children":613},{"style":181},[614],{"type":51,"value":321},{"type":45,"tag":144,"props":616,"children":618},{"className":146,"code":617,"language":148,"meta":149,"style":149},"\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":45,"tag":91,"props":620,"children":621},{"__ignoreMap":149},[622,630,638,664,773,797,860,868],{"type":45,"tag":155,"props":623,"children":624},{"class":157,"line":158},[625],{"type":45,"tag":155,"props":626,"children":627},{"style":162},[628],{"type":51,"value":629},"\u002F\u002F turbo.json - register tasks\n",{"type":45,"tag":155,"props":631,"children":632},{"class":157,"line":168},[633],{"type":45,"tag":155,"props":634,"children":635},{"style":181},[636],{"type":51,"value":637},"{\n",{"type":45,"tag":155,"props":639,"children":640},{"class":157,"line":177},[641,646,651,655,659],{"type":45,"tag":155,"props":642,"children":643},{"style":181},[644],{"type":51,"value":645},"  \"",{"type":45,"tag":155,"props":647,"children":648},{"style":192},[649],{"type":51,"value":650},"tasks",{"type":45,"tag":155,"props":652,"children":653},{"style":181},[654],{"type":51,"value":200},{"type":45,"tag":155,"props":656,"children":657},{"style":181},[658],{"type":51,"value":205},{"type":45,"tag":155,"props":660,"children":661},{"style":181},[662],{"type":51,"value":663}," {\n",{"type":45,"tag":155,"props":665,"children":666},{"class":157,"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":45,"tag":155,"props":668,"children":669},{"style":181},[670],{"type":51,"value":671},"    \"",{"type":45,"tag":155,"props":673,"children":674},{"style":217},[675],{"type":51,"value":220},{"type":45,"tag":155,"props":677,"children":678},{"style":181},[679],{"type":51,"value":200},{"type":45,"tag":155,"props":681,"children":682},{"style":181},[683],{"type":51,"value":205},{"type":45,"tag":155,"props":685,"children":686},{"style":181},[687],{"type":51,"value":210},{"type":45,"tag":155,"props":689,"children":690},{"style":181},[691],{"type":51,"value":189},{"type":45,"tag":155,"props":693,"children":695},{"style":694},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[696],{"type":51,"value":697},"dependsOn",{"type":45,"tag":155,"props":699,"children":700},{"style":181},[701],{"type":51,"value":200},{"type":45,"tag":155,"props":703,"children":704},{"style":181},[705],{"type":51,"value":205},{"type":45,"tag":155,"props":707,"children":708},{"style":181},[709],{"type":51,"value":710}," [",{"type":45,"tag":155,"props":712,"children":713},{"style":181},[714],{"type":51,"value":200},{"type":45,"tag":155,"props":716,"children":717},{"style":235},[718],{"type":51,"value":719},"^build",{"type":45,"tag":155,"props":721,"children":722},{"style":181},[723],{"type":51,"value":200},{"type":45,"tag":155,"props":725,"children":726},{"style":181},[727],{"type":51,"value":728},"],",{"type":45,"tag":155,"props":730,"children":731},{"style":181},[732],{"type":51,"value":189},{"type":45,"tag":155,"props":734,"children":735},{"style":694},[736],{"type":51,"value":737},"outputs",{"type":45,"tag":155,"props":739,"children":740},{"style":181},[741],{"type":51,"value":200},{"type":45,"tag":155,"props":743,"children":744},{"style":181},[745],{"type":51,"value":205},{"type":45,"tag":155,"props":747,"children":748},{"style":181},[749],{"type":51,"value":710},{"type":45,"tag":155,"props":751,"children":752},{"style":181},[753],{"type":51,"value":200},{"type":45,"tag":155,"props":755,"children":756},{"style":235},[757],{"type":51,"value":758},"dist\u002F**",{"type":45,"tag":155,"props":760,"children":761},{"style":181},[762],{"type":51,"value":200},{"type":45,"tag":155,"props":764,"children":765},{"style":181},[766],{"type":51,"value":767},"]",{"type":45,"tag":155,"props":769,"children":770},{"style":181},[771],{"type":51,"value":772}," },\n",{"type":45,"tag":155,"props":774,"children":775},{"class":157,"line":334},[776,780,784,788,792],{"type":45,"tag":155,"props":777,"children":778},{"style":181},[779],{"type":51,"value":671},{"type":45,"tag":155,"props":781,"children":782},{"style":217},[783],{"type":51,"value":256},{"type":45,"tag":155,"props":785,"children":786},{"style":181},[787],{"type":51,"value":200},{"type":45,"tag":155,"props":789,"children":790},{"style":181},[791],{"type":51,"value":205},{"type":45,"tag":155,"props":793,"children":794},{"style":181},[795],{"type":51,"value":796}," {},\n",{"type":45,"tag":155,"props":798,"children":799},{"class":157,"line":343},[800,804,808,812,816,820,824,828,832,836,840,844,848,852,856],{"type":45,"tag":155,"props":801,"children":802},{"style":181},[803],{"type":51,"value":671},{"type":45,"tag":155,"props":805,"children":806},{"style":217},[807],{"type":51,"value":290},{"type":45,"tag":155,"props":809,"children":810},{"style":181},[811],{"type":51,"value":200},{"type":45,"tag":155,"props":813,"children":814},{"style":181},[815],{"type":51,"value":205},{"type":45,"tag":155,"props":817,"children":818},{"style":181},[819],{"type":51,"value":210},{"type":45,"tag":155,"props":821,"children":822},{"style":181},[823],{"type":51,"value":189},{"type":45,"tag":155,"props":825,"children":826},{"style":694},[827],{"type":51,"value":697},{"type":45,"tag":155,"props":829,"children":830},{"style":181},[831],{"type":51,"value":200},{"type":45,"tag":155,"props":833,"children":834},{"style":181},[835],{"type":51,"value":205},{"type":45,"tag":155,"props":837,"children":838},{"style":181},[839],{"type":51,"value":710},{"type":45,"tag":155,"props":841,"children":842},{"style":181},[843],{"type":51,"value":200},{"type":45,"tag":155,"props":845,"children":846},{"style":235},[847],{"type":51,"value":220},{"type":45,"tag":155,"props":849,"children":850},{"style":181},[851],{"type":51,"value":200},{"type":45,"tag":155,"props":853,"children":854},{"style":181},[855],{"type":51,"value":767},{"type":45,"tag":155,"props":857,"children":858},{"style":181},[859],{"type":51,"value":321},{"type":45,"tag":155,"props":861,"children":862},{"class":157,"line":472},[863],{"type":45,"tag":155,"props":864,"children":865},{"style":181},[866],{"type":51,"value":867},"  }\n",{"type":45,"tag":155,"props":869,"children":870},{"class":157,"line":480},[871],{"type":45,"tag":155,"props":872,"children":873},{"style":181},[874],{"type":51,"value":875},"}\n",{"type":45,"tag":144,"props":877,"children":879},{"className":146,"code":878,"language":148,"meta":149,"style":149},"\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":45,"tag":91,"props":881,"children":882},{"__ignoreMap":149},[883,891,898,921,958,994,1027,1034],{"type":45,"tag":155,"props":884,"children":885},{"class":157,"line":158},[886],{"type":45,"tag":155,"props":887,"children":888},{"style":162},[889],{"type":51,"value":890},"\u002F\u002F Root package.json - ONLY delegates, no task logic\n",{"type":45,"tag":155,"props":892,"children":893},{"class":157,"line":168},[894],{"type":45,"tag":155,"props":895,"children":896},{"style":181},[897],{"type":51,"value":637},{"type":45,"tag":155,"props":899,"children":900},{"class":157,"line":177},[901,905,909,913,917],{"type":45,"tag":155,"props":902,"children":903},{"style":181},[904],{"type":51,"value":645},{"type":45,"tag":155,"props":906,"children":907},{"style":192},[908],{"type":51,"value":195},{"type":45,"tag":155,"props":910,"children":911},{"style":181},[912],{"type":51,"value":200},{"type":45,"tag":155,"props":914,"children":915},{"style":181},[916],{"type":51,"value":205},{"type":45,"tag":155,"props":918,"children":919},{"style":181},[920],{"type":51,"value":663},{"type":45,"tag":155,"props":922,"children":923},{"class":157,"line":324},[924,928,932,936,940,944,949,953],{"type":45,"tag":155,"props":925,"children":926},{"style":181},[927],{"type":51,"value":671},{"type":45,"tag":155,"props":929,"children":930},{"style":217},[931],{"type":51,"value":220},{"type":45,"tag":155,"props":933,"children":934},{"style":181},[935],{"type":51,"value":200},{"type":45,"tag":155,"props":937,"children":938},{"style":181},[939],{"type":51,"value":205},{"type":45,"tag":155,"props":941,"children":942},{"style":181},[943],{"type":51,"value":189},{"type":45,"tag":155,"props":945,"children":946},{"style":235},[947],{"type":51,"value":948},"turbo run build",{"type":45,"tag":155,"props":950,"children":951},{"style":181},[952],{"type":51,"value":200},{"type":45,"tag":155,"props":954,"children":955},{"style":181},[956],{"type":51,"value":957},",\n",{"type":45,"tag":155,"props":959,"children":960},{"class":157,"line":334},[961,965,969,973,977,981,986,990],{"type":45,"tag":155,"props":962,"children":963},{"style":181},[964],{"type":51,"value":671},{"type":45,"tag":155,"props":966,"children":967},{"style":217},[968],{"type":51,"value":256},{"type":45,"tag":155,"props":970,"children":971},{"style":181},[972],{"type":51,"value":200},{"type":45,"tag":155,"props":974,"children":975},{"style":181},[976],{"type":51,"value":205},{"type":45,"tag":155,"props":978,"children":979},{"style":181},[980],{"type":51,"value":189},{"type":45,"tag":155,"props":982,"children":983},{"style":235},[984],{"type":51,"value":985},"turbo run lint",{"type":45,"tag":155,"props":987,"children":988},{"style":181},[989],{"type":51,"value":200},{"type":45,"tag":155,"props":991,"children":992},{"style":181},[993],{"type":51,"value":957},{"type":45,"tag":155,"props":995,"children":996},{"class":157,"line":343},[997,1001,1005,1009,1013,1017,1022],{"type":45,"tag":155,"props":998,"children":999},{"style":181},[1000],{"type":51,"value":671},{"type":45,"tag":155,"props":1002,"children":1003},{"style":217},[1004],{"type":51,"value":290},{"type":45,"tag":155,"props":1006,"children":1007},{"style":181},[1008],{"type":51,"value":200},{"type":45,"tag":155,"props":1010,"children":1011},{"style":181},[1012],{"type":51,"value":205},{"type":45,"tag":155,"props":1014,"children":1015},{"style":181},[1016],{"type":51,"value":189},{"type":45,"tag":155,"props":1018,"children":1019},{"style":235},[1020],{"type":51,"value":1021},"turbo run test",{"type":45,"tag":155,"props":1023,"children":1024},{"style":181},[1025],{"type":51,"value":1026},"\"\n",{"type":45,"tag":155,"props":1028,"children":1029},{"class":157,"line":472},[1030],{"type":45,"tag":155,"props":1031,"children":1032},{"style":181},[1033],{"type":51,"value":867},{"type":45,"tag":155,"props":1035,"children":1036},{"class":157,"line":480},[1037],{"type":45,"tag":155,"props":1038,"children":1039},{"style":181},[1040],{"type":51,"value":875},{"type":45,"tag":144,"props":1042,"children":1044},{"className":146,"code":1043,"language":148,"meta":149,"style":149},"\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":45,"tag":91,"props":1046,"children":1047},{"__ignoreMap":149},[1048,1056,1064,1071,1094,1130,1166,1197,1204],{"type":45,"tag":155,"props":1049,"children":1050},{"class":157,"line":158},[1051],{"type":45,"tag":155,"props":1052,"children":1053},{"style":162},[1054],{"type":51,"value":1055},"\u002F\u002F DO NOT DO THIS - defeats parallelization\n",{"type":45,"tag":155,"props":1057,"children":1058},{"class":157,"line":168},[1059],{"type":45,"tag":155,"props":1060,"children":1061},{"style":162},[1062],{"type":51,"value":1063},"\u002F\u002F Root package.json\n",{"type":45,"tag":155,"props":1065,"children":1066},{"class":157,"line":177},[1067],{"type":45,"tag":155,"props":1068,"children":1069},{"style":181},[1070],{"type":51,"value":637},{"type":45,"tag":155,"props":1072,"children":1073},{"class":157,"line":324},[1074,1078,1082,1086,1090],{"type":45,"tag":155,"props":1075,"children":1076},{"style":181},[1077],{"type":51,"value":645},{"type":45,"tag":155,"props":1079,"children":1080},{"style":192},[1081],{"type":51,"value":195},{"type":45,"tag":155,"props":1083,"children":1084},{"style":181},[1085],{"type":51,"value":200},{"type":45,"tag":155,"props":1087,"children":1088},{"style":181},[1089],{"type":51,"value":205},{"type":45,"tag":155,"props":1091,"children":1092},{"style":181},[1093],{"type":51,"value":663},{"type":45,"tag":155,"props":1095,"children":1096},{"class":157,"line":334},[1097,1101,1105,1109,1113,1117,1122,1126],{"type":45,"tag":155,"props":1098,"children":1099},{"style":181},[1100],{"type":51,"value":671},{"type":45,"tag":155,"props":1102,"children":1103},{"style":217},[1104],{"type":51,"value":220},{"type":45,"tag":155,"props":1106,"children":1107},{"style":181},[1108],{"type":51,"value":200},{"type":45,"tag":155,"props":1110,"children":1111},{"style":181},[1112],{"type":51,"value":205},{"type":45,"tag":155,"props":1114,"children":1115},{"style":181},[1116],{"type":51,"value":189},{"type":45,"tag":155,"props":1118,"children":1119},{"style":235},[1120],{"type":51,"value":1121},"cd apps\u002Fweb && next build && cd ..\u002Fapi && tsc",{"type":45,"tag":155,"props":1123,"children":1124},{"style":181},[1125],{"type":51,"value":200},{"type":45,"tag":155,"props":1127,"children":1128},{"style":181},[1129],{"type":51,"value":957},{"type":45,"tag":155,"props":1131,"children":1132},{"class":157,"line":343},[1133,1137,1141,1145,1149,1153,1158,1162],{"type":45,"tag":155,"props":1134,"children":1135},{"style":181},[1136],{"type":51,"value":671},{"type":45,"tag":155,"props":1138,"children":1139},{"style":217},[1140],{"type":51,"value":256},{"type":45,"tag":155,"props":1142,"children":1143},{"style":181},[1144],{"type":51,"value":200},{"type":45,"tag":155,"props":1146,"children":1147},{"style":181},[1148],{"type":51,"value":205},{"type":45,"tag":155,"props":1150,"children":1151},{"style":181},[1152],{"type":51,"value":189},{"type":45,"tag":155,"props":1154,"children":1155},{"style":235},[1156],{"type":51,"value":1157},"eslint apps\u002F packages\u002F",{"type":45,"tag":155,"props":1159,"children":1160},{"style":181},[1161],{"type":51,"value":200},{"type":45,"tag":155,"props":1163,"children":1164},{"style":181},[1165],{"type":51,"value":957},{"type":45,"tag":155,"props":1167,"children":1168},{"class":157,"line":472},[1169,1173,1177,1181,1185,1189,1193],{"type":45,"tag":155,"props":1170,"children":1171},{"style":181},[1172],{"type":51,"value":671},{"type":45,"tag":155,"props":1174,"children":1175},{"style":217},[1176],{"type":51,"value":290},{"type":45,"tag":155,"props":1178,"children":1179},{"style":181},[1180],{"type":51,"value":200},{"type":45,"tag":155,"props":1182,"children":1183},{"style":181},[1184],{"type":51,"value":205},{"type":45,"tag":155,"props":1186,"children":1187},{"style":181},[1188],{"type":51,"value":189},{"type":45,"tag":155,"props":1190,"children":1191},{"style":235},[1192],{"type":51,"value":307},{"type":45,"tag":155,"props":1194,"children":1195},{"style":181},[1196],{"type":51,"value":1026},{"type":45,"tag":155,"props":1198,"children":1199},{"class":157,"line":480},[1200],{"type":45,"tag":155,"props":1201,"children":1202},{"style":181},[1203],{"type":51,"value":867},{"type":45,"tag":155,"props":1205,"children":1206},{"class":157,"line":489},[1207],{"type":45,"tag":155,"props":1208,"children":1209},{"style":181},[1210],{"type":51,"value":875},{"type":45,"tag":54,"props":1212,"children":1213},{},[1214,1216,1222,1224,1230,1232,1238],{"type":51,"value":1215},"Root Tasks (",{"type":45,"tag":91,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":51,"value":1221},"\u002F\u002F#taskname",{"type":51,"value":1223},") are ONLY for tasks that truly cannot exist in packages, such as Vitest Projects' ",{"type":45,"tag":91,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":51,"value":1229},"\u002F\u002F#test",{"type":51,"value":1231},", repo-wide release scripts, or tooling that does not invoke ",{"type":45,"tag":91,"props":1233,"children":1235},{"className":1234},[],[1236],{"type":51,"value":1237},"turbo",{"type":51,"value":1239}," itself.",{"type":45,"tag":60,"props":1241,"children":1243},{"id":1242},"secondary-rule-turbo-run-vs-turbo",[1244,1246,1252,1254],{"type":51,"value":1245},"Secondary Rule: ",{"type":45,"tag":91,"props":1247,"children":1249},{"className":1248},[],[1250],{"type":51,"value":1251},"turbo run",{"type":51,"value":1253}," vs ",{"type":45,"tag":91,"props":1255,"children":1257},{"className":1256},[],[1258],{"type":51,"value":1237},{"type":45,"tag":54,"props":1260,"children":1261},{},[1262],{"type":45,"tag":70,"props":1263,"children":1264},{},[1265,1267,1272],{"type":51,"value":1266},"Always use ",{"type":45,"tag":91,"props":1268,"children":1270},{"className":1269},[],[1271],{"type":51,"value":1251},{"type":51,"value":1273}," when the command is written into code:",{"type":45,"tag":144,"props":1275,"children":1277},{"className":146,"code":1276,"language":148,"meta":149,"style":149},"\u002F\u002F package.json - ALWAYS \"turbo run\"\n{\n  \"scripts\": {\n    \"build\": \"turbo run build\"\n  }\n}\n",[1278],{"type":45,"tag":91,"props":1279,"children":1280},{"__ignoreMap":149},[1281,1289,1296,1319,1350,1357],{"type":45,"tag":155,"props":1282,"children":1283},{"class":157,"line":158},[1284],{"type":45,"tag":155,"props":1285,"children":1286},{"style":162},[1287],{"type":51,"value":1288},"\u002F\u002F package.json - ALWAYS \"turbo run\"\n",{"type":45,"tag":155,"props":1290,"children":1291},{"class":157,"line":168},[1292],{"type":45,"tag":155,"props":1293,"children":1294},{"style":181},[1295],{"type":51,"value":637},{"type":45,"tag":155,"props":1297,"children":1298},{"class":157,"line":177},[1299,1303,1307,1311,1315],{"type":45,"tag":155,"props":1300,"children":1301},{"style":181},[1302],{"type":51,"value":645},{"type":45,"tag":155,"props":1304,"children":1305},{"style":192},[1306],{"type":51,"value":195},{"type":45,"tag":155,"props":1308,"children":1309},{"style":181},[1310],{"type":51,"value":200},{"type":45,"tag":155,"props":1312,"children":1313},{"style":181},[1314],{"type":51,"value":205},{"type":45,"tag":155,"props":1316,"children":1317},{"style":181},[1318],{"type":51,"value":663},{"type":45,"tag":155,"props":1320,"children":1321},{"class":157,"line":324},[1322,1326,1330,1334,1338,1342,1346],{"type":45,"tag":155,"props":1323,"children":1324},{"style":181},[1325],{"type":51,"value":671},{"type":45,"tag":155,"props":1327,"children":1328},{"style":217},[1329],{"type":51,"value":220},{"type":45,"tag":155,"props":1331,"children":1332},{"style":181},[1333],{"type":51,"value":200},{"type":45,"tag":155,"props":1335,"children":1336},{"style":181},[1337],{"type":51,"value":205},{"type":45,"tag":155,"props":1339,"children":1340},{"style":181},[1341],{"type":51,"value":189},{"type":45,"tag":155,"props":1343,"children":1344},{"style":235},[1345],{"type":51,"value":948},{"type":45,"tag":155,"props":1347,"children":1348},{"style":181},[1349],{"type":51,"value":1026},{"type":45,"tag":155,"props":1351,"children":1352},{"class":157,"line":334},[1353],{"type":45,"tag":155,"props":1354,"children":1355},{"style":181},[1356],{"type":51,"value":867},{"type":45,"tag":155,"props":1358,"children":1359},{"class":157,"line":343},[1360],{"type":45,"tag":155,"props":1361,"children":1362},{"style":181},[1363],{"type":51,"value":875},{"type":45,"tag":144,"props":1365,"children":1369},{"className":1366,"code":1367,"language":1368,"meta":149,"style":149},"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",[1370],{"type":45,"tag":91,"props":1371,"children":1372},{"__ignoreMap":149},[1373,1381],{"type":45,"tag":155,"props":1374,"children":1375},{"class":157,"line":158},[1376],{"type":45,"tag":155,"props":1377,"children":1378},{"style":162},[1379],{"type":51,"value":1380},"# CI workflows - ALWAYS \"turbo run\"\n",{"type":45,"tag":155,"props":1382,"children":1383},{"class":157,"line":168},[1384,1389,1395,1399],{"type":45,"tag":155,"props":1385,"children":1386},{"style":181},[1387],{"type":51,"value":1388},"-",{"type":45,"tag":155,"props":1390,"children":1392},{"style":1391},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1393],{"type":51,"value":1394}," run",{"type":45,"tag":155,"props":1396,"children":1397},{"style":181},[1398],{"type":51,"value":205},{"type":45,"tag":155,"props":1400,"children":1401},{"style":235},[1402],{"type":51,"value":1403}," turbo run build --affected\n",{"type":45,"tag":54,"props":1405,"children":1406},{},[1407,1420,1422,1428],{"type":45,"tag":70,"props":1408,"children":1409},{},[1410,1412,1418],{"type":51,"value":1411},"The shorthand ",{"type":45,"tag":91,"props":1413,"children":1415},{"className":1414},[],[1416],{"type":51,"value":1417},"turbo \u003Ctasks>",{"type":51,"value":1419}," is ONLY for one-off terminal commands",{"type":51,"value":1421}," typed directly by humans or agents. Never write ",{"type":45,"tag":91,"props":1423,"children":1425},{"className":1424},[],[1426],{"type":51,"value":1427},"turbo build",{"type":51,"value":1429}," into package.json, CI, or scripts.",{"type":45,"tag":60,"props":1431,"children":1433},{"id":1432},"quick-decision-trees",[1434],{"type":51,"value":1435},"Quick Decision Trees",{"type":45,"tag":1437,"props":1438,"children":1440},"h3",{"id":1439},"i-need-to-configure-a-task",[1441],{"type":51,"value":1442},"\"I need to configure a task\"",{"type":45,"tag":144,"props":1444,"children":1448},{"className":1445,"code":1447,"language":51},[1446],"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",[1449],{"type":45,"tag":91,"props":1450,"children":1451},{"__ignoreMap":149},[1452],{"type":51,"value":1447},{"type":45,"tag":1437,"props":1454,"children":1456},{"id":1455},"my-cache-isnt-working",[1457],{"type":51,"value":1458},"\"My cache isn't working\"",{"type":45,"tag":144,"props":1460,"children":1463},{"className":1461,"code":1462,"language":51},[1446],"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",[1464],{"type":45,"tag":91,"props":1465,"children":1466},{"__ignoreMap":149},[1467],{"type":51,"value":1462},{"type":45,"tag":1437,"props":1469,"children":1471},{"id":1470},"i-want-to-run-only-changed-packages",[1472],{"type":51,"value":1473},"\"I want to run only changed packages\"",{"type":45,"tag":144,"props":1475,"children":1478},{"className":1476,"code":1477,"language":51},[1446],"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",[1479],{"type":45,"tag":91,"props":1480,"children":1481},{"__ignoreMap":149},[1482],{"type":51,"value":1477},{"type":45,"tag":54,"props":1484,"children":1485},{},[1486,1497],{"type":45,"tag":70,"props":1487,"children":1488},{},[1489,1495],{"type":45,"tag":91,"props":1490,"children":1492},{"className":1491},[],[1493],{"type":51,"value":1494},"--affected",{"type":51,"value":1496}," is the primary way to run only changed packages.",{"type":51,"value":1498}," It automatically compares against the default branch and includes dependents.",{"type":45,"tag":1437,"props":1500,"children":1502},{"id":1501},"i-want-to-filter-packages",[1503],{"type":51,"value":1504},"\"I want to filter packages\"",{"type":45,"tag":144,"props":1506,"children":1509},{"className":1507,"code":1508,"language":51},[1446],"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",[1510],{"type":45,"tag":91,"props":1511,"children":1512},{"__ignoreMap":149},[1513],{"type":51,"value":1508},{"type":45,"tag":1437,"props":1515,"children":1517},{"id":1516},"environment-variables-arent-working",[1518],{"type":51,"value":1519},"\"Environment variables aren't working\"",{"type":45,"tag":144,"props":1521,"children":1524},{"className":1522,"code":1523,"language":51},[1446],"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",[1525],{"type":45,"tag":91,"props":1526,"children":1527},{"__ignoreMap":149},[1528],{"type":51,"value":1523},{"type":45,"tag":1437,"props":1530,"children":1532},{"id":1531},"i-need-to-set-up-ci",[1533],{"type":51,"value":1534},"\"I need to set up CI\"",{"type":45,"tag":144,"props":1536,"children":1539},{"className":1537,"code":1538,"language":51},[1446],"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",[1540],{"type":45,"tag":91,"props":1541,"children":1542},{"__ignoreMap":149},[1543],{"type":51,"value":1538},{"type":45,"tag":1437,"props":1545,"children":1547},{"id":1546},"i-want-to-watch-for-changes-during-development",[1548],{"type":51,"value":1549},"\"I want to watch for changes during development\"",{"type":45,"tag":144,"props":1551,"children":1554},{"className":1552,"code":1553,"language":51},[1446],"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",[1555],{"type":45,"tag":91,"props":1556,"children":1557},{"__ignoreMap":149},[1558],{"type":51,"value":1553},{"type":45,"tag":1437,"props":1560,"children":1562},{"id":1561},"i-need-to-createstructure-a-package",[1563],{"type":51,"value":1564},"\"I need to create\u002Fstructure a package\"",{"type":45,"tag":144,"props":1566,"children":1569},{"className":1567,"code":1568,"language":51},[1446],"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",[1570],{"type":45,"tag":91,"props":1571,"children":1572},{"__ignoreMap":149},[1573],{"type":51,"value":1568},{"type":45,"tag":1437,"props":1575,"children":1577},{"id":1576},"how-should-i-structure-my-monorepo",[1578],{"type":51,"value":1579},"\"How should I structure my monorepo?\"",{"type":45,"tag":144,"props":1581,"children":1584},{"className":1582,"code":1583,"language":51},[1446],"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",[1585],{"type":45,"tag":91,"props":1586,"children":1587},{"__ignoreMap":149},[1588],{"type":51,"value":1583},{"type":45,"tag":1437,"props":1590,"children":1592},{"id":1591},"i-want-to-enforce-architectural-boundaries",[1593],{"type":51,"value":1594},"\"I want to enforce architectural boundaries\"",{"type":45,"tag":144,"props":1596,"children":1599},{"className":1597,"code":1598,"language":51},[1446],"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",[1600],{"type":45,"tag":91,"props":1601,"children":1602},{"__ignoreMap":149},[1603],{"type":51,"value":1598},{"type":45,"tag":60,"props":1605,"children":1607},{"id":1606},"critical-anti-patterns",[1608],{"type":51,"value":1609},"Critical Anti-Patterns",{"type":45,"tag":1437,"props":1611,"children":1613},{"id":1612},"using-turbo-shorthand-in-code",[1614,1616,1621],{"type":51,"value":1615},"Using ",{"type":45,"tag":91,"props":1617,"children":1619},{"className":1618},[],[1620],{"type":51,"value":1237},{"type":51,"value":1622}," Shorthand in Code",{"type":45,"tag":54,"props":1624,"children":1625},{},[1626,1636,1638,1644],{"type":45,"tag":70,"props":1627,"children":1628},{},[1629,1634],{"type":45,"tag":91,"props":1630,"children":1632},{"className":1631},[],[1633],{"type":51,"value":1251},{"type":51,"value":1635}," is recommended in package.json scripts and CI pipelines.",{"type":51,"value":1637}," The shorthand ",{"type":45,"tag":91,"props":1639,"children":1641},{"className":1640},[],[1642],{"type":51,"value":1643},"turbo \u003Ctask>",{"type":51,"value":1645}," is intended for interactive terminal use.",{"type":45,"tag":144,"props":1647,"children":1649},{"className":146,"code":1648,"language":148,"meta":149,"style":149},"\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",[1650],{"type":45,"tag":91,"props":1651,"children":1652},{"__ignoreMap":149},[1653,1661,1668,1691,1726,1759,1766,1773,1780,1788,1796,1820,1856,1889,1897],{"type":45,"tag":155,"props":1654,"children":1655},{"class":157,"line":158},[1656],{"type":45,"tag":155,"props":1657,"children":1658},{"style":162},[1659],{"type":51,"value":1660},"\u002F\u002F WRONG - using shorthand in package.json\n",{"type":45,"tag":155,"props":1662,"children":1663},{"class":157,"line":168},[1664],{"type":45,"tag":155,"props":1665,"children":1666},{"style":181},[1667],{"type":51,"value":637},{"type":45,"tag":155,"props":1669,"children":1670},{"class":157,"line":177},[1671,1675,1679,1683,1687],{"type":45,"tag":155,"props":1672,"children":1673},{"style":181},[1674],{"type":51,"value":645},{"type":45,"tag":155,"props":1676,"children":1677},{"style":192},[1678],{"type":51,"value":195},{"type":45,"tag":155,"props":1680,"children":1681},{"style":181},[1682],{"type":51,"value":200},{"type":45,"tag":155,"props":1684,"children":1685},{"style":181},[1686],{"type":51,"value":205},{"type":45,"tag":155,"props":1688,"children":1689},{"style":181},[1690],{"type":51,"value":663},{"type":45,"tag":155,"props":1692,"children":1693},{"class":157,"line":324},[1694,1698,1702,1706,1710,1714,1718,1722],{"type":45,"tag":155,"props":1695,"children":1696},{"style":181},[1697],{"type":51,"value":671},{"type":45,"tag":155,"props":1699,"children":1700},{"style":217},[1701],{"type":51,"value":220},{"type":45,"tag":155,"props":1703,"children":1704},{"style":181},[1705],{"type":51,"value":200},{"type":45,"tag":155,"props":1707,"children":1708},{"style":181},[1709],{"type":51,"value":205},{"type":45,"tag":155,"props":1711,"children":1712},{"style":181},[1713],{"type":51,"value":189},{"type":45,"tag":155,"props":1715,"children":1716},{"style":235},[1717],{"type":51,"value":1427},{"type":45,"tag":155,"props":1719,"children":1720},{"style":181},[1721],{"type":51,"value":200},{"type":45,"tag":155,"props":1723,"children":1724},{"style":181},[1725],{"type":51,"value":957},{"type":45,"tag":155,"props":1727,"children":1728},{"class":157,"line":334},[1729,1733,1738,1742,1746,1750,1755],{"type":45,"tag":155,"props":1730,"children":1731},{"style":181},[1732],{"type":51,"value":671},{"type":45,"tag":155,"props":1734,"children":1735},{"style":217},[1736],{"type":51,"value":1737},"dev",{"type":45,"tag":155,"props":1739,"children":1740},{"style":181},[1741],{"type":51,"value":200},{"type":45,"tag":155,"props":1743,"children":1744},{"style":181},[1745],{"type":51,"value":205},{"type":45,"tag":155,"props":1747,"children":1748},{"style":181},[1749],{"type":51,"value":189},{"type":45,"tag":155,"props":1751,"children":1752},{"style":235},[1753],{"type":51,"value":1754},"turbo dev",{"type":45,"tag":155,"props":1756,"children":1757},{"style":181},[1758],{"type":51,"value":1026},{"type":45,"tag":155,"props":1760,"children":1761},{"class":157,"line":343},[1762],{"type":45,"tag":155,"props":1763,"children":1764},{"style":181},[1765],{"type":51,"value":867},{"type":45,"tag":155,"props":1767,"children":1768},{"class":157,"line":472},[1769],{"type":45,"tag":155,"props":1770,"children":1771},{"style":181},[1772],{"type":51,"value":875},{"type":45,"tag":155,"props":1774,"children":1775},{"class":157,"line":480},[1776],{"type":45,"tag":155,"props":1777,"children":1778},{"emptyLinePlaceholder":328},[1779],{"type":51,"value":331},{"type":45,"tag":155,"props":1781,"children":1782},{"class":157,"line":489},[1783],{"type":45,"tag":155,"props":1784,"children":1785},{"style":162},[1786],{"type":51,"value":1787},"\u002F\u002F CORRECT\n",{"type":45,"tag":155,"props":1789,"children":1791},{"class":157,"line":1790},10,[1792],{"type":45,"tag":155,"props":1793,"children":1794},{"style":181},[1795],{"type":51,"value":637},{"type":45,"tag":155,"props":1797,"children":1799},{"class":157,"line":1798},11,[1800,1804,1808,1812,1816],{"type":45,"tag":155,"props":1801,"children":1802},{"style":181},[1803],{"type":51,"value":645},{"type":45,"tag":155,"props":1805,"children":1806},{"style":192},[1807],{"type":51,"value":195},{"type":45,"tag":155,"props":1809,"children":1810},{"style":181},[1811],{"type":51,"value":200},{"type":45,"tag":155,"props":1813,"children":1814},{"style":181},[1815],{"type":51,"value":205},{"type":45,"tag":155,"props":1817,"children":1818},{"style":181},[1819],{"type":51,"value":663},{"type":45,"tag":155,"props":1821,"children":1823},{"class":157,"line":1822},12,[1824,1828,1832,1836,1840,1844,1848,1852],{"type":45,"tag":155,"props":1825,"children":1826},{"style":181},[1827],{"type":51,"value":671},{"type":45,"tag":155,"props":1829,"children":1830},{"style":217},[1831],{"type":51,"value":220},{"type":45,"tag":155,"props":1833,"children":1834},{"style":181},[1835],{"type":51,"value":200},{"type":45,"tag":155,"props":1837,"children":1838},{"style":181},[1839],{"type":51,"value":205},{"type":45,"tag":155,"props":1841,"children":1842},{"style":181},[1843],{"type":51,"value":189},{"type":45,"tag":155,"props":1845,"children":1846},{"style":235},[1847],{"type":51,"value":948},{"type":45,"tag":155,"props":1849,"children":1850},{"style":181},[1851],{"type":51,"value":200},{"type":45,"tag":155,"props":1853,"children":1854},{"style":181},[1855],{"type":51,"value":957},{"type":45,"tag":155,"props":1857,"children":1859},{"class":157,"line":1858},13,[1860,1864,1868,1872,1876,1880,1885],{"type":45,"tag":155,"props":1861,"children":1862},{"style":181},[1863],{"type":51,"value":671},{"type":45,"tag":155,"props":1865,"children":1866},{"style":217},[1867],{"type":51,"value":1737},{"type":45,"tag":155,"props":1869,"children":1870},{"style":181},[1871],{"type":51,"value":200},{"type":45,"tag":155,"props":1873,"children":1874},{"style":181},[1875],{"type":51,"value":205},{"type":45,"tag":155,"props":1877,"children":1878},{"style":181},[1879],{"type":51,"value":189},{"type":45,"tag":155,"props":1881,"children":1882},{"style":235},[1883],{"type":51,"value":1884},"turbo run dev",{"type":45,"tag":155,"props":1886,"children":1887},{"style":181},[1888],{"type":51,"value":1026},{"type":45,"tag":155,"props":1890,"children":1892},{"class":157,"line":1891},14,[1893],{"type":45,"tag":155,"props":1894,"children":1895},{"style":181},[1896],{"type":51,"value":867},{"type":45,"tag":155,"props":1898,"children":1900},{"class":157,"line":1899},15,[1901],{"type":45,"tag":155,"props":1902,"children":1903},{"style":181},[1904],{"type":51,"value":875},{"type":45,"tag":144,"props":1906,"children":1908},{"className":1366,"code":1907,"language":1368,"meta":149,"style":149},"# WRONG - using shorthand in CI\n- run: turbo build --affected\n\n# CORRECT\n- run: turbo run build --affected\n",[1909],{"type":45,"tag":91,"props":1910,"children":1911},{"__ignoreMap":149},[1912,1920,1940,1947,1955],{"type":45,"tag":155,"props":1913,"children":1914},{"class":157,"line":158},[1915],{"type":45,"tag":155,"props":1916,"children":1917},{"style":162},[1918],{"type":51,"value":1919},"# WRONG - using shorthand in CI\n",{"type":45,"tag":155,"props":1921,"children":1922},{"class":157,"line":168},[1923,1927,1931,1935],{"type":45,"tag":155,"props":1924,"children":1925},{"style":181},[1926],{"type":51,"value":1388},{"type":45,"tag":155,"props":1928,"children":1929},{"style":1391},[1930],{"type":51,"value":1394},{"type":45,"tag":155,"props":1932,"children":1933},{"style":181},[1934],{"type":51,"value":205},{"type":45,"tag":155,"props":1936,"children":1937},{"style":235},[1938],{"type":51,"value":1939}," turbo build --affected\n",{"type":45,"tag":155,"props":1941,"children":1942},{"class":157,"line":177},[1943],{"type":45,"tag":155,"props":1944,"children":1945},{"emptyLinePlaceholder":328},[1946],{"type":51,"value":331},{"type":45,"tag":155,"props":1948,"children":1949},{"class":157,"line":324},[1950],{"type":45,"tag":155,"props":1951,"children":1952},{"style":162},[1953],{"type":51,"value":1954},"# CORRECT\n",{"type":45,"tag":155,"props":1956,"children":1957},{"class":157,"line":334},[1958,1962,1966,1970],{"type":45,"tag":155,"props":1959,"children":1960},{"style":181},[1961],{"type":51,"value":1388},{"type":45,"tag":155,"props":1963,"children":1964},{"style":1391},[1965],{"type":51,"value":1394},{"type":45,"tag":155,"props":1967,"children":1968},{"style":181},[1969],{"type":51,"value":205},{"type":45,"tag":155,"props":1971,"children":1972},{"style":235},[1973],{"type":51,"value":1403},{"type":45,"tag":1437,"props":1975,"children":1977},{"id":1976},"root-scripts-bypassing-turbo",[1978],{"type":51,"value":1979},"Root Scripts Bypassing Turbo",{"type":45,"tag":54,"props":1981,"children":1982},{},[1983,1984,1989,1991,1996],{"type":51,"value":112},{"type":45,"tag":91,"props":1985,"children":1987},{"className":1986},[],[1988],{"type":51,"value":96},{"type":51,"value":1990}," scripts MUST delegate to ",{"type":45,"tag":91,"props":1992,"children":1994},{"className":1993},[],[1995],{"type":51,"value":1251},{"type":51,"value":1997},", not run tasks directly.",{"type":45,"tag":144,"props":1999,"children":2001},{"className":146,"code":2000,"language":148,"meta":149,"style":149},"\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",[2002],{"type":45,"tag":91,"props":2003,"children":2004},{"__ignoreMap":149},[2005,2013,2020,2043,2079,2111,2118,2125,2132,2140,2147,2170,2205,2236,2243],{"type":45,"tag":155,"props":2006,"children":2007},{"class":157,"line":158},[2008],{"type":45,"tag":155,"props":2009,"children":2010},{"style":162},[2011],{"type":51,"value":2012},"\u002F\u002F WRONG - bypasses turbo entirely\n",{"type":45,"tag":155,"props":2014,"children":2015},{"class":157,"line":168},[2016],{"type":45,"tag":155,"props":2017,"children":2018},{"style":181},[2019],{"type":51,"value":637},{"type":45,"tag":155,"props":2021,"children":2022},{"class":157,"line":177},[2023,2027,2031,2035,2039],{"type":45,"tag":155,"props":2024,"children":2025},{"style":181},[2026],{"type":51,"value":645},{"type":45,"tag":155,"props":2028,"children":2029},{"style":192},[2030],{"type":51,"value":195},{"type":45,"tag":155,"props":2032,"children":2033},{"style":181},[2034],{"type":51,"value":200},{"type":45,"tag":155,"props":2036,"children":2037},{"style":181},[2038],{"type":51,"value":205},{"type":45,"tag":155,"props":2040,"children":2041},{"style":181},[2042],{"type":51,"value":663},{"type":45,"tag":155,"props":2044,"children":2045},{"class":157,"line":324},[2046,2050,2054,2058,2062,2066,2071,2075],{"type":45,"tag":155,"props":2047,"children":2048},{"style":181},[2049],{"type":51,"value":671},{"type":45,"tag":155,"props":2051,"children":2052},{"style":217},[2053],{"type":51,"value":220},{"type":45,"tag":155,"props":2055,"children":2056},{"style":181},[2057],{"type":51,"value":200},{"type":45,"tag":155,"props":2059,"children":2060},{"style":181},[2061],{"type":51,"value":205},{"type":45,"tag":155,"props":2063,"children":2064},{"style":181},[2065],{"type":51,"value":189},{"type":45,"tag":155,"props":2067,"children":2068},{"style":235},[2069],{"type":51,"value":2070},"bun build",{"type":45,"tag":155,"props":2072,"children":2073},{"style":181},[2074],{"type":51,"value":200},{"type":45,"tag":155,"props":2076,"children":2077},{"style":181},[2078],{"type":51,"value":957},{"type":45,"tag":155,"props":2080,"children":2081},{"class":157,"line":334},[2082,2086,2090,2094,2098,2102,2107],{"type":45,"tag":155,"props":2083,"children":2084},{"style":181},[2085],{"type":51,"value":671},{"type":45,"tag":155,"props":2087,"children":2088},{"style":217},[2089],{"type":51,"value":1737},{"type":45,"tag":155,"props":2091,"children":2092},{"style":181},[2093],{"type":51,"value":200},{"type":45,"tag":155,"props":2095,"children":2096},{"style":181},[2097],{"type":51,"value":205},{"type":45,"tag":155,"props":2099,"children":2100},{"style":181},[2101],{"type":51,"value":189},{"type":45,"tag":155,"props":2103,"children":2104},{"style":235},[2105],{"type":51,"value":2106},"bun dev",{"type":45,"tag":155,"props":2108,"children":2109},{"style":181},[2110],{"type":51,"value":1026},{"type":45,"tag":155,"props":2112,"children":2113},{"class":157,"line":343},[2114],{"type":45,"tag":155,"props":2115,"children":2116},{"style":181},[2117],{"type":51,"value":867},{"type":45,"tag":155,"props":2119,"children":2120},{"class":157,"line":472},[2121],{"type":45,"tag":155,"props":2122,"children":2123},{"style":181},[2124],{"type":51,"value":875},{"type":45,"tag":155,"props":2126,"children":2127},{"class":157,"line":480},[2128],{"type":45,"tag":155,"props":2129,"children":2130},{"emptyLinePlaceholder":328},[2131],{"type":51,"value":331},{"type":45,"tag":155,"props":2133,"children":2134},{"class":157,"line":489},[2135],{"type":45,"tag":155,"props":2136,"children":2137},{"style":162},[2138],{"type":51,"value":2139},"\u002F\u002F CORRECT - delegates to turbo\n",{"type":45,"tag":155,"props":2141,"children":2142},{"class":157,"line":1790},[2143],{"type":45,"tag":155,"props":2144,"children":2145},{"style":181},[2146],{"type":51,"value":637},{"type":45,"tag":155,"props":2148,"children":2149},{"class":157,"line":1798},[2150,2154,2158,2162,2166],{"type":45,"tag":155,"props":2151,"children":2152},{"style":181},[2153],{"type":51,"value":645},{"type":45,"tag":155,"props":2155,"children":2156},{"style":192},[2157],{"type":51,"value":195},{"type":45,"tag":155,"props":2159,"children":2160},{"style":181},[2161],{"type":51,"value":200},{"type":45,"tag":155,"props":2163,"children":2164},{"style":181},[2165],{"type":51,"value":205},{"type":45,"tag":155,"props":2167,"children":2168},{"style":181},[2169],{"type":51,"value":663},{"type":45,"tag":155,"props":2171,"children":2172},{"class":157,"line":1822},[2173,2177,2181,2185,2189,2193,2197,2201],{"type":45,"tag":155,"props":2174,"children":2175},{"style":181},[2176],{"type":51,"value":671},{"type":45,"tag":155,"props":2178,"children":2179},{"style":217},[2180],{"type":51,"value":220},{"type":45,"tag":155,"props":2182,"children":2183},{"style":181},[2184],{"type":51,"value":200},{"type":45,"tag":155,"props":2186,"children":2187},{"style":181},[2188],{"type":51,"value":205},{"type":45,"tag":155,"props":2190,"children":2191},{"style":181},[2192],{"type":51,"value":189},{"type":45,"tag":155,"props":2194,"children":2195},{"style":235},[2196],{"type":51,"value":948},{"type":45,"tag":155,"props":2198,"children":2199},{"style":181},[2200],{"type":51,"value":200},{"type":45,"tag":155,"props":2202,"children":2203},{"style":181},[2204],{"type":51,"value":957},{"type":45,"tag":155,"props":2206,"children":2207},{"class":157,"line":1858},[2208,2212,2216,2220,2224,2228,2232],{"type":45,"tag":155,"props":2209,"children":2210},{"style":181},[2211],{"type":51,"value":671},{"type":45,"tag":155,"props":2213,"children":2214},{"style":217},[2215],{"type":51,"value":1737},{"type":45,"tag":155,"props":2217,"children":2218},{"style":181},[2219],{"type":51,"value":200},{"type":45,"tag":155,"props":2221,"children":2222},{"style":181},[2223],{"type":51,"value":205},{"type":45,"tag":155,"props":2225,"children":2226},{"style":181},[2227],{"type":51,"value":189},{"type":45,"tag":155,"props":2229,"children":2230},{"style":235},[2231],{"type":51,"value":1884},{"type":45,"tag":155,"props":2233,"children":2234},{"style":181},[2235],{"type":51,"value":1026},{"type":45,"tag":155,"props":2237,"children":2238},{"class":157,"line":1891},[2239],{"type":45,"tag":155,"props":2240,"children":2241},{"style":181},[2242],{"type":51,"value":867},{"type":45,"tag":155,"props":2244,"children":2245},{"class":157,"line":1899},[2246],{"type":45,"tag":155,"props":2247,"children":2248},{"style":181},[2249],{"type":51,"value":875},{"type":45,"tag":1437,"props":2251,"children":2253},{"id":2252},"using-to-chain-turbo-tasks",[2254,2255,2261],{"type":51,"value":1615},{"type":45,"tag":91,"props":2256,"children":2258},{"className":2257},[],[2259],{"type":51,"value":2260},"&&",{"type":51,"value":2262}," to Chain Turbo Tasks",{"type":45,"tag":54,"props":2264,"children":2265},{},[2266,2268,2273],{"type":51,"value":2267},"Don't chain turbo tasks with ",{"type":45,"tag":91,"props":2269,"children":2271},{"className":2270},[],[2272],{"type":51,"value":2260},{"type":51,"value":2274},". Let turbo orchestrate.",{"type":45,"tag":144,"props":2276,"children":2278},{"className":146,"code":2277,"language":148,"meta":149,"style":149},"\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",[2279],{"type":45,"tag":91,"props":2280,"children":2281},{"__ignoreMap":149},[2282,2290,2297,2320,2353,2360,2367,2374,2381,2388,2411,2443,2450],{"type":45,"tag":155,"props":2283,"children":2284},{"class":157,"line":158},[2285],{"type":45,"tag":155,"props":2286,"children":2287},{"style":162},[2288],{"type":51,"value":2289},"\u002F\u002F WRONG - turbo task not using turbo run\n",{"type":45,"tag":155,"props":2291,"children":2292},{"class":157,"line":168},[2293],{"type":45,"tag":155,"props":2294,"children":2295},{"style":181},[2296],{"type":51,"value":637},{"type":45,"tag":155,"props":2298,"children":2299},{"class":157,"line":177},[2300,2304,2308,2312,2316],{"type":45,"tag":155,"props":2301,"children":2302},{"style":181},[2303],{"type":51,"value":645},{"type":45,"tag":155,"props":2305,"children":2306},{"style":192},[2307],{"type":51,"value":195},{"type":45,"tag":155,"props":2309,"children":2310},{"style":181},[2311],{"type":51,"value":200},{"type":45,"tag":155,"props":2313,"children":2314},{"style":181},[2315],{"type":51,"value":205},{"type":45,"tag":155,"props":2317,"children":2318},{"style":181},[2319],{"type":51,"value":663},{"type":45,"tag":155,"props":2321,"children":2322},{"class":157,"line":324},[2323,2327,2332,2336,2340,2344,2349],{"type":45,"tag":155,"props":2324,"children":2325},{"style":181},[2326],{"type":51,"value":671},{"type":45,"tag":155,"props":2328,"children":2329},{"style":217},[2330],{"type":51,"value":2331},"changeset:publish",{"type":45,"tag":155,"props":2333,"children":2334},{"style":181},[2335],{"type":51,"value":200},{"type":45,"tag":155,"props":2337,"children":2338},{"style":181},[2339],{"type":51,"value":205},{"type":45,"tag":155,"props":2341,"children":2342},{"style":181},[2343],{"type":51,"value":189},{"type":45,"tag":155,"props":2345,"children":2346},{"style":235},[2347],{"type":51,"value":2348},"bun build && changeset publish",{"type":45,"tag":155,"props":2350,"children":2351},{"style":181},[2352],{"type":51,"value":1026},{"type":45,"tag":155,"props":2354,"children":2355},{"class":157,"line":334},[2356],{"type":45,"tag":155,"props":2357,"children":2358},{"style":181},[2359],{"type":51,"value":867},{"type":45,"tag":155,"props":2361,"children":2362},{"class":157,"line":343},[2363],{"type":45,"tag":155,"props":2364,"children":2365},{"style":181},[2366],{"type":51,"value":875},{"type":45,"tag":155,"props":2368,"children":2369},{"class":157,"line":472},[2370],{"type":45,"tag":155,"props":2371,"children":2372},{"emptyLinePlaceholder":328},[2373],{"type":51,"value":331},{"type":45,"tag":155,"props":2375,"children":2376},{"class":157,"line":480},[2377],{"type":45,"tag":155,"props":2378,"children":2379},{"style":162},[2380],{"type":51,"value":1787},{"type":45,"tag":155,"props":2382,"children":2383},{"class":157,"line":489},[2384],{"type":45,"tag":155,"props":2385,"children":2386},{"style":181},[2387],{"type":51,"value":637},{"type":45,"tag":155,"props":2389,"children":2390},{"class":157,"line":1790},[2391,2395,2399,2403,2407],{"type":45,"tag":155,"props":2392,"children":2393},{"style":181},[2394],{"type":51,"value":645},{"type":45,"tag":155,"props":2396,"children":2397},{"style":192},[2398],{"type":51,"value":195},{"type":45,"tag":155,"props":2400,"children":2401},{"style":181},[2402],{"type":51,"value":200},{"type":45,"tag":155,"props":2404,"children":2405},{"style":181},[2406],{"type":51,"value":205},{"type":45,"tag":155,"props":2408,"children":2409},{"style":181},[2410],{"type":51,"value":663},{"type":45,"tag":155,"props":2412,"children":2413},{"class":157,"line":1798},[2414,2418,2422,2426,2430,2434,2439],{"type":45,"tag":155,"props":2415,"children":2416},{"style":181},[2417],{"type":51,"value":671},{"type":45,"tag":155,"props":2419,"children":2420},{"style":217},[2421],{"type":51,"value":2331},{"type":45,"tag":155,"props":2423,"children":2424},{"style":181},[2425],{"type":51,"value":200},{"type":45,"tag":155,"props":2427,"children":2428},{"style":181},[2429],{"type":51,"value":205},{"type":45,"tag":155,"props":2431,"children":2432},{"style":181},[2433],{"type":51,"value":189},{"type":45,"tag":155,"props":2435,"children":2436},{"style":235},[2437],{"type":51,"value":2438},"turbo run build && changeset publish",{"type":45,"tag":155,"props":2440,"children":2441},{"style":181},[2442],{"type":51,"value":1026},{"type":45,"tag":155,"props":2444,"children":2445},{"class":157,"line":1822},[2446],{"type":45,"tag":155,"props":2447,"children":2448},{"style":181},[2449],{"type":51,"value":867},{"type":45,"tag":155,"props":2451,"children":2452},{"class":157,"line":1858},[2453],{"type":45,"tag":155,"props":2454,"children":2455},{"style":181},[2456],{"type":51,"value":875},{"type":45,"tag":1437,"props":2458,"children":2460},{"id":2459},"prebuild-scripts-that-manually-build-dependencies",[2461,2467],{"type":45,"tag":91,"props":2462,"children":2464},{"className":2463},[],[2465],{"type":51,"value":2466},"prebuild",{"type":51,"value":2468}," Scripts That Manually Build Dependencies",{"type":45,"tag":54,"props":2470,"children":2471},{},[2472,2474,2479],{"type":51,"value":2473},"Scripts like ",{"type":45,"tag":91,"props":2475,"children":2477},{"className":2476},[],[2478],{"type":51,"value":2466},{"type":51,"value":2480}," that manually build other packages bypass Turborepo's dependency graph.",{"type":45,"tag":144,"props":2482,"children":2484},{"className":146,"code":2483,"language":148,"meta":149,"style":149},"\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",[2485],{"type":45,"tag":91,"props":2486,"children":2487},{"__ignoreMap":149},[2488,2496,2503,2526,2562,2593,2600],{"type":45,"tag":155,"props":2489,"children":2490},{"class":157,"line":158},[2491],{"type":45,"tag":155,"props":2492,"children":2493},{"style":162},[2494],{"type":51,"value":2495},"\u002F\u002F WRONG - manually building dependencies\n",{"type":45,"tag":155,"props":2497,"children":2498},{"class":157,"line":168},[2499],{"type":45,"tag":155,"props":2500,"children":2501},{"style":181},[2502],{"type":51,"value":637},{"type":45,"tag":155,"props":2504,"children":2505},{"class":157,"line":177},[2506,2510,2514,2518,2522],{"type":45,"tag":155,"props":2507,"children":2508},{"style":181},[2509],{"type":51,"value":645},{"type":45,"tag":155,"props":2511,"children":2512},{"style":192},[2513],{"type":51,"value":195},{"type":45,"tag":155,"props":2515,"children":2516},{"style":181},[2517],{"type":51,"value":200},{"type":45,"tag":155,"props":2519,"children":2520},{"style":181},[2521],{"type":51,"value":205},{"type":45,"tag":155,"props":2523,"children":2524},{"style":181},[2525],{"type":51,"value":663},{"type":45,"tag":155,"props":2527,"children":2528},{"class":157,"line":324},[2529,2533,2537,2541,2545,2549,2554,2558],{"type":45,"tag":155,"props":2530,"children":2531},{"style":181},[2532],{"type":51,"value":671},{"type":45,"tag":155,"props":2534,"children":2535},{"style":217},[2536],{"type":51,"value":2466},{"type":45,"tag":155,"props":2538,"children":2539},{"style":181},[2540],{"type":51,"value":200},{"type":45,"tag":155,"props":2542,"children":2543},{"style":181},[2544],{"type":51,"value":205},{"type":45,"tag":155,"props":2546,"children":2547},{"style":181},[2548],{"type":51,"value":189},{"type":45,"tag":155,"props":2550,"children":2551},{"style":235},[2552],{"type":51,"value":2553},"cd ..\u002F..\u002Fpackages\u002Ftypes && bun run build && cd ..\u002Futils && bun run build",{"type":45,"tag":155,"props":2555,"children":2556},{"style":181},[2557],{"type":51,"value":200},{"type":45,"tag":155,"props":2559,"children":2560},{"style":181},[2561],{"type":51,"value":957},{"type":45,"tag":155,"props":2563,"children":2564},{"class":157,"line":334},[2565,2569,2573,2577,2581,2585,2589],{"type":45,"tag":155,"props":2566,"children":2567},{"style":181},[2568],{"type":51,"value":671},{"type":45,"tag":155,"props":2570,"children":2571},{"style":217},[2572],{"type":51,"value":220},{"type":45,"tag":155,"props":2574,"children":2575},{"style":181},[2576],{"type":51,"value":200},{"type":45,"tag":155,"props":2578,"children":2579},{"style":181},[2580],{"type":51,"value":205},{"type":45,"tag":155,"props":2582,"children":2583},{"style":181},[2584],{"type":51,"value":189},{"type":45,"tag":155,"props":2586,"children":2587},{"style":235},[2588],{"type":51,"value":238},{"type":45,"tag":155,"props":2590,"children":2591},{"style":181},[2592],{"type":51,"value":1026},{"type":45,"tag":155,"props":2594,"children":2595},{"class":157,"line":343},[2596],{"type":45,"tag":155,"props":2597,"children":2598},{"style":181},[2599],{"type":51,"value":867},{"type":45,"tag":155,"props":2601,"children":2602},{"class":157,"line":472},[2603],{"type":45,"tag":155,"props":2604,"children":2605},{"style":181},[2606],{"type":51,"value":875},{"type":45,"tag":54,"props":2608,"children":2609},{},[2610],{"type":45,"tag":70,"props":2611,"children":2612},{},[2613],{"type":51,"value":2614},"However, the fix depends on whether workspace dependencies are declared:",{"type":45,"tag":81,"props":2616,"children":2617},{},[2618,2651],{"type":45,"tag":85,"props":2619,"children":2620},{},[2621,2626,2628,2634,2636,2641,2643,2649],{"type":45,"tag":70,"props":2622,"children":2623},{},[2624],{"type":51,"value":2625},"If dependencies ARE declared",{"type":51,"value":2627}," (e.g., ",{"type":45,"tag":91,"props":2629,"children":2631},{"className":2630},[],[2632],{"type":51,"value":2633},"\"@repo\u002Ftypes\": \"workspace:*\"",{"type":51,"value":2635}," in package.json), remove the ",{"type":45,"tag":91,"props":2637,"children":2639},{"className":2638},[],[2640],{"type":51,"value":2466},{"type":51,"value":2642}," script. Turbo's ",{"type":45,"tag":91,"props":2644,"children":2646},{"className":2645},[],[2647],{"type":51,"value":2648},"dependsOn: [\"^build\"]",{"type":51,"value":2650}," handles this automatically.",{"type":45,"tag":85,"props":2652,"children":2653},{},[2654,2659,2661,2666,2668,2673,2675],{"type":45,"tag":70,"props":2655,"children":2656},{},[2657],{"type":51,"value":2658},"If dependencies are NOT declared",{"type":51,"value":2660},", the ",{"type":45,"tag":91,"props":2662,"children":2664},{"className":2663},[],[2665],{"type":51,"value":2466},{"type":51,"value":2667}," exists because ",{"type":45,"tag":91,"props":2669,"children":2671},{"className":2670},[],[2672],{"type":51,"value":719},{"type":51,"value":2674}," won't trigger without a dependency relationship. The fix is to:",{"type":45,"tag":2676,"props":2677,"children":2678},"ul",{},[2679,2689],{"type":45,"tag":85,"props":2680,"children":2681},{},[2682,2684],{"type":51,"value":2683},"Add the dependency to package.json: ",{"type":45,"tag":91,"props":2685,"children":2687},{"className":2686},[],[2688],{"type":51,"value":2633},{"type":45,"tag":85,"props":2690,"children":2691},{},[2692,2694,2699],{"type":51,"value":2693},"Then remove the ",{"type":45,"tag":91,"props":2695,"children":2697},{"className":2696},[],[2698],{"type":51,"value":2466},{"type":51,"value":2700}," script",{"type":45,"tag":144,"props":2702,"children":2704},{"className":146,"code":2703,"language":148,"meta":149,"style":149},"\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",[2705],{"type":45,"tag":91,"props":2706,"children":2707},{"__ignoreMap":149},[2708,2716,2724,2731,2755,2792,2824,2832,2855,2886,2893,2900,2907,2915,2922,2945,2969,3011,3020,3028],{"type":45,"tag":155,"props":2709,"children":2710},{"class":157,"line":158},[2711],{"type":45,"tag":155,"props":2712,"children":2713},{"style":162},[2714],{"type":51,"value":2715},"\u002F\u002F CORRECT - declare dependency, let turbo handle build order\n",{"type":45,"tag":155,"props":2717,"children":2718},{"class":157,"line":168},[2719],{"type":45,"tag":155,"props":2720,"children":2721},{"style":162},[2722],{"type":51,"value":2723},"\u002F\u002F package.json\n",{"type":45,"tag":155,"props":2725,"children":2726},{"class":157,"line":177},[2727],{"type":45,"tag":155,"props":2728,"children":2729},{"style":181},[2730],{"type":51,"value":637},{"type":45,"tag":155,"props":2732,"children":2733},{"class":157,"line":324},[2734,2738,2743,2747,2751],{"type":45,"tag":155,"props":2735,"children":2736},{"style":181},[2737],{"type":51,"value":645},{"type":45,"tag":155,"props":2739,"children":2740},{"style":192},[2741],{"type":51,"value":2742},"dependencies",{"type":45,"tag":155,"props":2744,"children":2745},{"style":181},[2746],{"type":51,"value":200},{"type":45,"tag":155,"props":2748,"children":2749},{"style":181},[2750],{"type":51,"value":205},{"type":45,"tag":155,"props":2752,"children":2753},{"style":181},[2754],{"type":51,"value":663},{"type":45,"tag":155,"props":2756,"children":2757},{"class":157,"line":334},[2758,2762,2767,2771,2775,2779,2784,2788],{"type":45,"tag":155,"props":2759,"children":2760},{"style":181},[2761],{"type":51,"value":671},{"type":45,"tag":155,"props":2763,"children":2764},{"style":217},[2765],{"type":51,"value":2766},"@repo\u002Ftypes",{"type":45,"tag":155,"props":2768,"children":2769},{"style":181},[2770],{"type":51,"value":200},{"type":45,"tag":155,"props":2772,"children":2773},{"style":181},[2774],{"type":51,"value":205},{"type":45,"tag":155,"props":2776,"children":2777},{"style":181},[2778],{"type":51,"value":189},{"type":45,"tag":155,"props":2780,"children":2781},{"style":235},[2782],{"type":51,"value":2783},"workspace:*",{"type":45,"tag":155,"props":2785,"children":2786},{"style":181},[2787],{"type":51,"value":200},{"type":45,"tag":155,"props":2789,"children":2790},{"style":181},[2791],{"type":51,"value":957},{"type":45,"tag":155,"props":2793,"children":2794},{"class":157,"line":343},[2795,2799,2804,2808,2812,2816,2820],{"type":45,"tag":155,"props":2796,"children":2797},{"style":181},[2798],{"type":51,"value":671},{"type":45,"tag":155,"props":2800,"children":2801},{"style":217},[2802],{"type":51,"value":2803},"@repo\u002Futils",{"type":45,"tag":155,"props":2805,"children":2806},{"style":181},[2807],{"type":51,"value":200},{"type":45,"tag":155,"props":2809,"children":2810},{"style":181},[2811],{"type":51,"value":205},{"type":45,"tag":155,"props":2813,"children":2814},{"style":181},[2815],{"type":51,"value":189},{"type":45,"tag":155,"props":2817,"children":2818},{"style":235},[2819],{"type":51,"value":2783},{"type":45,"tag":155,"props":2821,"children":2822},{"style":181},[2823],{"type":51,"value":1026},{"type":45,"tag":155,"props":2825,"children":2826},{"class":157,"line":472},[2827],{"type":45,"tag":155,"props":2828,"children":2829},{"style":181},[2830],{"type":51,"value":2831},"  },\n",{"type":45,"tag":155,"props":2833,"children":2834},{"class":157,"line":480},[2835,2839,2843,2847,2851],{"type":45,"tag":155,"props":2836,"children":2837},{"style":181},[2838],{"type":51,"value":645},{"type":45,"tag":155,"props":2840,"children":2841},{"style":192},[2842],{"type":51,"value":195},{"type":45,"tag":155,"props":2844,"children":2845},{"style":181},[2846],{"type":51,"value":200},{"type":45,"tag":155,"props":2848,"children":2849},{"style":181},[2850],{"type":51,"value":205},{"type":45,"tag":155,"props":2852,"children":2853},{"style":181},[2854],{"type":51,"value":663},{"type":45,"tag":155,"props":2856,"children":2857},{"class":157,"line":489},[2858,2862,2866,2870,2874,2878,2882],{"type":45,"tag":155,"props":2859,"children":2860},{"style":181},[2861],{"type":51,"value":671},{"type":45,"tag":155,"props":2863,"children":2864},{"style":217},[2865],{"type":51,"value":220},{"type":45,"tag":155,"props":2867,"children":2868},{"style":181},[2869],{"type":51,"value":200},{"type":45,"tag":155,"props":2871,"children":2872},{"style":181},[2873],{"type":51,"value":205},{"type":45,"tag":155,"props":2875,"children":2876},{"style":181},[2877],{"type":51,"value":189},{"type":45,"tag":155,"props":2879,"children":2880},{"style":235},[2881],{"type":51,"value":238},{"type":45,"tag":155,"props":2883,"children":2884},{"style":181},[2885],{"type":51,"value":1026},{"type":45,"tag":155,"props":2887,"children":2888},{"class":157,"line":1790},[2889],{"type":45,"tag":155,"props":2890,"children":2891},{"style":181},[2892],{"type":51,"value":867},{"type":45,"tag":155,"props":2894,"children":2895},{"class":157,"line":1798},[2896],{"type":45,"tag":155,"props":2897,"children":2898},{"style":181},[2899],{"type":51,"value":875},{"type":45,"tag":155,"props":2901,"children":2902},{"class":157,"line":1822},[2903],{"type":45,"tag":155,"props":2904,"children":2905},{"emptyLinePlaceholder":328},[2906],{"type":51,"value":331},{"type":45,"tag":155,"props":2908,"children":2909},{"class":157,"line":1858},[2910],{"type":45,"tag":155,"props":2911,"children":2912},{"style":162},[2913],{"type":51,"value":2914},"\u002F\u002F turbo.json\n",{"type":45,"tag":155,"props":2916,"children":2917},{"class":157,"line":1891},[2918],{"type":45,"tag":155,"props":2919,"children":2920},{"style":181},[2921],{"type":51,"value":637},{"type":45,"tag":155,"props":2923,"children":2924},{"class":157,"line":1899},[2925,2929,2933,2937,2941],{"type":45,"tag":155,"props":2926,"children":2927},{"style":181},[2928],{"type":51,"value":645},{"type":45,"tag":155,"props":2930,"children":2931},{"style":192},[2932],{"type":51,"value":650},{"type":45,"tag":155,"props":2934,"children":2935},{"style":181},[2936],{"type":51,"value":200},{"type":45,"tag":155,"props":2938,"children":2939},{"style":181},[2940],{"type":51,"value":205},{"type":45,"tag":155,"props":2942,"children":2943},{"style":181},[2944],{"type":51,"value":663},{"type":45,"tag":155,"props":2946,"children":2948},{"class":157,"line":2947},16,[2949,2953,2957,2961,2965],{"type":45,"tag":155,"props":2950,"children":2951},{"style":181},[2952],{"type":51,"value":671},{"type":45,"tag":155,"props":2954,"children":2955},{"style":217},[2956],{"type":51,"value":220},{"type":45,"tag":155,"props":2958,"children":2959},{"style":181},[2960],{"type":51,"value":200},{"type":45,"tag":155,"props":2962,"children":2963},{"style":181},[2964],{"type":51,"value":205},{"type":45,"tag":155,"props":2966,"children":2967},{"style":181},[2968],{"type":51,"value":663},{"type":45,"tag":155,"props":2970,"children":2972},{"class":157,"line":2971},17,[2973,2978,2982,2986,2990,2994,2998,3002,3006],{"type":45,"tag":155,"props":2974,"children":2975},{"style":181},[2976],{"type":51,"value":2977},"      \"",{"type":45,"tag":155,"props":2979,"children":2980},{"style":694},[2981],{"type":51,"value":697},{"type":45,"tag":155,"props":2983,"children":2984},{"style":181},[2985],{"type":51,"value":200},{"type":45,"tag":155,"props":2987,"children":2988},{"style":181},[2989],{"type":51,"value":205},{"type":45,"tag":155,"props":2991,"children":2992},{"style":181},[2993],{"type":51,"value":710},{"type":45,"tag":155,"props":2995,"children":2996},{"style":181},[2997],{"type":51,"value":200},{"type":45,"tag":155,"props":2999,"children":3000},{"style":235},[3001],{"type":51,"value":719},{"type":45,"tag":155,"props":3003,"children":3004},{"style":181},[3005],{"type":51,"value":200},{"type":45,"tag":155,"props":3007,"children":3008},{"style":181},[3009],{"type":51,"value":3010},"]\n",{"type":45,"tag":155,"props":3012,"children":3014},{"class":157,"line":3013},18,[3015],{"type":45,"tag":155,"props":3016,"children":3017},{"style":181},[3018],{"type":51,"value":3019},"    }\n",{"type":45,"tag":155,"props":3021,"children":3023},{"class":157,"line":3022},19,[3024],{"type":45,"tag":155,"props":3025,"children":3026},{"style":181},[3027],{"type":51,"value":867},{"type":45,"tag":155,"props":3029,"children":3031},{"class":157,"line":3030},20,[3032],{"type":45,"tag":155,"props":3033,"children":3034},{"style":181},[3035],{"type":51,"value":875},{"type":45,"tag":54,"props":3037,"children":3038},{},[3039,3044,3046,3051],{"type":45,"tag":70,"props":3040,"children":3041},{},[3042],{"type":51,"value":3043},"Key insight:",{"type":51,"value":3045}," ",{"type":45,"tag":91,"props":3047,"children":3049},{"className":3048},[],[3050],{"type":51,"value":719},{"type":51,"value":3052}," only runs build in packages listed as dependencies. No dependency declaration = no automatic build ordering.",{"type":45,"tag":1437,"props":3054,"children":3056},{"id":3055},"overly-broad-globaldependencies",[3057,3059],{"type":51,"value":3058},"Overly Broad ",{"type":45,"tag":91,"props":3060,"children":3062},{"className":3061},[],[3063],{"type":51,"value":3064},"globalDependencies",{"type":45,"tag":54,"props":3066,"children":3067},{},[3068,3073,3075,3080,3082,3088],{"type":45,"tag":91,"props":3069,"children":3071},{"className":3070},[],[3072],{"type":51,"value":3064},{"type":51,"value":3074}," affects ALL tasks in ALL packages via the ",{"type":45,"tag":70,"props":3076,"children":3077},{},[3078],{"type":51,"value":3079},"global hash",{"type":51,"value":3081}," — tasks cannot opt out of specific files, even with negation globs in ",{"type":45,"tag":91,"props":3083,"children":3085},{"className":3084},[],[3086],{"type":51,"value":3087},"inputs",{"type":51,"value":3089},". Be specific.",{"type":45,"tag":144,"props":3091,"children":3093},{"className":146,"code":3092,"language":148,"meta":149,"style":149},"\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",[3094],{"type":45,"tag":91,"props":3095,"children":3096},{"__ignoreMap":149},[3097,3105,3112,3152,3159,3166,3174,3181,3222,3245,3268,3325,3364,3371,3378],{"type":45,"tag":155,"props":3098,"children":3099},{"class":157,"line":158},[3100],{"type":45,"tag":155,"props":3101,"children":3102},{"style":162},[3103],{"type":51,"value":3104},"\u002F\u002F WRONG - heavy hammer, affects all hashes\n",{"type":45,"tag":155,"props":3106,"children":3107},{"class":157,"line":168},[3108],{"type":45,"tag":155,"props":3109,"children":3110},{"style":181},[3111],{"type":51,"value":637},{"type":45,"tag":155,"props":3113,"children":3114},{"class":157,"line":177},[3115,3119,3123,3127,3131,3135,3139,3144,3148],{"type":45,"tag":155,"props":3116,"children":3117},{"style":181},[3118],{"type":51,"value":645},{"type":45,"tag":155,"props":3120,"children":3121},{"style":192},[3122],{"type":51,"value":3064},{"type":45,"tag":155,"props":3124,"children":3125},{"style":181},[3126],{"type":51,"value":200},{"type":45,"tag":155,"props":3128,"children":3129},{"style":181},[3130],{"type":51,"value":205},{"type":45,"tag":155,"props":3132,"children":3133},{"style":181},[3134],{"type":51,"value":710},{"type":45,"tag":155,"props":3136,"children":3137},{"style":181},[3138],{"type":51,"value":200},{"type":45,"tag":155,"props":3140,"children":3141},{"style":235},[3142],{"type":51,"value":3143},"**\u002F.env.*local",{"type":45,"tag":155,"props":3145,"children":3146},{"style":181},[3147],{"type":51,"value":200},{"type":45,"tag":155,"props":3149,"children":3150},{"style":181},[3151],{"type":51,"value":3010},{"type":45,"tag":155,"props":3153,"children":3154},{"class":157,"line":324},[3155],{"type":45,"tag":155,"props":3156,"children":3157},{"style":181},[3158],{"type":51,"value":875},{"type":45,"tag":155,"props":3160,"children":3161},{"class":157,"line":334},[3162],{"type":45,"tag":155,"props":3163,"children":3164},{"emptyLinePlaceholder":328},[3165],{"type":51,"value":331},{"type":45,"tag":155,"props":3167,"children":3168},{"class":157,"line":343},[3169],{"type":45,"tag":155,"props":3170,"children":3171},{"style":162},[3172],{"type":51,"value":3173},"\u002F\u002F BETTER - move to task-level inputs\n",{"type":45,"tag":155,"props":3175,"children":3176},{"class":157,"line":472},[3177],{"type":45,"tag":155,"props":3178,"children":3179},{"style":181},[3180],{"type":51,"value":637},{"type":45,"tag":155,"props":3182,"children":3183},{"class":157,"line":480},[3184,3188,3192,3196,3200,3204,3208,3213,3217],{"type":45,"tag":155,"props":3185,"children":3186},{"style":181},[3187],{"type":51,"value":645},{"type":45,"tag":155,"props":3189,"children":3190},{"style":192},[3191],{"type":51,"value":3064},{"type":45,"tag":155,"props":3193,"children":3194},{"style":181},[3195],{"type":51,"value":200},{"type":45,"tag":155,"props":3197,"children":3198},{"style":181},[3199],{"type":51,"value":205},{"type":45,"tag":155,"props":3201,"children":3202},{"style":181},[3203],{"type":51,"value":710},{"type":45,"tag":155,"props":3205,"children":3206},{"style":181},[3207],{"type":51,"value":200},{"type":45,"tag":155,"props":3209,"children":3210},{"style":235},[3211],{"type":51,"value":3212},".env",{"type":45,"tag":155,"props":3214,"children":3215},{"style":181},[3216],{"type":51,"value":200},{"type":45,"tag":155,"props":3218,"children":3219},{"style":181},[3220],{"type":51,"value":3221},"],\n",{"type":45,"tag":155,"props":3223,"children":3224},{"class":157,"line":489},[3225,3229,3233,3237,3241],{"type":45,"tag":155,"props":3226,"children":3227},{"style":181},[3228],{"type":51,"value":645},{"type":45,"tag":155,"props":3230,"children":3231},{"style":192},[3232],{"type":51,"value":650},{"type":45,"tag":155,"props":3234,"children":3235},{"style":181},[3236],{"type":51,"value":200},{"type":45,"tag":155,"props":3238,"children":3239},{"style":181},[3240],{"type":51,"value":205},{"type":45,"tag":155,"props":3242,"children":3243},{"style":181},[3244],{"type":51,"value":663},{"type":45,"tag":155,"props":3246,"children":3247},{"class":157,"line":1790},[3248,3252,3256,3260,3264],{"type":45,"tag":155,"props":3249,"children":3250},{"style":181},[3251],{"type":51,"value":671},{"type":45,"tag":155,"props":3253,"children":3254},{"style":217},[3255],{"type":51,"value":220},{"type":45,"tag":155,"props":3257,"children":3258},{"style":181},[3259],{"type":51,"value":200},{"type":45,"tag":155,"props":3261,"children":3262},{"style":181},[3263],{"type":51,"value":205},{"type":45,"tag":155,"props":3265,"children":3266},{"style":181},[3267],{"type":51,"value":663},{"type":45,"tag":155,"props":3269,"children":3270},{"class":157,"line":1798},[3271,3275,3279,3283,3287,3291,3295,3300,3304,3308,3312,3317,3321],{"type":45,"tag":155,"props":3272,"children":3273},{"style":181},[3274],{"type":51,"value":2977},{"type":45,"tag":155,"props":3276,"children":3277},{"style":694},[3278],{"type":51,"value":3087},{"type":45,"tag":155,"props":3280,"children":3281},{"style":181},[3282],{"type":51,"value":200},{"type":45,"tag":155,"props":3284,"children":3285},{"style":181},[3286],{"type":51,"value":205},{"type":45,"tag":155,"props":3288,"children":3289},{"style":181},[3290],{"type":51,"value":710},{"type":45,"tag":155,"props":3292,"children":3293},{"style":181},[3294],{"type":51,"value":200},{"type":45,"tag":155,"props":3296,"children":3297},{"style":235},[3298],{"type":51,"value":3299},"$TURBO_DEFAULT$",{"type":45,"tag":155,"props":3301,"children":3302},{"style":181},[3303],{"type":51,"value":200},{"type":45,"tag":155,"props":3305,"children":3306},{"style":181},[3307],{"type":51,"value":247},{"type":45,"tag":155,"props":3309,"children":3310},{"style":181},[3311],{"type":51,"value":189},{"type":45,"tag":155,"props":3313,"children":3314},{"style":235},[3315],{"type":51,"value":3316},".env*",{"type":45,"tag":155,"props":3318,"children":3319},{"style":181},[3320],{"type":51,"value":200},{"type":45,"tag":155,"props":3322,"children":3323},{"style":181},[3324],{"type":51,"value":3221},{"type":45,"tag":155,"props":3326,"children":3327},{"class":157,"line":1822},[3328,3332,3336,3340,3344,3348,3352,3356,3360],{"type":45,"tag":155,"props":3329,"children":3330},{"style":181},[3331],{"type":51,"value":2977},{"type":45,"tag":155,"props":3333,"children":3334},{"style":694},[3335],{"type":51,"value":737},{"type":45,"tag":155,"props":3337,"children":3338},{"style":181},[3339],{"type":51,"value":200},{"type":45,"tag":155,"props":3341,"children":3342},{"style":181},[3343],{"type":51,"value":205},{"type":45,"tag":155,"props":3345,"children":3346},{"style":181},[3347],{"type":51,"value":710},{"type":45,"tag":155,"props":3349,"children":3350},{"style":181},[3351],{"type":51,"value":200},{"type":45,"tag":155,"props":3353,"children":3354},{"style":235},[3355],{"type":51,"value":758},{"type":45,"tag":155,"props":3357,"children":3358},{"style":181},[3359],{"type":51,"value":200},{"type":45,"tag":155,"props":3361,"children":3362},{"style":181},[3363],{"type":51,"value":3010},{"type":45,"tag":155,"props":3365,"children":3366},{"class":157,"line":1858},[3367],{"type":45,"tag":155,"props":3368,"children":3369},{"style":181},[3370],{"type":51,"value":3019},{"type":45,"tag":155,"props":3372,"children":3373},{"class":157,"line":1891},[3374],{"type":45,"tag":155,"props":3375,"children":3376},{"style":181},[3377],{"type":51,"value":867},{"type":45,"tag":155,"props":3379,"children":3380},{"class":157,"line":1899},[3381],{"type":45,"tag":155,"props":3382,"children":3383},{"style":181},[3384],{"type":51,"value":875},{"type":45,"tag":54,"props":3386,"children":3387},{},[3388,3390,3396,3398,3404],{"type":51,"value":3389},"With ",{"type":45,"tag":91,"props":3391,"children":3393},{"className":3392},[],[3394],{"type":51,"value":3395},"futureFlags.globalConfiguration",{"type":51,"value":3397},", this problem is reduced because ",{"type":45,"tag":91,"props":3399,"children":3401},{"className":3400},[],[3402],{"type":51,"value":3403},"global.inputs",{"type":51,"value":3405}," files are folded into each task's inputs (not the global hash). Tasks can exclude specific files:",{"type":45,"tag":144,"props":3407,"children":3409},{"className":146,"code":3408,"language":148,"meta":149,"style":149},"\u002F\u002F BEST - global.inputs with per-task exclusion\n{\n  \"futureFlags\": { \"globalConfiguration\": true },\n  \"global\": {\n    \"inputs\": [\".env\"]\n  },\n  \"tasks\": {\n    \"build\": { \"outputs\": [\"dist\u002F**\"] },\n    \"lint\": {\n      \"inputs\": [\"$TURBO_DEFAULT$\", \"!$TURBO_ROOT$\u002F.env\"]\n    }\n  }\n}\n",[3410],{"type":45,"tag":91,"props":3411,"children":3412},{"__ignoreMap":149},[3413,3421,3428,3478,3502,3541,3548,3571,3634,3657,3713,3720,3727],{"type":45,"tag":155,"props":3414,"children":3415},{"class":157,"line":158},[3416],{"type":45,"tag":155,"props":3417,"children":3418},{"style":162},[3419],{"type":51,"value":3420},"\u002F\u002F BEST - global.inputs with per-task exclusion\n",{"type":45,"tag":155,"props":3422,"children":3423},{"class":157,"line":168},[3424],{"type":45,"tag":155,"props":3425,"children":3426},{"style":181},[3427],{"type":51,"value":637},{"type":45,"tag":155,"props":3429,"children":3430},{"class":157,"line":177},[3431,3435,3440,3444,3448,3452,3456,3461,3465,3469,3474],{"type":45,"tag":155,"props":3432,"children":3433},{"style":181},[3434],{"type":51,"value":645},{"type":45,"tag":155,"props":3436,"children":3437},{"style":192},[3438],{"type":51,"value":3439},"futureFlags",{"type":45,"tag":155,"props":3441,"children":3442},{"style":181},[3443],{"type":51,"value":200},{"type":45,"tag":155,"props":3445,"children":3446},{"style":181},[3447],{"type":51,"value":205},{"type":45,"tag":155,"props":3449,"children":3450},{"style":181},[3451],{"type":51,"value":210},{"type":45,"tag":155,"props":3453,"children":3454},{"style":181},[3455],{"type":51,"value":189},{"type":45,"tag":155,"props":3457,"children":3458},{"style":217},[3459],{"type":51,"value":3460},"globalConfiguration",{"type":45,"tag":155,"props":3462,"children":3463},{"style":181},[3464],{"type":51,"value":200},{"type":45,"tag":155,"props":3466,"children":3467},{"style":181},[3468],{"type":51,"value":205},{"type":45,"tag":155,"props":3470,"children":3471},{"style":181},[3472],{"type":51,"value":3473}," true",{"type":45,"tag":155,"props":3475,"children":3476},{"style":181},[3477],{"type":51,"value":772},{"type":45,"tag":155,"props":3479,"children":3480},{"class":157,"line":324},[3481,3485,3490,3494,3498],{"type":45,"tag":155,"props":3482,"children":3483},{"style":181},[3484],{"type":51,"value":645},{"type":45,"tag":155,"props":3486,"children":3487},{"style":192},[3488],{"type":51,"value":3489},"global",{"type":45,"tag":155,"props":3491,"children":3492},{"style":181},[3493],{"type":51,"value":200},{"type":45,"tag":155,"props":3495,"children":3496},{"style":181},[3497],{"type":51,"value":205},{"type":45,"tag":155,"props":3499,"children":3500},{"style":181},[3501],{"type":51,"value":663},{"type":45,"tag":155,"props":3503,"children":3504},{"class":157,"line":334},[3505,3509,3513,3517,3521,3525,3529,3533,3537],{"type":45,"tag":155,"props":3506,"children":3507},{"style":181},[3508],{"type":51,"value":671},{"type":45,"tag":155,"props":3510,"children":3511},{"style":217},[3512],{"type":51,"value":3087},{"type":45,"tag":155,"props":3514,"children":3515},{"style":181},[3516],{"type":51,"value":200},{"type":45,"tag":155,"props":3518,"children":3519},{"style":181},[3520],{"type":51,"value":205},{"type":45,"tag":155,"props":3522,"children":3523},{"style":181},[3524],{"type":51,"value":710},{"type":45,"tag":155,"props":3526,"children":3527},{"style":181},[3528],{"type":51,"value":200},{"type":45,"tag":155,"props":3530,"children":3531},{"style":235},[3532],{"type":51,"value":3212},{"type":45,"tag":155,"props":3534,"children":3535},{"style":181},[3536],{"type":51,"value":200},{"type":45,"tag":155,"props":3538,"children":3539},{"style":181},[3540],{"type":51,"value":3010},{"type":45,"tag":155,"props":3542,"children":3543},{"class":157,"line":343},[3544],{"type":45,"tag":155,"props":3545,"children":3546},{"style":181},[3547],{"type":51,"value":2831},{"type":45,"tag":155,"props":3549,"children":3550},{"class":157,"line":472},[3551,3555,3559,3563,3567],{"type":45,"tag":155,"props":3552,"children":3553},{"style":181},[3554],{"type":51,"value":645},{"type":45,"tag":155,"props":3556,"children":3557},{"style":192},[3558],{"type":51,"value":650},{"type":45,"tag":155,"props":3560,"children":3561},{"style":181},[3562],{"type":51,"value":200},{"type":45,"tag":155,"props":3564,"children":3565},{"style":181},[3566],{"type":51,"value":205},{"type":45,"tag":155,"props":3568,"children":3569},{"style":181},[3570],{"type":51,"value":663},{"type":45,"tag":155,"props":3572,"children":3573},{"class":157,"line":480},[3574,3578,3582,3586,3590,3594,3598,3602,3606,3610,3614,3618,3622,3626,3630],{"type":45,"tag":155,"props":3575,"children":3576},{"style":181},[3577],{"type":51,"value":671},{"type":45,"tag":155,"props":3579,"children":3580},{"style":217},[3581],{"type":51,"value":220},{"type":45,"tag":155,"props":3583,"children":3584},{"style":181},[3585],{"type":51,"value":200},{"type":45,"tag":155,"props":3587,"children":3588},{"style":181},[3589],{"type":51,"value":205},{"type":45,"tag":155,"props":3591,"children":3592},{"style":181},[3593],{"type":51,"value":210},{"type":45,"tag":155,"props":3595,"children":3596},{"style":181},[3597],{"type":51,"value":189},{"type":45,"tag":155,"props":3599,"children":3600},{"style":694},[3601],{"type":51,"value":737},{"type":45,"tag":155,"props":3603,"children":3604},{"style":181},[3605],{"type":51,"value":200},{"type":45,"tag":155,"props":3607,"children":3608},{"style":181},[3609],{"type":51,"value":205},{"type":45,"tag":155,"props":3611,"children":3612},{"style":181},[3613],{"type":51,"value":710},{"type":45,"tag":155,"props":3615,"children":3616},{"style":181},[3617],{"type":51,"value":200},{"type":45,"tag":155,"props":3619,"children":3620},{"style":235},[3621],{"type":51,"value":758},{"type":45,"tag":155,"props":3623,"children":3624},{"style":181},[3625],{"type":51,"value":200},{"type":45,"tag":155,"props":3627,"children":3628},{"style":181},[3629],{"type":51,"value":767},{"type":45,"tag":155,"props":3631,"children":3632},{"style":181},[3633],{"type":51,"value":772},{"type":45,"tag":155,"props":3635,"children":3636},{"class":157,"line":489},[3637,3641,3645,3649,3653],{"type":45,"tag":155,"props":3638,"children":3639},{"style":181},[3640],{"type":51,"value":671},{"type":45,"tag":155,"props":3642,"children":3643},{"style":217},[3644],{"type":51,"value":256},{"type":45,"tag":155,"props":3646,"children":3647},{"style":181},[3648],{"type":51,"value":200},{"type":45,"tag":155,"props":3650,"children":3651},{"style":181},[3652],{"type":51,"value":205},{"type":45,"tag":155,"props":3654,"children":3655},{"style":181},[3656],{"type":51,"value":663},{"type":45,"tag":155,"props":3658,"children":3659},{"class":157,"line":1790},[3660,3664,3668,3672,3676,3680,3684,3688,3692,3696,3700,3705,3709],{"type":45,"tag":155,"props":3661,"children":3662},{"style":181},[3663],{"type":51,"value":2977},{"type":45,"tag":155,"props":3665,"children":3666},{"style":694},[3667],{"type":51,"value":3087},{"type":45,"tag":155,"props":3669,"children":3670},{"style":181},[3671],{"type":51,"value":200},{"type":45,"tag":155,"props":3673,"children":3674},{"style":181},[3675],{"type":51,"value":205},{"type":45,"tag":155,"props":3677,"children":3678},{"style":181},[3679],{"type":51,"value":710},{"type":45,"tag":155,"props":3681,"children":3682},{"style":181},[3683],{"type":51,"value":200},{"type":45,"tag":155,"props":3685,"children":3686},{"style":235},[3687],{"type":51,"value":3299},{"type":45,"tag":155,"props":3689,"children":3690},{"style":181},[3691],{"type":51,"value":200},{"type":45,"tag":155,"props":3693,"children":3694},{"style":181},[3695],{"type":51,"value":247},{"type":45,"tag":155,"props":3697,"children":3698},{"style":181},[3699],{"type":51,"value":189},{"type":45,"tag":155,"props":3701,"children":3702},{"style":235},[3703],{"type":51,"value":3704},"!$TURBO_ROOT$\u002F.env",{"type":45,"tag":155,"props":3706,"children":3707},{"style":181},[3708],{"type":51,"value":200},{"type":45,"tag":155,"props":3710,"children":3711},{"style":181},[3712],{"type":51,"value":3010},{"type":45,"tag":155,"props":3714,"children":3715},{"class":157,"line":1798},[3716],{"type":45,"tag":155,"props":3717,"children":3718},{"style":181},[3719],{"type":51,"value":3019},{"type":45,"tag":155,"props":3721,"children":3722},{"class":157,"line":1822},[3723],{"type":45,"tag":155,"props":3724,"children":3725},{"style":181},[3726],{"type":51,"value":867},{"type":45,"tag":155,"props":3728,"children":3729},{"class":157,"line":1858},[3730],{"type":45,"tag":155,"props":3731,"children":3732},{"style":181},[3733],{"type":51,"value":875},{"type":45,"tag":1437,"props":3735,"children":3737},{"id":3736},"repetitive-task-configuration",[3738],{"type":51,"value":3739},"Repetitive Task Configuration",{"type":45,"tag":54,"props":3741,"children":3742},{},[3743],{"type":51,"value":3744},"Look for repeated configuration across tasks that can be collapsed. Turborepo supports shared configuration patterns.",{"type":45,"tag":144,"props":3746,"children":3748},{"className":146,"code":3747,"language":148,"meta":149,"style":149},"\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",[3749],{"type":45,"tag":91,"props":3750,"children":3751},{"__ignoreMap":149},[3752,3760,3767,3790,3813,3871,3926,3934,3957,4012,4067,4074,4097,4152,4207,4232,4257,4264,4271,4278,4285,4294,4302,4359,4399,4423,4447,4471,4495,4519,4543,4551,4559],{"type":45,"tag":155,"props":3753,"children":3754},{"class":157,"line":158},[3755],{"type":45,"tag":155,"props":3756,"children":3757},{"style":162},[3758],{"type":51,"value":3759},"\u002F\u002F WRONG - repetitive env and inputs across tasks\n",{"type":45,"tag":155,"props":3761,"children":3762},{"class":157,"line":168},[3763],{"type":45,"tag":155,"props":3764,"children":3765},{"style":181},[3766],{"type":51,"value":637},{"type":45,"tag":155,"props":3768,"children":3769},{"class":157,"line":177},[3770,3774,3778,3782,3786],{"type":45,"tag":155,"props":3771,"children":3772},{"style":181},[3773],{"type":51,"value":645},{"type":45,"tag":155,"props":3775,"children":3776},{"style":192},[3777],{"type":51,"value":650},{"type":45,"tag":155,"props":3779,"children":3780},{"style":181},[3781],{"type":51,"value":200},{"type":45,"tag":155,"props":3783,"children":3784},{"style":181},[3785],{"type":51,"value":205},{"type":45,"tag":155,"props":3787,"children":3788},{"style":181},[3789],{"type":51,"value":663},{"type":45,"tag":155,"props":3791,"children":3792},{"class":157,"line":324},[3793,3797,3801,3805,3809],{"type":45,"tag":155,"props":3794,"children":3795},{"style":181},[3796],{"type":51,"value":671},{"type":45,"tag":155,"props":3798,"children":3799},{"style":217},[3800],{"type":51,"value":220},{"type":45,"tag":155,"props":3802,"children":3803},{"style":181},[3804],{"type":51,"value":200},{"type":45,"tag":155,"props":3806,"children":3807},{"style":181},[3808],{"type":51,"value":205},{"type":45,"tag":155,"props":3810,"children":3811},{"style":181},[3812],{"type":51,"value":663},{"type":45,"tag":155,"props":3814,"children":3815},{"class":157,"line":334},[3816,3820,3825,3829,3833,3837,3841,3846,3850,3854,3858,3863,3867],{"type":45,"tag":155,"props":3817,"children":3818},{"style":181},[3819],{"type":51,"value":2977},{"type":45,"tag":155,"props":3821,"children":3822},{"style":694},[3823],{"type":51,"value":3824},"env",{"type":45,"tag":155,"props":3826,"children":3827},{"style":181},[3828],{"type":51,"value":200},{"type":45,"tag":155,"props":3830,"children":3831},{"style":181},[3832],{"type":51,"value":205},{"type":45,"tag":155,"props":3834,"children":3835},{"style":181},[3836],{"type":51,"value":710},{"type":45,"tag":155,"props":3838,"children":3839},{"style":181},[3840],{"type":51,"value":200},{"type":45,"tag":155,"props":3842,"children":3843},{"style":235},[3844],{"type":51,"value":3845},"API_URL",{"type":45,"tag":155,"props":3847,"children":3848},{"style":181},[3849],{"type":51,"value":200},{"type":45,"tag":155,"props":3851,"children":3852},{"style":181},[3853],{"type":51,"value":247},{"type":45,"tag":155,"props":3855,"children":3856},{"style":181},[3857],{"type":51,"value":189},{"type":45,"tag":155,"props":3859,"children":3860},{"style":235},[3861],{"type":51,"value":3862},"DATABASE_URL",{"type":45,"tag":155,"props":3864,"children":3865},{"style":181},[3866],{"type":51,"value":200},{"type":45,"tag":155,"props":3868,"children":3869},{"style":181},[3870],{"type":51,"value":3221},{"type":45,"tag":155,"props":3872,"children":3873},{"class":157,"line":343},[3874,3878,3882,3886,3890,3894,3898,3902,3906,3910,3914,3918,3922],{"type":45,"tag":155,"props":3875,"children":3876},{"style":181},[3877],{"type":51,"value":2977},{"type":45,"tag":155,"props":3879,"children":3880},{"style":694},[3881],{"type":51,"value":3087},{"type":45,"tag":155,"props":3883,"children":3884},{"style":181},[3885],{"type":51,"value":200},{"type":45,"tag":155,"props":3887,"children":3888},{"style":181},[3889],{"type":51,"value":205},{"type":45,"tag":155,"props":3891,"children":3892},{"style":181},[3893],{"type":51,"value":710},{"type":45,"tag":155,"props":3895,"children":3896},{"style":181},[3897],{"type":51,"value":200},{"type":45,"tag":155,"props":3899,"children":3900},{"style":235},[3901],{"type":51,"value":3299},{"type":45,"tag":155,"props":3903,"children":3904},{"style":181},[3905],{"type":51,"value":200},{"type":45,"tag":155,"props":3907,"children":3908},{"style":181},[3909],{"type":51,"value":247},{"type":45,"tag":155,"props":3911,"children":3912},{"style":181},[3913],{"type":51,"value":189},{"type":45,"tag":155,"props":3915,"children":3916},{"style":235},[3917],{"type":51,"value":3316},{"type":45,"tag":155,"props":3919,"children":3920},{"style":181},[3921],{"type":51,"value":200},{"type":45,"tag":155,"props":3923,"children":3924},{"style":181},[3925],{"type":51,"value":3010},{"type":45,"tag":155,"props":3927,"children":3928},{"class":157,"line":472},[3929],{"type":45,"tag":155,"props":3930,"children":3931},{"style":181},[3932],{"type":51,"value":3933},"    },\n",{"type":45,"tag":155,"props":3935,"children":3936},{"class":157,"line":480},[3937,3941,3945,3949,3953],{"type":45,"tag":155,"props":3938,"children":3939},{"style":181},[3940],{"type":51,"value":671},{"type":45,"tag":155,"props":3942,"children":3943},{"style":217},[3944],{"type":51,"value":290},{"type":45,"tag":155,"props":3946,"children":3947},{"style":181},[3948],{"type":51,"value":200},{"type":45,"tag":155,"props":3950,"children":3951},{"style":181},[3952],{"type":51,"value":205},{"type":45,"tag":155,"props":3954,"children":3955},{"style":181},[3956],{"type":51,"value":663},{"type":45,"tag":155,"props":3958,"children":3959},{"class":157,"line":489},[3960,3964,3968,3972,3976,3980,3984,3988,3992,3996,4000,4004,4008],{"type":45,"tag":155,"props":3961,"children":3962},{"style":181},[3963],{"type":51,"value":2977},{"type":45,"tag":155,"props":3965,"children":3966},{"style":694},[3967],{"type":51,"value":3824},{"type":45,"tag":155,"props":3969,"children":3970},{"style":181},[3971],{"type":51,"value":200},{"type":45,"tag":155,"props":3973,"children":3974},{"style":181},[3975],{"type":51,"value":205},{"type":45,"tag":155,"props":3977,"children":3978},{"style":181},[3979],{"type":51,"value":710},{"type":45,"tag":155,"props":3981,"children":3982},{"style":181},[3983],{"type":51,"value":200},{"type":45,"tag":155,"props":3985,"children":3986},{"style":235},[3987],{"type":51,"value":3845},{"type":45,"tag":155,"props":3989,"children":3990},{"style":181},[3991],{"type":51,"value":200},{"type":45,"tag":155,"props":3993,"children":3994},{"style":181},[3995],{"type":51,"value":247},{"type":45,"tag":155,"props":3997,"children":3998},{"style":181},[3999],{"type":51,"value":189},{"type":45,"tag":155,"props":4001,"children":4002},{"style":235},[4003],{"type":51,"value":3862},{"type":45,"tag":155,"props":4005,"children":4006},{"style":181},[4007],{"type":51,"value":200},{"type":45,"tag":155,"props":4009,"children":4010},{"style":181},[4011],{"type":51,"value":3221},{"type":45,"tag":155,"props":4013,"children":4014},{"class":157,"line":1790},[4015,4019,4023,4027,4031,4035,4039,4043,4047,4051,4055,4059,4063],{"type":45,"tag":155,"props":4016,"children":4017},{"style":181},[4018],{"type":51,"value":2977},{"type":45,"tag":155,"props":4020,"children":4021},{"style":694},[4022],{"type":51,"value":3087},{"type":45,"tag":155,"props":4024,"children":4025},{"style":181},[4026],{"type":51,"value":200},{"type":45,"tag":155,"props":4028,"children":4029},{"style":181},[4030],{"type":51,"value":205},{"type":45,"tag":155,"props":4032,"children":4033},{"style":181},[4034],{"type":51,"value":710},{"type":45,"tag":155,"props":4036,"children":4037},{"style":181},[4038],{"type":51,"value":200},{"type":45,"tag":155,"props":4040,"children":4041},{"style":235},[4042],{"type":51,"value":3299},{"type":45,"tag":155,"props":4044,"children":4045},{"style":181},[4046],{"type":51,"value":200},{"type":45,"tag":155,"props":4048,"children":4049},{"style":181},[4050],{"type":51,"value":247},{"type":45,"tag":155,"props":4052,"children":4053},{"style":181},[4054],{"type":51,"value":189},{"type":45,"tag":155,"props":4056,"children":4057},{"style":235},[4058],{"type":51,"value":3316},{"type":45,"tag":155,"props":4060,"children":4061},{"style":181},[4062],{"type":51,"value":200},{"type":45,"tag":155,"props":4064,"children":4065},{"style":181},[4066],{"type":51,"value":3010},{"type":45,"tag":155,"props":4068,"children":4069},{"class":157,"line":1798},[4070],{"type":45,"tag":155,"props":4071,"children":4072},{"style":181},[4073],{"type":51,"value":3933},{"type":45,"tag":155,"props":4075,"children":4076},{"class":157,"line":1822},[4077,4081,4085,4089,4093],{"type":45,"tag":155,"props":4078,"children":4079},{"style":181},[4080],{"type":51,"value":671},{"type":45,"tag":155,"props":4082,"children":4083},{"style":217},[4084],{"type":51,"value":1737},{"type":45,"tag":155,"props":4086,"children":4087},{"style":181},[4088],{"type":51,"value":200},{"type":45,"tag":155,"props":4090,"children":4091},{"style":181},[4092],{"type":51,"value":205},{"type":45,"tag":155,"props":4094,"children":4095},{"style":181},[4096],{"type":51,"value":663},{"type":45,"tag":155,"props":4098,"children":4099},{"class":157,"line":1858},[4100,4104,4108,4112,4116,4120,4124,4128,4132,4136,4140,4144,4148],{"type":45,"tag":155,"props":4101,"children":4102},{"style":181},[4103],{"type":51,"value":2977},{"type":45,"tag":155,"props":4105,"children":4106},{"style":694},[4107],{"type":51,"value":3824},{"type":45,"tag":155,"props":4109,"children":4110},{"style":181},[4111],{"type":51,"value":200},{"type":45,"tag":155,"props":4113,"children":4114},{"style":181},[4115],{"type":51,"value":205},{"type":45,"tag":155,"props":4117,"children":4118},{"style":181},[4119],{"type":51,"value":710},{"type":45,"tag":155,"props":4121,"children":4122},{"style":181},[4123],{"type":51,"value":200},{"type":45,"tag":155,"props":4125,"children":4126},{"style":235},[4127],{"type":51,"value":3845},{"type":45,"tag":155,"props":4129,"children":4130},{"style":181},[4131],{"type":51,"value":200},{"type":45,"tag":155,"props":4133,"children":4134},{"style":181},[4135],{"type":51,"value":247},{"type":45,"tag":155,"props":4137,"children":4138},{"style":181},[4139],{"type":51,"value":189},{"type":45,"tag":155,"props":4141,"children":4142},{"style":235},[4143],{"type":51,"value":3862},{"type":45,"tag":155,"props":4145,"children":4146},{"style":181},[4147],{"type":51,"value":200},{"type":45,"tag":155,"props":4149,"children":4150},{"style":181},[4151],{"type":51,"value":3221},{"type":45,"tag":155,"props":4153,"children":4154},{"class":157,"line":1891},[4155,4159,4163,4167,4171,4175,4179,4183,4187,4191,4195,4199,4203],{"type":45,"tag":155,"props":4156,"children":4157},{"style":181},[4158],{"type":51,"value":2977},{"type":45,"tag":155,"props":4160,"children":4161},{"style":694},[4162],{"type":51,"value":3087},{"type":45,"tag":155,"props":4164,"children":4165},{"style":181},[4166],{"type":51,"value":200},{"type":45,"tag":155,"props":4168,"children":4169},{"style":181},[4170],{"type":51,"value":205},{"type":45,"tag":155,"props":4172,"children":4173},{"style":181},[4174],{"type":51,"value":710},{"type":45,"tag":155,"props":4176,"children":4177},{"style":181},[4178],{"type":51,"value":200},{"type":45,"tag":155,"props":4180,"children":4181},{"style":235},[4182],{"type":51,"value":3299},{"type":45,"tag":155,"props":4184,"children":4185},{"style":181},[4186],{"type":51,"value":200},{"type":45,"tag":155,"props":4188,"children":4189},{"style":181},[4190],{"type":51,"value":247},{"type":45,"tag":155,"props":4192,"children":4193},{"style":181},[4194],{"type":51,"value":189},{"type":45,"tag":155,"props":4196,"children":4197},{"style":235},[4198],{"type":51,"value":3316},{"type":45,"tag":155,"props":4200,"children":4201},{"style":181},[4202],{"type":51,"value":200},{"type":45,"tag":155,"props":4204,"children":4205},{"style":181},[4206],{"type":51,"value":3221},{"type":45,"tag":155,"props":4208,"children":4209},{"class":157,"line":1899},[4210,4214,4219,4223,4227],{"type":45,"tag":155,"props":4211,"children":4212},{"style":181},[4213],{"type":51,"value":2977},{"type":45,"tag":155,"props":4215,"children":4216},{"style":694},[4217],{"type":51,"value":4218},"cache",{"type":45,"tag":155,"props":4220,"children":4221},{"style":181},[4222],{"type":51,"value":200},{"type":45,"tag":155,"props":4224,"children":4225},{"style":181},[4226],{"type":51,"value":205},{"type":45,"tag":155,"props":4228,"children":4229},{"style":181},[4230],{"type":51,"value":4231}," false,\n",{"type":45,"tag":155,"props":4233,"children":4234},{"class":157,"line":2947},[4235,4239,4244,4248,4252],{"type":45,"tag":155,"props":4236,"children":4237},{"style":181},[4238],{"type":51,"value":2977},{"type":45,"tag":155,"props":4240,"children":4241},{"style":694},[4242],{"type":51,"value":4243},"persistent",{"type":45,"tag":155,"props":4245,"children":4246},{"style":181},[4247],{"type":51,"value":200},{"type":45,"tag":155,"props":4249,"children":4250},{"style":181},[4251],{"type":51,"value":205},{"type":45,"tag":155,"props":4253,"children":4254},{"style":181},[4255],{"type":51,"value":4256}," true\n",{"type":45,"tag":155,"props":4258,"children":4259},{"class":157,"line":2971},[4260],{"type":45,"tag":155,"props":4261,"children":4262},{"style":181},[4263],{"type":51,"value":3019},{"type":45,"tag":155,"props":4265,"children":4266},{"class":157,"line":3013},[4267],{"type":45,"tag":155,"props":4268,"children":4269},{"style":181},[4270],{"type":51,"value":867},{"type":45,"tag":155,"props":4272,"children":4273},{"class":157,"line":3022},[4274],{"type":45,"tag":155,"props":4275,"children":4276},{"style":181},[4277],{"type":51,"value":875},{"type":45,"tag":155,"props":4279,"children":4280},{"class":157,"line":3030},[4281],{"type":45,"tag":155,"props":4282,"children":4283},{"emptyLinePlaceholder":328},[4284],{"type":51,"value":331},{"type":45,"tag":155,"props":4286,"children":4288},{"class":157,"line":4287},21,[4289],{"type":45,"tag":155,"props":4290,"children":4291},{"style":162},[4292],{"type":51,"value":4293},"\u002F\u002F BETTER - use globalEnv and globalDependencies for shared config\n",{"type":45,"tag":155,"props":4295,"children":4297},{"class":157,"line":4296},22,[4298],{"type":45,"tag":155,"props":4299,"children":4300},{"style":181},[4301],{"type":51,"value":637},{"type":45,"tag":155,"props":4303,"children":4305},{"class":157,"line":4304},23,[4306,4310,4315,4319,4323,4327,4331,4335,4339,4343,4347,4351,4355],{"type":45,"tag":155,"props":4307,"children":4308},{"style":181},[4309],{"type":51,"value":645},{"type":45,"tag":155,"props":4311,"children":4312},{"style":192},[4313],{"type":51,"value":4314},"globalEnv",{"type":45,"tag":155,"props":4316,"children":4317},{"style":181},[4318],{"type":51,"value":200},{"type":45,"tag":155,"props":4320,"children":4321},{"style":181},[4322],{"type":51,"value":205},{"type":45,"tag":155,"props":4324,"children":4325},{"style":181},[4326],{"type":51,"value":710},{"type":45,"tag":155,"props":4328,"children":4329},{"style":181},[4330],{"type":51,"value":200},{"type":45,"tag":155,"props":4332,"children":4333},{"style":235},[4334],{"type":51,"value":3845},{"type":45,"tag":155,"props":4336,"children":4337},{"style":181},[4338],{"type":51,"value":200},{"type":45,"tag":155,"props":4340,"children":4341},{"style":181},[4342],{"type":51,"value":247},{"type":45,"tag":155,"props":4344,"children":4345},{"style":181},[4346],{"type":51,"value":189},{"type":45,"tag":155,"props":4348,"children":4349},{"style":235},[4350],{"type":51,"value":3862},{"type":45,"tag":155,"props":4352,"children":4353},{"style":181},[4354],{"type":51,"value":200},{"type":45,"tag":155,"props":4356,"children":4357},{"style":181},[4358],{"type":51,"value":3221},{"type":45,"tag":155,"props":4360,"children":4362},{"class":157,"line":4361},24,[4363,4367,4371,4375,4379,4383,4387,4391,4395],{"type":45,"tag":155,"props":4364,"children":4365},{"style":181},[4366],{"type":51,"value":645},{"type":45,"tag":155,"props":4368,"children":4369},{"style":192},[4370],{"type":51,"value":3064},{"type":45,"tag":155,"props":4372,"children":4373},{"style":181},[4374],{"type":51,"value":200},{"type":45,"tag":155,"props":4376,"children":4377},{"style":181},[4378],{"type":51,"value":205},{"type":45,"tag":155,"props":4380,"children":4381},{"style":181},[4382],{"type":51,"value":710},{"type":45,"tag":155,"props":4384,"children":4385},{"style":181},[4386],{"type":51,"value":200},{"type":45,"tag":155,"props":4388,"children":4389},{"style":235},[4390],{"type":51,"value":3316},{"type":45,"tag":155,"props":4392,"children":4393},{"style":181},[4394],{"type":51,"value":200},{"type":45,"tag":155,"props":4396,"children":4397},{"style":181},[4398],{"type":51,"value":3221},{"type":45,"tag":155,"props":4400,"children":4402},{"class":157,"line":4401},25,[4403,4407,4411,4415,4419],{"type":45,"tag":155,"props":4404,"children":4405},{"style":181},[4406],{"type":51,"value":645},{"type":45,"tag":155,"props":4408,"children":4409},{"style":192},[4410],{"type":51,"value":650},{"type":45,"tag":155,"props":4412,"children":4413},{"style":181},[4414],{"type":51,"value":200},{"type":45,"tag":155,"props":4416,"children":4417},{"style":181},[4418],{"type":51,"value":205},{"type":45,"tag":155,"props":4420,"children":4421},{"style":181},[4422],{"type":51,"value":663},{"type":45,"tag":155,"props":4424,"children":4426},{"class":157,"line":4425},26,[4427,4431,4435,4439,4443],{"type":45,"tag":155,"props":4428,"children":4429},{"style":181},[4430],{"type":51,"value":671},{"type":45,"tag":155,"props":4432,"children":4433},{"style":217},[4434],{"type":51,"value":220},{"type":45,"tag":155,"props":4436,"children":4437},{"style":181},[4438],{"type":51,"value":200},{"type":45,"tag":155,"props":4440,"children":4441},{"style":181},[4442],{"type":51,"value":205},{"type":45,"tag":155,"props":4444,"children":4445},{"style":181},[4446],{"type":51,"value":796},{"type":45,"tag":155,"props":4448,"children":4450},{"class":157,"line":4449},27,[4451,4455,4459,4463,4467],{"type":45,"tag":155,"props":4452,"children":4453},{"style":181},[4454],{"type":51,"value":671},{"type":45,"tag":155,"props":4456,"children":4457},{"style":217},[4458],{"type":51,"value":290},{"type":45,"tag":155,"props":4460,"children":4461},{"style":181},[4462],{"type":51,"value":200},{"type":45,"tag":155,"props":4464,"children":4465},{"style":181},[4466],{"type":51,"value":205},{"type":45,"tag":155,"props":4468,"children":4469},{"style":181},[4470],{"type":51,"value":796},{"type":45,"tag":155,"props":4472,"children":4474},{"class":157,"line":4473},28,[4475,4479,4483,4487,4491],{"type":45,"tag":155,"props":4476,"children":4477},{"style":181},[4478],{"type":51,"value":671},{"type":45,"tag":155,"props":4480,"children":4481},{"style":217},[4482],{"type":51,"value":1737},{"type":45,"tag":155,"props":4484,"children":4485},{"style":181},[4486],{"type":51,"value":200},{"type":45,"tag":155,"props":4488,"children":4489},{"style":181},[4490],{"type":51,"value":205},{"type":45,"tag":155,"props":4492,"children":4493},{"style":181},[4494],{"type":51,"value":663},{"type":45,"tag":155,"props":4496,"children":4498},{"class":157,"line":4497},29,[4499,4503,4507,4511,4515],{"type":45,"tag":155,"props":4500,"children":4501},{"style":181},[4502],{"type":51,"value":2977},{"type":45,"tag":155,"props":4504,"children":4505},{"style":694},[4506],{"type":51,"value":4218},{"type":45,"tag":155,"props":4508,"children":4509},{"style":181},[4510],{"type":51,"value":200},{"type":45,"tag":155,"props":4512,"children":4513},{"style":181},[4514],{"type":51,"value":205},{"type":45,"tag":155,"props":4516,"children":4517},{"style":181},[4518],{"type":51,"value":4231},{"type":45,"tag":155,"props":4520,"children":4522},{"class":157,"line":4521},30,[4523,4527,4531,4535,4539],{"type":45,"tag":155,"props":4524,"children":4525},{"style":181},[4526],{"type":51,"value":2977},{"type":45,"tag":155,"props":4528,"children":4529},{"style":694},[4530],{"type":51,"value":4243},{"type":45,"tag":155,"props":4532,"children":4533},{"style":181},[4534],{"type":51,"value":200},{"type":45,"tag":155,"props":4536,"children":4537},{"style":181},[4538],{"type":51,"value":205},{"type":45,"tag":155,"props":4540,"children":4541},{"style":181},[4542],{"type":51,"value":4256},{"type":45,"tag":155,"props":4544,"children":4546},{"class":157,"line":4545},31,[4547],{"type":45,"tag":155,"props":4548,"children":4549},{"style":181},[4550],{"type":51,"value":3019},{"type":45,"tag":155,"props":4552,"children":4554},{"class":157,"line":4553},32,[4555],{"type":45,"tag":155,"props":4556,"children":4557},{"style":181},[4558],{"type":51,"value":867},{"type":45,"tag":155,"props":4560,"children":4562},{"class":157,"line":4561},33,[4563],{"type":45,"tag":155,"props":4564,"children":4565},{"style":181},[4566],{"type":51,"value":875},{"type":45,"tag":54,"props":4568,"children":4569},{},[4570],{"type":45,"tag":70,"props":4571,"children":4572},{},[4573],{"type":51,"value":4574},"When to use global vs task-level:",{"type":45,"tag":2676,"props":4576,"children":4577},{},[4578,4595],{"type":45,"tag":85,"props":4579,"children":4580},{},[4581,4586,4588,4593],{"type":45,"tag":91,"props":4582,"children":4584},{"className":4583},[],[4585],{"type":51,"value":4314},{"type":51,"value":4587}," \u002F ",{"type":45,"tag":91,"props":4589,"children":4591},{"className":4590},[],[4592],{"type":51,"value":3064},{"type":51,"value":4594}," - affects ALL tasks, use for truly shared config",{"type":45,"tag":85,"props":4596,"children":4597},{},[4598,4600,4605,4606,4611],{"type":51,"value":4599},"Task-level ",{"type":45,"tag":91,"props":4601,"children":4603},{"className":4602},[],[4604],{"type":51,"value":3824},{"type":51,"value":4587},{"type":45,"tag":91,"props":4607,"children":4609},{"className":4608},[],[4610],{"type":51,"value":3087},{"type":51,"value":4612}," - use when only specific tasks need it",{"type":45,"tag":1437,"props":4614,"children":4616},{"id":4615},"not-an-anti-pattern-large-env-arrays",[4617,4619,4624],{"type":51,"value":4618},"NOT an Anti-Pattern: Large ",{"type":45,"tag":91,"props":4620,"children":4622},{"className":4621},[],[4623],{"type":51,"value":3824},{"type":51,"value":4625}," Arrays",{"type":45,"tag":54,"props":4627,"children":4628},{},[4629,4631,4636,4638,4643],{"type":51,"value":4630},"A large ",{"type":45,"tag":91,"props":4632,"children":4634},{"className":4633},[],[4635],{"type":51,"value":3824},{"type":51,"value":4637}," array (even 50+ variables) is ",{"type":45,"tag":70,"props":4639,"children":4640},{},[4641],{"type":51,"value":4642},"not",{"type":51,"value":4644}," a problem. It usually means the user was thorough about declaring their build's environment dependencies. Do not flag this as an issue.",{"type":45,"tag":1437,"props":4646,"children":4648},{"id":4647},"using-parallel-flag",[4649,4650,4656],{"type":51,"value":1615},{"type":45,"tag":91,"props":4651,"children":4653},{"className":4652},[],[4654],{"type":51,"value":4655},"--parallel",{"type":51,"value":4657}," Flag",{"type":45,"tag":54,"props":4659,"children":4660},{},[4661,4663,4668,4670,4675],{"type":51,"value":4662},"The ",{"type":45,"tag":91,"props":4664,"children":4666},{"className":4665},[],[4667],{"type":51,"value":4655},{"type":51,"value":4669}," flag bypasses Turborepo's dependency graph. If tasks need parallel execution, configure ",{"type":45,"tag":91,"props":4671,"children":4673},{"className":4672},[],[4674],{"type":51,"value":697},{"type":51,"value":4676}," correctly instead.",{"type":45,"tag":144,"props":4678,"children":4682},{"className":4679,"code":4680,"language":4681,"meta":149,"style":149},"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",[4683],{"type":45,"tag":91,"props":4684,"children":4685},{"__ignoreMap":149},[4686,4694,4715,4722,4730,4738],{"type":45,"tag":155,"props":4687,"children":4688},{"class":157,"line":158},[4689],{"type":45,"tag":155,"props":4690,"children":4691},{"style":162},[4692],{"type":51,"value":4693},"# WRONG - bypasses dependency graph\n",{"type":45,"tag":155,"props":4695,"children":4696},{"class":157,"line":168},[4697,4701,4705,4710],{"type":45,"tag":155,"props":4698,"children":4699},{"style":217},[4700],{"type":51,"value":1237},{"type":45,"tag":155,"props":4702,"children":4703},{"style":235},[4704],{"type":51,"value":1394},{"type":45,"tag":155,"props":4706,"children":4707},{"style":235},[4708],{"type":51,"value":4709}," lint",{"type":45,"tag":155,"props":4711,"children":4712},{"style":235},[4713],{"type":51,"value":4714}," --parallel\n",{"type":45,"tag":155,"props":4716,"children":4717},{"class":157,"line":177},[4718],{"type":45,"tag":155,"props":4719,"children":4720},{"emptyLinePlaceholder":328},[4721],{"type":51,"value":331},{"type":45,"tag":155,"props":4723,"children":4724},{"class":157,"line":324},[4725],{"type":45,"tag":155,"props":4726,"children":4727},{"style":162},[4728],{"type":51,"value":4729},"# CORRECT - configure tasks to allow parallel execution\n",{"type":45,"tag":155,"props":4731,"children":4732},{"class":157,"line":334},[4733],{"type":45,"tag":155,"props":4734,"children":4735},{"style":162},[4736],{"type":51,"value":4737},"# In turbo.json, set dependsOn appropriately (or use transit nodes)\n",{"type":45,"tag":155,"props":4739,"children":4740},{"class":157,"line":343},[4741,4745,4749],{"type":45,"tag":155,"props":4742,"children":4743},{"style":217},[4744],{"type":51,"value":1237},{"type":45,"tag":155,"props":4746,"children":4747},{"style":235},[4748],{"type":51,"value":1394},{"type":45,"tag":155,"props":4750,"children":4751},{"style":235},[4752],{"type":51,"value":4753}," lint\n",{"type":45,"tag":1437,"props":4755,"children":4757},{"id":4756},"package-specific-task-overrides-in-root-turbojson",[4758],{"type":51,"value":4759},"Package-Specific Task Overrides in Root turbo.json",{"type":45,"tag":54,"props":4761,"children":4762},{},[4763,4765,4770,4772,4777,4779,4784,4786,4792],{"type":51,"value":4764},"When multiple packages need different task configurations, use ",{"type":45,"tag":70,"props":4766,"children":4767},{},[4768],{"type":51,"value":4769},"Package Configurations",{"type":51,"value":4771}," (",{"type":45,"tag":91,"props":4773,"children":4775},{"className":4774},[],[4776],{"type":51,"value":107},{"type":51,"value":4778}," in each package) instead of cluttering root ",{"type":45,"tag":91,"props":4780,"children":4782},{"className":4781},[],[4783],{"type":51,"value":107},{"type":51,"value":4785}," with ",{"type":45,"tag":91,"props":4787,"children":4789},{"className":4788},[],[4790],{"type":51,"value":4791},"package#task",{"type":51,"value":4793}," overrides.",{"type":45,"tag":144,"props":4795,"children":4797},{"className":146,"code":4796,"language":148,"meta":149,"style":149},"\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",[4798],{"type":45,"tag":91,"props":4799,"children":4800},{"__ignoreMap":149},[4801,4809,4816,4839,4902,4967,5031,5080,5128,5176,5183,5190,5197,5205,5213,5220,5243,5306,5313,5320,5327,5335,5342,5383,5406,5469,5476,5483,5490,5498,5505,5544,5567,5630,5638],{"type":45,"tag":155,"props":4802,"children":4803},{"class":157,"line":158},[4804],{"type":45,"tag":155,"props":4805,"children":4806},{"style":162},[4807],{"type":51,"value":4808},"\u002F\u002F WRONG - root turbo.json with many package-specific overrides\n",{"type":45,"tag":155,"props":4810,"children":4811},{"class":157,"line":168},[4812],{"type":45,"tag":155,"props":4813,"children":4814},{"style":181},[4815],{"type":51,"value":637},{"type":45,"tag":155,"props":4817,"children":4818},{"class":157,"line":177},[4819,4823,4827,4831,4835],{"type":45,"tag":155,"props":4820,"children":4821},{"style":181},[4822],{"type":51,"value":645},{"type":45,"tag":155,"props":4824,"children":4825},{"style":192},[4826],{"type":51,"value":650},{"type":45,"tag":155,"props":4828,"children":4829},{"style":181},[4830],{"type":51,"value":200},{"type":45,"tag":155,"props":4832,"children":4833},{"style":181},[4834],{"type":51,"value":205},{"type":45,"tag":155,"props":4836,"children":4837},{"style":181},[4838],{"type":51,"value":663},{"type":45,"tag":155,"props":4840,"children":4841},{"class":157,"line":324},[4842,4846,4850,4854,4858,4862,4866,4870,4874,4878,4882,4886,4890,4894,4898],{"type":45,"tag":155,"props":4843,"children":4844},{"style":181},[4845],{"type":51,"value":671},{"type":45,"tag":155,"props":4847,"children":4848},{"style":217},[4849],{"type":51,"value":290},{"type":45,"tag":155,"props":4851,"children":4852},{"style":181},[4853],{"type":51,"value":200},{"type":45,"tag":155,"props":4855,"children":4856},{"style":181},[4857],{"type":51,"value":205},{"type":45,"tag":155,"props":4859,"children":4860},{"style":181},[4861],{"type":51,"value":210},{"type":45,"tag":155,"props":4863,"children":4864},{"style":181},[4865],{"type":51,"value":189},{"type":45,"tag":155,"props":4867,"children":4868},{"style":694},[4869],{"type":51,"value":697},{"type":45,"tag":155,"props":4871,"children":4872},{"style":181},[4873],{"type":51,"value":200},{"type":45,"tag":155,"props":4875,"children":4876},{"style":181},[4877],{"type":51,"value":205},{"type":45,"tag":155,"props":4879,"children":4880},{"style":181},[4881],{"type":51,"value":710},{"type":45,"tag":155,"props":4883,"children":4884},{"style":181},[4885],{"type":51,"value":200},{"type":45,"tag":155,"props":4887,"children":4888},{"style":235},[4889],{"type":51,"value":220},{"type":45,"tag":155,"props":4891,"children":4892},{"style":181},[4893],{"type":51,"value":200},{"type":45,"tag":155,"props":4895,"children":4896},{"style":181},[4897],{"type":51,"value":767},{"type":45,"tag":155,"props":4899,"children":4900},{"style":181},[4901],{"type":51,"value":772},{"type":45,"tag":155,"props":4903,"children":4904},{"class":157,"line":334},[4905,4909,4914,4918,4922,4926,4930,4934,4938,4942,4946,4950,4955,4959,4963],{"type":45,"tag":155,"props":4906,"children":4907},{"style":181},[4908],{"type":51,"value":671},{"type":45,"tag":155,"props":4910,"children":4911},{"style":217},[4912],{"type":51,"value":4913},"@repo\u002Fweb#test",{"type":45,"tag":155,"props":4915,"children":4916},{"style":181},[4917],{"type":51,"value":200},{"type":45,"tag":155,"props":4919,"children":4920},{"style":181},[4921],{"type":51,"value":205},{"type":45,"tag":155,"props":4923,"children":4924},{"style":181},[4925],{"type":51,"value":210},{"type":45,"tag":155,"props":4927,"children":4928},{"style":181},[4929],{"type":51,"value":189},{"type":45,"tag":155,"props":4931,"children":4932},{"style":694},[4933],{"type":51,"value":737},{"type":45,"tag":155,"props":4935,"children":4936},{"style":181},[4937],{"type":51,"value":200},{"type":45,"tag":155,"props":4939,"children":4940},{"style":181},[4941],{"type":51,"value":205},{"type":45,"tag":155,"props":4943,"children":4944},{"style":181},[4945],{"type":51,"value":710},{"type":45,"tag":155,"props":4947,"children":4948},{"style":181},[4949],{"type":51,"value":200},{"type":45,"tag":155,"props":4951,"children":4952},{"style":235},[4953],{"type":51,"value":4954},"coverage\u002F**",{"type":45,"tag":155,"props":4956,"children":4957},{"style":181},[4958],{"type":51,"value":200},{"type":45,"tag":155,"props":4960,"children":4961},{"style":181},[4962],{"type":51,"value":767},{"type":45,"tag":155,"props":4964,"children":4965},{"style":181},[4966],{"type":51,"value":772},{"type":45,"tag":155,"props":4968,"children":4969},{"class":157,"line":343},[4970,4974,4979,4983,4987,4991,4995,4999,5003,5007,5011,5015,5019,5023,5027],{"type":45,"tag":155,"props":4971,"children":4972},{"style":181},[4973],{"type":51,"value":671},{"type":45,"tag":155,"props":4975,"children":4976},{"style":217},[4977],{"type":51,"value":4978},"@repo\u002Fapi#test",{"type":45,"tag":155,"props":4980,"children":4981},{"style":181},[4982],{"type":51,"value":200},{"type":45,"tag":155,"props":4984,"children":4985},{"style":181},[4986],{"type":51,"value":205},{"type":45,"tag":155,"props":4988,"children":4989},{"style":181},[4990],{"type":51,"value":210},{"type":45,"tag":155,"props":4992,"children":4993},{"style":181},[4994],{"type":51,"value":189},{"type":45,"tag":155,"props":4996,"children":4997},{"style":694},[4998],{"type":51,"value":737},{"type":45,"tag":155,"props":5000,"children":5001},{"style":181},[5002],{"type":51,"value":200},{"type":45,"tag":155,"props":5004,"children":5005},{"style":181},[5006],{"type":51,"value":205},{"type":45,"tag":155,"props":5008,"children":5009},{"style":181},[5010],{"type":51,"value":710},{"type":45,"tag":155,"props":5012,"children":5013},{"style":181},[5014],{"type":51,"value":200},{"type":45,"tag":155,"props":5016,"children":5017},{"style":235},[5018],{"type":51,"value":4954},{"type":45,"tag":155,"props":5020,"children":5021},{"style":181},[5022],{"type":51,"value":200},{"type":45,"tag":155,"props":5024,"children":5025},{"style":181},[5026],{"type":51,"value":767},{"type":45,"tag":155,"props":5028,"children":5029},{"style":181},[5030],{"type":51,"value":772},{"type":45,"tag":155,"props":5032,"children":5033},{"class":157,"line":472},[5034,5038,5043,5047,5051,5055,5059,5063,5067,5071,5076],{"type":45,"tag":155,"props":5035,"children":5036},{"style":181},[5037],{"type":51,"value":671},{"type":45,"tag":155,"props":5039,"children":5040},{"style":217},[5041],{"type":51,"value":5042},"@repo\u002Futils#test",{"type":45,"tag":155,"props":5044,"children":5045},{"style":181},[5046],{"type":51,"value":200},{"type":45,"tag":155,"props":5048,"children":5049},{"style":181},[5050],{"type":51,"value":205},{"type":45,"tag":155,"props":5052,"children":5053},{"style":181},[5054],{"type":51,"value":210},{"type":45,"tag":155,"props":5056,"children":5057},{"style":181},[5058],{"type":51,"value":189},{"type":45,"tag":155,"props":5060,"children":5061},{"style":694},[5062],{"type":51,"value":737},{"type":45,"tag":155,"props":5064,"children":5065},{"style":181},[5066],{"type":51,"value":200},{"type":45,"tag":155,"props":5068,"children":5069},{"style":181},[5070],{"type":51,"value":205},{"type":45,"tag":155,"props":5072,"children":5073},{"style":181},[5074],{"type":51,"value":5075}," []",{"type":45,"tag":155,"props":5077,"children":5078},{"style":181},[5079],{"type":51,"value":772},{"type":45,"tag":155,"props":5081,"children":5082},{"class":157,"line":480},[5083,5087,5092,5096,5100,5104,5108,5112,5116,5120,5124],{"type":45,"tag":155,"props":5084,"children":5085},{"style":181},[5086],{"type":51,"value":671},{"type":45,"tag":155,"props":5088,"children":5089},{"style":217},[5090],{"type":51,"value":5091},"@repo\u002Fcli#test",{"type":45,"tag":155,"props":5093,"children":5094},{"style":181},[5095],{"type":51,"value":200},{"type":45,"tag":155,"props":5097,"children":5098},{"style":181},[5099],{"type":51,"value":205},{"type":45,"tag":155,"props":5101,"children":5102},{"style":181},[5103],{"type":51,"value":210},{"type":45,"tag":155,"props":5105,"children":5106},{"style":181},[5107],{"type":51,"value":189},{"type":45,"tag":155,"props":5109,"children":5110},{"style":694},[5111],{"type":51,"value":737},{"type":45,"tag":155,"props":5113,"children":5114},{"style":181},[5115],{"type":51,"value":200},{"type":45,"tag":155,"props":5117,"children":5118},{"style":181},[5119],{"type":51,"value":205},{"type":45,"tag":155,"props":5121,"children":5122},{"style":181},[5123],{"type":51,"value":5075},{"type":45,"tag":155,"props":5125,"children":5126},{"style":181},[5127],{"type":51,"value":772},{"type":45,"tag":155,"props":5129,"children":5130},{"class":157,"line":489},[5131,5135,5140,5144,5148,5152,5156,5160,5164,5168,5172],{"type":45,"tag":155,"props":5132,"children":5133},{"style":181},[5134],{"type":51,"value":671},{"type":45,"tag":155,"props":5136,"children":5137},{"style":217},[5138],{"type":51,"value":5139},"@repo\u002Fcore#test",{"type":45,"tag":155,"props":5141,"children":5142},{"style":181},[5143],{"type":51,"value":200},{"type":45,"tag":155,"props":5145,"children":5146},{"style":181},[5147],{"type":51,"value":205},{"type":45,"tag":155,"props":5149,"children":5150},{"style":181},[5151],{"type":51,"value":210},{"type":45,"tag":155,"props":5153,"children":5154},{"style":181},[5155],{"type":51,"value":189},{"type":45,"tag":155,"props":5157,"children":5158},{"style":694},[5159],{"type":51,"value":737},{"type":45,"tag":155,"props":5161,"children":5162},{"style":181},[5163],{"type":51,"value":200},{"type":45,"tag":155,"props":5165,"children":5166},{"style":181},[5167],{"type":51,"value":205},{"type":45,"tag":155,"props":5169,"children":5170},{"style":181},[5171],{"type":51,"value":5075},{"type":45,"tag":155,"props":5173,"children":5174},{"style":181},[5175],{"type":51,"value":321},{"type":45,"tag":155,"props":5177,"children":5178},{"class":157,"line":1790},[5179],{"type":45,"tag":155,"props":5180,"children":5181},{"style":181},[5182],{"type":51,"value":867},{"type":45,"tag":155,"props":5184,"children":5185},{"class":157,"line":1798},[5186],{"type":45,"tag":155,"props":5187,"children":5188},{"style":181},[5189],{"type":51,"value":875},{"type":45,"tag":155,"props":5191,"children":5192},{"class":157,"line":1822},[5193],{"type":45,"tag":155,"props":5194,"children":5195},{"emptyLinePlaceholder":328},[5196],{"type":51,"value":331},{"type":45,"tag":155,"props":5198,"children":5199},{"class":157,"line":1858},[5200],{"type":45,"tag":155,"props":5201,"children":5202},{"style":162},[5203],{"type":51,"value":5204},"\u002F\u002F CORRECT - use Package Configurations\n",{"type":45,"tag":155,"props":5206,"children":5207},{"class":157,"line":1891},[5208],{"type":45,"tag":155,"props":5209,"children":5210},{"style":162},[5211],{"type":51,"value":5212},"\u002F\u002F Root turbo.json - base config only\n",{"type":45,"tag":155,"props":5214,"children":5215},{"class":157,"line":1899},[5216],{"type":45,"tag":155,"props":5217,"children":5218},{"style":181},[5219],{"type":51,"value":637},{"type":45,"tag":155,"props":5221,"children":5222},{"class":157,"line":2947},[5223,5227,5231,5235,5239],{"type":45,"tag":155,"props":5224,"children":5225},{"style":181},[5226],{"type":51,"value":645},{"type":45,"tag":155,"props":5228,"children":5229},{"style":192},[5230],{"type":51,"value":650},{"type":45,"tag":155,"props":5232,"children":5233},{"style":181},[5234],{"type":51,"value":200},{"type":45,"tag":155,"props":5236,"children":5237},{"style":181},[5238],{"type":51,"value":205},{"type":45,"tag":155,"props":5240,"children":5241},{"style":181},[5242],{"type":51,"value":663},{"type":45,"tag":155,"props":5244,"children":5245},{"class":157,"line":2971},[5246,5250,5254,5258,5262,5266,5270,5274,5278,5282,5286,5290,5294,5298,5302],{"type":45,"tag":155,"props":5247,"children":5248},{"style":181},[5249],{"type":51,"value":671},{"type":45,"tag":155,"props":5251,"children":5252},{"style":217},[5253],{"type":51,"value":290},{"type":45,"tag":155,"props":5255,"children":5256},{"style":181},[5257],{"type":51,"value":200},{"type":45,"tag":155,"props":5259,"children":5260},{"style":181},[5261],{"type":51,"value":205},{"type":45,"tag":155,"props":5263,"children":5264},{"style":181},[5265],{"type":51,"value":210},{"type":45,"tag":155,"props":5267,"children":5268},{"style":181},[5269],{"type":51,"value":189},{"type":45,"tag":155,"props":5271,"children":5272},{"style":694},[5273],{"type":51,"value":697},{"type":45,"tag":155,"props":5275,"children":5276},{"style":181},[5277],{"type":51,"value":200},{"type":45,"tag":155,"props":5279,"children":5280},{"style":181},[5281],{"type":51,"value":205},{"type":45,"tag":155,"props":5283,"children":5284},{"style":181},[5285],{"type":51,"value":710},{"type":45,"tag":155,"props":5287,"children":5288},{"style":181},[5289],{"type":51,"value":200},{"type":45,"tag":155,"props":5291,"children":5292},{"style":235},[5293],{"type":51,"value":220},{"type":45,"tag":155,"props":5295,"children":5296},{"style":181},[5297],{"type":51,"value":200},{"type":45,"tag":155,"props":5299,"children":5300},{"style":181},[5301],{"type":51,"value":767},{"type":45,"tag":155,"props":5303,"children":5304},{"style":181},[5305],{"type":51,"value":321},{"type":45,"tag":155,"props":5307,"children":5308},{"class":157,"line":3013},[5309],{"type":45,"tag":155,"props":5310,"children":5311},{"style":181},[5312],{"type":51,"value":867},{"type":45,"tag":155,"props":5314,"children":5315},{"class":157,"line":3022},[5316],{"type":45,"tag":155,"props":5317,"children":5318},{"style":181},[5319],{"type":51,"value":875},{"type":45,"tag":155,"props":5321,"children":5322},{"class":157,"line":3030},[5323],{"type":45,"tag":155,"props":5324,"children":5325},{"emptyLinePlaceholder":328},[5326],{"type":51,"value":331},{"type":45,"tag":155,"props":5328,"children":5329},{"class":157,"line":4287},[5330],{"type":45,"tag":155,"props":5331,"children":5332},{"style":162},[5333],{"type":51,"value":5334},"\u002F\u002F packages\u002Fweb\u002Fturbo.json - package-specific override\n",{"type":45,"tag":155,"props":5336,"children":5337},{"class":157,"line":4296},[5338],{"type":45,"tag":155,"props":5339,"children":5340},{"style":181},[5341],{"type":51,"value":637},{"type":45,"tag":155,"props":5343,"children":5344},{"class":157,"line":4304},[5345,5349,5354,5358,5362,5366,5370,5375,5379],{"type":45,"tag":155,"props":5346,"children":5347},{"style":181},[5348],{"type":51,"value":645},{"type":45,"tag":155,"props":5350,"children":5351},{"style":192},[5352],{"type":51,"value":5353},"extends",{"type":45,"tag":155,"props":5355,"children":5356},{"style":181},[5357],{"type":51,"value":200},{"type":45,"tag":155,"props":5359,"children":5360},{"style":181},[5361],{"type":51,"value":205},{"type":45,"tag":155,"props":5363,"children":5364},{"style":181},[5365],{"type":51,"value":710},{"type":45,"tag":155,"props":5367,"children":5368},{"style":181},[5369],{"type":51,"value":200},{"type":45,"tag":155,"props":5371,"children":5372},{"style":235},[5373],{"type":51,"value":5374},"\u002F\u002F",{"type":45,"tag":155,"props":5376,"children":5377},{"style":181},[5378],{"type":51,"value":200},{"type":45,"tag":155,"props":5380,"children":5381},{"style":181},[5382],{"type":51,"value":3221},{"type":45,"tag":155,"props":5384,"children":5385},{"class":157,"line":4361},[5386,5390,5394,5398,5402],{"type":45,"tag":155,"props":5387,"children":5388},{"style":181},[5389],{"type":51,"value":645},{"type":45,"tag":155,"props":5391,"children":5392},{"style":192},[5393],{"type":51,"value":650},{"type":45,"tag":155,"props":5395,"children":5396},{"style":181},[5397],{"type":51,"value":200},{"type":45,"tag":155,"props":5399,"children":5400},{"style":181},[5401],{"type":51,"value":205},{"type":45,"tag":155,"props":5403,"children":5404},{"style":181},[5405],{"type":51,"value":663},{"type":45,"tag":155,"props":5407,"children":5408},{"class":157,"line":4401},[5409,5413,5417,5421,5425,5429,5433,5437,5441,5445,5449,5453,5457,5461,5465],{"type":45,"tag":155,"props":5410,"children":5411},{"style":181},[5412],{"type":51,"value":671},{"type":45,"tag":155,"props":5414,"children":5415},{"style":217},[5416],{"type":51,"value":290},{"type":45,"tag":155,"props":5418,"children":5419},{"style":181},[5420],{"type":51,"value":200},{"type":45,"tag":155,"props":5422,"children":5423},{"style":181},[5424],{"type":51,"value":205},{"type":45,"tag":155,"props":5426,"children":5427},{"style":181},[5428],{"type":51,"value":210},{"type":45,"tag":155,"props":5430,"children":5431},{"style":181},[5432],{"type":51,"value":189},{"type":45,"tag":155,"props":5434,"children":5435},{"style":694},[5436],{"type":51,"value":737},{"type":45,"tag":155,"props":5438,"children":5439},{"style":181},[5440],{"type":51,"value":200},{"type":45,"tag":155,"props":5442,"children":5443},{"style":181},[5444],{"type":51,"value":205},{"type":45,"tag":155,"props":5446,"children":5447},{"style":181},[5448],{"type":51,"value":710},{"type":45,"tag":155,"props":5450,"children":5451},{"style":181},[5452],{"type":51,"value":200},{"type":45,"tag":155,"props":5454,"children":5455},{"style":235},[5456],{"type":51,"value":4954},{"type":45,"tag":155,"props":5458,"children":5459},{"style":181},[5460],{"type":51,"value":200},{"type":45,"tag":155,"props":5462,"children":5463},{"style":181},[5464],{"type":51,"value":767},{"type":45,"tag":155,"props":5466,"children":5467},{"style":181},[5468],{"type":51,"value":321},{"type":45,"tag":155,"props":5470,"children":5471},{"class":157,"line":4425},[5472],{"type":45,"tag":155,"props":5473,"children":5474},{"style":181},[5475],{"type":51,"value":867},{"type":45,"tag":155,"props":5477,"children":5478},{"class":157,"line":4449},[5479],{"type":45,"tag":155,"props":5480,"children":5481},{"style":181},[5482],{"type":51,"value":875},{"type":45,"tag":155,"props":5484,"children":5485},{"class":157,"line":4473},[5486],{"type":45,"tag":155,"props":5487,"children":5488},{"emptyLinePlaceholder":328},[5489],{"type":51,"value":331},{"type":45,"tag":155,"props":5491,"children":5492},{"class":157,"line":4497},[5493],{"type":45,"tag":155,"props":5494,"children":5495},{"style":162},[5496],{"type":51,"value":5497},"\u002F\u002F packages\u002Fapi\u002Fturbo.json\n",{"type":45,"tag":155,"props":5499,"children":5500},{"class":157,"line":4521},[5501],{"type":45,"tag":155,"props":5502,"children":5503},{"style":181},[5504],{"type":51,"value":637},{"type":45,"tag":155,"props":5506,"children":5507},{"class":157,"line":4545},[5508,5512,5516,5520,5524,5528,5532,5536,5540],{"type":45,"tag":155,"props":5509,"children":5510},{"style":181},[5511],{"type":51,"value":645},{"type":45,"tag":155,"props":5513,"children":5514},{"style":192},[5515],{"type":51,"value":5353},{"type":45,"tag":155,"props":5517,"children":5518},{"style":181},[5519],{"type":51,"value":200},{"type":45,"tag":155,"props":5521,"children":5522},{"style":181},[5523],{"type":51,"value":205},{"type":45,"tag":155,"props":5525,"children":5526},{"style":181},[5527],{"type":51,"value":710},{"type":45,"tag":155,"props":5529,"children":5530},{"style":181},[5531],{"type":51,"value":200},{"type":45,"tag":155,"props":5533,"children":5534},{"style":235},[5535],{"type":51,"value":5374},{"type":45,"tag":155,"props":5537,"children":5538},{"style":181},[5539],{"type":51,"value":200},{"type":45,"tag":155,"props":5541,"children":5542},{"style":181},[5543],{"type":51,"value":3221},{"type":45,"tag":155,"props":5545,"children":5546},{"class":157,"line":4553},[5547,5551,5555,5559,5563],{"type":45,"tag":155,"props":5548,"children":5549},{"style":181},[5550],{"type":51,"value":645},{"type":45,"tag":155,"props":5552,"children":5553},{"style":192},[5554],{"type":51,"value":650},{"type":45,"tag":155,"props":5556,"children":5557},{"style":181},[5558],{"type":51,"value":200},{"type":45,"tag":155,"props":5560,"children":5561},{"style":181},[5562],{"type":51,"value":205},{"type":45,"tag":155,"props":5564,"children":5565},{"style":181},[5566],{"type":51,"value":663},{"type":45,"tag":155,"props":5568,"children":5569},{"class":157,"line":4561},[5570,5574,5578,5582,5586,5590,5594,5598,5602,5606,5610,5614,5618,5622,5626],{"type":45,"tag":155,"props":5571,"children":5572},{"style":181},[5573],{"type":51,"value":671},{"type":45,"tag":155,"props":5575,"children":5576},{"style":217},[5577],{"type":51,"value":290},{"type":45,"tag":155,"props":5579,"children":5580},{"style":181},[5581],{"type":51,"value":200},{"type":45,"tag":155,"props":5583,"children":5584},{"style":181},[5585],{"type":51,"value":205},{"type":45,"tag":155,"props":5587,"children":5588},{"style":181},[5589],{"type":51,"value":210},{"type":45,"tag":155,"props":5591,"children":5592},{"style":181},[5593],{"type":51,"value":189},{"type":45,"tag":155,"props":5595,"children":5596},{"style":694},[5597],{"type":51,"value":737},{"type":45,"tag":155,"props":5599,"children":5600},{"style":181},[5601],{"type":51,"value":200},{"type":45,"tag":155,"props":5603,"children":5604},{"style":181},[5605],{"type":51,"value":205},{"type":45,"tag":155,"props":5607,"children":5608},{"style":181},[5609],{"type":51,"value":710},{"type":45,"tag":155,"props":5611,"children":5612},{"style":181},[5613],{"type":51,"value":200},{"type":45,"tag":155,"props":5615,"children":5616},{"style":235},[5617],{"type":51,"value":4954},{"type":45,"tag":155,"props":5619,"children":5620},{"style":181},[5621],{"type":51,"value":200},{"type":45,"tag":155,"props":5623,"children":5624},{"style":181},[5625],{"type":51,"value":767},{"type":45,"tag":155,"props":5627,"children":5628},{"style":181},[5629],{"type":51,"value":321},{"type":45,"tag":155,"props":5631,"children":5633},{"class":157,"line":5632},34,[5634],{"type":45,"tag":155,"props":5635,"children":5636},{"style":181},[5637],{"type":51,"value":867},{"type":45,"tag":155,"props":5639,"children":5641},{"class":157,"line":5640},35,[5642],{"type":45,"tag":155,"props":5643,"children":5644},{"style":181},[5645],{"type":51,"value":875},{"type":45,"tag":54,"props":5647,"children":5648},{},[5649],{"type":45,"tag":70,"props":5650,"children":5651},{},[5652],{"type":51,"value":5653},"Benefits of Package Configurations:",{"type":45,"tag":2676,"props":5655,"children":5656},{},[5657,5662,5667,5672],{"type":45,"tag":85,"props":5658,"children":5659},{},[5660],{"type":51,"value":5661},"Keeps configuration close to the code it affects",{"type":45,"tag":85,"props":5663,"children":5664},{},[5665],{"type":51,"value":5666},"Root turbo.json stays clean and focused on base patterns",{"type":45,"tag":85,"props":5668,"children":5669},{},[5670],{"type":51,"value":5671},"Easier to understand what's special about each package",{"type":45,"tag":85,"props":5673,"children":5674},{},[5675,5677,5683],{"type":51,"value":5676},"Works with ",{"type":45,"tag":91,"props":5678,"children":5680},{"className":5679},[],[5681],{"type":51,"value":5682},"$TURBO_EXTENDS$",{"type":51,"value":5684}," to inherit + extend arrays",{"type":45,"tag":54,"props":5686,"children":5687},{},[5688],{"type":45,"tag":70,"props":5689,"children":5690},{},[5691,5693,5698],{"type":51,"value":5692},"When to use ",{"type":45,"tag":91,"props":5694,"children":5696},{"className":5695},[],[5697],{"type":51,"value":4791},{"type":51,"value":5699}," in root:",{"type":45,"tag":2676,"props":5701,"children":5702},{},[5703,5716],{"type":45,"tag":85,"props":5704,"children":5705},{},[5706,5708,5714],{"type":51,"value":5707},"Single package needs a unique dependency (e.g., ",{"type":45,"tag":91,"props":5709,"children":5711},{"className":5710},[],[5712],{"type":51,"value":5713},"\"deploy\": { \"dependsOn\": [\"web#build\"] }",{"type":51,"value":5715},")",{"type":45,"tag":85,"props":5717,"children":5718},{},[5719],{"type":51,"value":5720},"Temporary override while migrating",{"type":45,"tag":54,"props":5722,"children":5723},{},[5724,5726,5732],{"type":51,"value":5725},"See ",{"type":45,"tag":91,"props":5727,"children":5729},{"className":5728},[],[5730],{"type":51,"value":5731},"references\u002Fconfiguration\u002FRULE.md#package-configurations",{"type":51,"value":5733}," for full details.",{"type":45,"tag":1437,"props":5735,"children":5737},{"id":5736},"using-to-traverse-out-of-package-in-inputs",[5738,5739,5745,5747],{"type":51,"value":1615},{"type":45,"tag":91,"props":5740,"children":5742},{"className":5741},[],[5743],{"type":51,"value":5744},"..\u002F",{"type":51,"value":5746}," to Traverse Out of Package in ",{"type":45,"tag":91,"props":5748,"children":5750},{"className":5749},[],[5751],{"type":51,"value":3087},{"type":45,"tag":54,"props":5753,"children":5754},{},[5755,5757,5762,5764,5770],{"type":51,"value":5756},"Don't use relative paths like ",{"type":45,"tag":91,"props":5758,"children":5760},{"className":5759},[],[5761],{"type":51,"value":5744},{"type":51,"value":5763}," to reference files outside the package. Use ",{"type":45,"tag":91,"props":5765,"children":5767},{"className":5766},[],[5768],{"type":51,"value":5769},"$TURBO_ROOT$",{"type":51,"value":5771}," instead.",{"type":45,"tag":144,"props":5773,"children":5775},{"className":146,"code":5774,"language":148,"meta":149,"style":149},"\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",[5776],{"type":45,"tag":91,"props":5777,"children":5778},{"__ignoreMap":149},[5779,5787,5794,5817,5840,5896,5903,5910,5917,5924,5932,5939,5962,5985,6041,6048,6055],{"type":45,"tag":155,"props":5780,"children":5781},{"class":157,"line":158},[5782],{"type":45,"tag":155,"props":5783,"children":5784},{"style":162},[5785],{"type":51,"value":5786},"\u002F\u002F WRONG - traversing out of package\n",{"type":45,"tag":155,"props":5788,"children":5789},{"class":157,"line":168},[5790],{"type":45,"tag":155,"props":5791,"children":5792},{"style":181},[5793],{"type":51,"value":637},{"type":45,"tag":155,"props":5795,"children":5796},{"class":157,"line":177},[5797,5801,5805,5809,5813],{"type":45,"tag":155,"props":5798,"children":5799},{"style":181},[5800],{"type":51,"value":645},{"type":45,"tag":155,"props":5802,"children":5803},{"style":192},[5804],{"type":51,"value":650},{"type":45,"tag":155,"props":5806,"children":5807},{"style":181},[5808],{"type":51,"value":200},{"type":45,"tag":155,"props":5810,"children":5811},{"style":181},[5812],{"type":51,"value":205},{"type":45,"tag":155,"props":5814,"children":5815},{"style":181},[5816],{"type":51,"value":663},{"type":45,"tag":155,"props":5818,"children":5819},{"class":157,"line":324},[5820,5824,5828,5832,5836],{"type":45,"tag":155,"props":5821,"children":5822},{"style":181},[5823],{"type":51,"value":671},{"type":45,"tag":155,"props":5825,"children":5826},{"style":217},[5827],{"type":51,"value":220},{"type":45,"tag":155,"props":5829,"children":5830},{"style":181},[5831],{"type":51,"value":200},{"type":45,"tag":155,"props":5833,"children":5834},{"style":181},[5835],{"type":51,"value":205},{"type":45,"tag":155,"props":5837,"children":5838},{"style":181},[5839],{"type":51,"value":663},{"type":45,"tag":155,"props":5841,"children":5842},{"class":157,"line":334},[5843,5847,5851,5855,5859,5863,5867,5871,5875,5879,5883,5888,5892],{"type":45,"tag":155,"props":5844,"children":5845},{"style":181},[5846],{"type":51,"value":2977},{"type":45,"tag":155,"props":5848,"children":5849},{"style":694},[5850],{"type":51,"value":3087},{"type":45,"tag":155,"props":5852,"children":5853},{"style":181},[5854],{"type":51,"value":200},{"type":45,"tag":155,"props":5856,"children":5857},{"style":181},[5858],{"type":51,"value":205},{"type":45,"tag":155,"props":5860,"children":5861},{"style":181},[5862],{"type":51,"value":710},{"type":45,"tag":155,"props":5864,"children":5865},{"style":181},[5866],{"type":51,"value":200},{"type":45,"tag":155,"props":5868,"children":5869},{"style":235},[5870],{"type":51,"value":3299},{"type":45,"tag":155,"props":5872,"children":5873},{"style":181},[5874],{"type":51,"value":200},{"type":45,"tag":155,"props":5876,"children":5877},{"style":181},[5878],{"type":51,"value":247},{"type":45,"tag":155,"props":5880,"children":5881},{"style":181},[5882],{"type":51,"value":189},{"type":45,"tag":155,"props":5884,"children":5885},{"style":235},[5886],{"type":51,"value":5887},"..\u002Fshared-config.json",{"type":45,"tag":155,"props":5889,"children":5890},{"style":181},[5891],{"type":51,"value":200},{"type":45,"tag":155,"props":5893,"children":5894},{"style":181},[5895],{"type":51,"value":3010},{"type":45,"tag":155,"props":5897,"children":5898},{"class":157,"line":343},[5899],{"type":45,"tag":155,"props":5900,"children":5901},{"style":181},[5902],{"type":51,"value":3019},{"type":45,"tag":155,"props":5904,"children":5905},{"class":157,"line":472},[5906],{"type":45,"tag":155,"props":5907,"children":5908},{"style":181},[5909],{"type":51,"value":867},{"type":45,"tag":155,"props":5911,"children":5912},{"class":157,"line":480},[5913],{"type":45,"tag":155,"props":5914,"children":5915},{"style":181},[5916],{"type":51,"value":875},{"type":45,"tag":155,"props":5918,"children":5919},{"class":157,"line":489},[5920],{"type":45,"tag":155,"props":5921,"children":5922},{"emptyLinePlaceholder":328},[5923],{"type":51,"value":331},{"type":45,"tag":155,"props":5925,"children":5926},{"class":157,"line":1790},[5927],{"type":45,"tag":155,"props":5928,"children":5929},{"style":162},[5930],{"type":51,"value":5931},"\u002F\u002F CORRECT - use $TURBO_ROOT$ for repo root\n",{"type":45,"tag":155,"props":5933,"children":5934},{"class":157,"line":1798},[5935],{"type":45,"tag":155,"props":5936,"children":5937},{"style":181},[5938],{"type":51,"value":637},{"type":45,"tag":155,"props":5940,"children":5941},{"class":157,"line":1822},[5942,5946,5950,5954,5958],{"type":45,"tag":155,"props":5943,"children":5944},{"style":181},[5945],{"type":51,"value":645},{"type":45,"tag":155,"props":5947,"children":5948},{"style":192},[5949],{"type":51,"value":650},{"type":45,"tag":155,"props":5951,"children":5952},{"style":181},[5953],{"type":51,"value":200},{"type":45,"tag":155,"props":5955,"children":5956},{"style":181},[5957],{"type":51,"value":205},{"type":45,"tag":155,"props":5959,"children":5960},{"style":181},[5961],{"type":51,"value":663},{"type":45,"tag":155,"props":5963,"children":5964},{"class":157,"line":1858},[5965,5969,5973,5977,5981],{"type":45,"tag":155,"props":5966,"children":5967},{"style":181},[5968],{"type":51,"value":671},{"type":45,"tag":155,"props":5970,"children":5971},{"style":217},[5972],{"type":51,"value":220},{"type":45,"tag":155,"props":5974,"children":5975},{"style":181},[5976],{"type":51,"value":200},{"type":45,"tag":155,"props":5978,"children":5979},{"style":181},[5980],{"type":51,"value":205},{"type":45,"tag":155,"props":5982,"children":5983},{"style":181},[5984],{"type":51,"value":663},{"type":45,"tag":155,"props":5986,"children":5987},{"class":157,"line":1891},[5988,5992,5996,6000,6004,6008,6012,6016,6020,6024,6028,6033,6037],{"type":45,"tag":155,"props":5989,"children":5990},{"style":181},[5991],{"type":51,"value":2977},{"type":45,"tag":155,"props":5993,"children":5994},{"style":694},[5995],{"type":51,"value":3087},{"type":45,"tag":155,"props":5997,"children":5998},{"style":181},[5999],{"type":51,"value":200},{"type":45,"tag":155,"props":6001,"children":6002},{"style":181},[6003],{"type":51,"value":205},{"type":45,"tag":155,"props":6005,"children":6006},{"style":181},[6007],{"type":51,"value":710},{"type":45,"tag":155,"props":6009,"children":6010},{"style":181},[6011],{"type":51,"value":200},{"type":45,"tag":155,"props":6013,"children":6014},{"style":235},[6015],{"type":51,"value":3299},{"type":45,"tag":155,"props":6017,"children":6018},{"style":181},[6019],{"type":51,"value":200},{"type":45,"tag":155,"props":6021,"children":6022},{"style":181},[6023],{"type":51,"value":247},{"type":45,"tag":155,"props":6025,"children":6026},{"style":181},[6027],{"type":51,"value":189},{"type":45,"tag":155,"props":6029,"children":6030},{"style":235},[6031],{"type":51,"value":6032},"$TURBO_ROOT$\u002Fshared-config.json",{"type":45,"tag":155,"props":6034,"children":6035},{"style":181},[6036],{"type":51,"value":200},{"type":45,"tag":155,"props":6038,"children":6039},{"style":181},[6040],{"type":51,"value":3010},{"type":45,"tag":155,"props":6042,"children":6043},{"class":157,"line":1899},[6044],{"type":45,"tag":155,"props":6045,"children":6046},{"style":181},[6047],{"type":51,"value":3019},{"type":45,"tag":155,"props":6049,"children":6050},{"class":157,"line":2947},[6051],{"type":45,"tag":155,"props":6052,"children":6053},{"style":181},[6054],{"type":51,"value":867},{"type":45,"tag":155,"props":6056,"children":6057},{"class":157,"line":2971},[6058],{"type":45,"tag":155,"props":6059,"children":6060},{"style":181},[6061],{"type":51,"value":875},{"type":45,"tag":1437,"props":6063,"children":6065},{"id":6064},"missing-outputs-for-file-producing-tasks",[6066,6068,6073],{"type":51,"value":6067},"Missing ",{"type":45,"tag":91,"props":6069,"children":6071},{"className":6070},[],[6072],{"type":51,"value":737},{"type":51,"value":6074}," for File-Producing Tasks",{"type":45,"tag":54,"props":6076,"children":6077},{},[6078],{"type":45,"tag":70,"props":6079,"children":6080},{},[6081,6083,6088],{"type":51,"value":6082},"Before flagging missing ",{"type":45,"tag":91,"props":6084,"children":6086},{"className":6085},[],[6087],{"type":51,"value":737},{"type":51,"value":6089},", check what the task actually produces:",{"type":45,"tag":81,"props":6091,"children":6092},{},[6093,6113,6118],{"type":45,"tag":85,"props":6094,"children":6095},{},[6096,6098,6104,6106,6112],{"type":51,"value":6097},"Read the package's script (e.g., ",{"type":45,"tag":91,"props":6099,"children":6101},{"className":6100},[],[6102],{"type":51,"value":6103},"\"build\": \"tsc\"",{"type":51,"value":6105},", ",{"type":45,"tag":91,"props":6107,"children":6109},{"className":6108},[],[6110],{"type":51,"value":6111},"\"test\": \"vitest\"",{"type":51,"value":5715},{"type":45,"tag":85,"props":6114,"children":6115},{},[6116],{"type":51,"value":6117},"Determine if it writes files to disk or only outputs to stdout",{"type":45,"tag":85,"props":6119,"children":6120},{},[6121],{"type":51,"value":6122},"Only flag if the task produces files that should be cached",{"type":45,"tag":144,"props":6124,"children":6126},{"className":146,"code":6125,"language":148,"meta":149,"style":149},"\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",[6127],{"type":45,"tag":91,"props":6128,"children":6129},{"__ignoreMap":149},[6130,6138,6145,6168,6191,6230,6237,6244,6251,6258,6266,6273,6296,6319,6358,6397,6404,6411],{"type":45,"tag":155,"props":6131,"children":6132},{"class":157,"line":158},[6133],{"type":45,"tag":155,"props":6134,"children":6135},{"style":162},[6136],{"type":51,"value":6137},"\u002F\u002F WRONG: build produces files but they're not cached\n",{"type":45,"tag":155,"props":6139,"children":6140},{"class":157,"line":168},[6141],{"type":45,"tag":155,"props":6142,"children":6143},{"style":181},[6144],{"type":51,"value":637},{"type":45,"tag":155,"props":6146,"children":6147},{"class":157,"line":177},[6148,6152,6156,6160,6164],{"type":45,"tag":155,"props":6149,"children":6150},{"style":181},[6151],{"type":51,"value":645},{"type":45,"tag":155,"props":6153,"children":6154},{"style":192},[6155],{"type":51,"value":650},{"type":45,"tag":155,"props":6157,"children":6158},{"style":181},[6159],{"type":51,"value":200},{"type":45,"tag":155,"props":6161,"children":6162},{"style":181},[6163],{"type":51,"value":205},{"type":45,"tag":155,"props":6165,"children":6166},{"style":181},[6167],{"type":51,"value":663},{"type":45,"tag":155,"props":6169,"children":6170},{"class":157,"line":324},[6171,6175,6179,6183,6187],{"type":45,"tag":155,"props":6172,"children":6173},{"style":181},[6174],{"type":51,"value":671},{"type":45,"tag":155,"props":6176,"children":6177},{"style":217},[6178],{"type":51,"value":220},{"type":45,"tag":155,"props":6180,"children":6181},{"style":181},[6182],{"type":51,"value":200},{"type":45,"tag":155,"props":6184,"children":6185},{"style":181},[6186],{"type":51,"value":205},{"type":45,"tag":155,"props":6188,"children":6189},{"style":181},[6190],{"type":51,"value":663},{"type":45,"tag":155,"props":6192,"children":6193},{"class":157,"line":334},[6194,6198,6202,6206,6210,6214,6218,6222,6226],{"type":45,"tag":155,"props":6195,"children":6196},{"style":181},[6197],{"type":51,"value":2977},{"type":45,"tag":155,"props":6199,"children":6200},{"style":694},[6201],{"type":51,"value":697},{"type":45,"tag":155,"props":6203,"children":6204},{"style":181},[6205],{"type":51,"value":200},{"type":45,"tag":155,"props":6207,"children":6208},{"style":181},[6209],{"type":51,"value":205},{"type":45,"tag":155,"props":6211,"children":6212},{"style":181},[6213],{"type":51,"value":710},{"type":45,"tag":155,"props":6215,"children":6216},{"style":181},[6217],{"type":51,"value":200},{"type":45,"tag":155,"props":6219,"children":6220},{"style":235},[6221],{"type":51,"value":719},{"type":45,"tag":155,"props":6223,"children":6224},{"style":181},[6225],{"type":51,"value":200},{"type":45,"tag":155,"props":6227,"children":6228},{"style":181},[6229],{"type":51,"value":3010},{"type":45,"tag":155,"props":6231,"children":6232},{"class":157,"line":343},[6233],{"type":45,"tag":155,"props":6234,"children":6235},{"style":181},[6236],{"type":51,"value":3019},{"type":45,"tag":155,"props":6238,"children":6239},{"class":157,"line":472},[6240],{"type":45,"tag":155,"props":6241,"children":6242},{"style":181},[6243],{"type":51,"value":867},{"type":45,"tag":155,"props":6245,"children":6246},{"class":157,"line":480},[6247],{"type":45,"tag":155,"props":6248,"children":6249},{"style":181},[6250],{"type":51,"value":875},{"type":45,"tag":155,"props":6252,"children":6253},{"class":157,"line":489},[6254],{"type":45,"tag":155,"props":6255,"children":6256},{"emptyLinePlaceholder":328},[6257],{"type":51,"value":331},{"type":45,"tag":155,"props":6259,"children":6260},{"class":157,"line":1790},[6261],{"type":45,"tag":155,"props":6262,"children":6263},{"style":162},[6264],{"type":51,"value":6265},"\u002F\u002F CORRECT: build outputs are cached\n",{"type":45,"tag":155,"props":6267,"children":6268},{"class":157,"line":1798},[6269],{"type":45,"tag":155,"props":6270,"children":6271},{"style":181},[6272],{"type":51,"value":637},{"type":45,"tag":155,"props":6274,"children":6275},{"class":157,"line":1822},[6276,6280,6284,6288,6292],{"type":45,"tag":155,"props":6277,"children":6278},{"style":181},[6279],{"type":51,"value":645},{"type":45,"tag":155,"props":6281,"children":6282},{"style":192},[6283],{"type":51,"value":650},{"type":45,"tag":155,"props":6285,"children":6286},{"style":181},[6287],{"type":51,"value":200},{"type":45,"tag":155,"props":6289,"children":6290},{"style":181},[6291],{"type":51,"value":205},{"type":45,"tag":155,"props":6293,"children":6294},{"style":181},[6295],{"type":51,"value":663},{"type":45,"tag":155,"props":6297,"children":6298},{"class":157,"line":1858},[6299,6303,6307,6311,6315],{"type":45,"tag":155,"props":6300,"children":6301},{"style":181},[6302],{"type":51,"value":671},{"type":45,"tag":155,"props":6304,"children":6305},{"style":217},[6306],{"type":51,"value":220},{"type":45,"tag":155,"props":6308,"children":6309},{"style":181},[6310],{"type":51,"value":200},{"type":45,"tag":155,"props":6312,"children":6313},{"style":181},[6314],{"type":51,"value":205},{"type":45,"tag":155,"props":6316,"children":6317},{"style":181},[6318],{"type":51,"value":663},{"type":45,"tag":155,"props":6320,"children":6321},{"class":157,"line":1891},[6322,6326,6330,6334,6338,6342,6346,6350,6354],{"type":45,"tag":155,"props":6323,"children":6324},{"style":181},[6325],{"type":51,"value":2977},{"type":45,"tag":155,"props":6327,"children":6328},{"style":694},[6329],{"type":51,"value":697},{"type":45,"tag":155,"props":6331,"children":6332},{"style":181},[6333],{"type":51,"value":200},{"type":45,"tag":155,"props":6335,"children":6336},{"style":181},[6337],{"type":51,"value":205},{"type":45,"tag":155,"props":6339,"children":6340},{"style":181},[6341],{"type":51,"value":710},{"type":45,"tag":155,"props":6343,"children":6344},{"style":181},[6345],{"type":51,"value":200},{"type":45,"tag":155,"props":6347,"children":6348},{"style":235},[6349],{"type":51,"value":719},{"type":45,"tag":155,"props":6351,"children":6352},{"style":181},[6353],{"type":51,"value":200},{"type":45,"tag":155,"props":6355,"children":6356},{"style":181},[6357],{"type":51,"value":3221},{"type":45,"tag":155,"props":6359,"children":6360},{"class":157,"line":1899},[6361,6365,6369,6373,6377,6381,6385,6389,6393],{"type":45,"tag":155,"props":6362,"children":6363},{"style":181},[6364],{"type":51,"value":2977},{"type":45,"tag":155,"props":6366,"children":6367},{"style":694},[6368],{"type":51,"value":737},{"type":45,"tag":155,"props":6370,"children":6371},{"style":181},[6372],{"type":51,"value":200},{"type":45,"tag":155,"props":6374,"children":6375},{"style":181},[6376],{"type":51,"value":205},{"type":45,"tag":155,"props":6378,"children":6379},{"style":181},[6380],{"type":51,"value":710},{"type":45,"tag":155,"props":6382,"children":6383},{"style":181},[6384],{"type":51,"value":200},{"type":45,"tag":155,"props":6386,"children":6387},{"style":235},[6388],{"type":51,"value":758},{"type":45,"tag":155,"props":6390,"children":6391},{"style":181},[6392],{"type":51,"value":200},{"type":45,"tag":155,"props":6394,"children":6395},{"style":181},[6396],{"type":51,"value":3010},{"type":45,"tag":155,"props":6398,"children":6399},{"class":157,"line":2947},[6400],{"type":45,"tag":155,"props":6401,"children":6402},{"style":181},[6403],{"type":51,"value":3019},{"type":45,"tag":155,"props":6405,"children":6406},{"class":157,"line":2971},[6407],{"type":45,"tag":155,"props":6408,"children":6409},{"style":181},[6410],{"type":51,"value":867},{"type":45,"tag":155,"props":6412,"children":6413},{"class":157,"line":3013},[6414],{"type":45,"tag":155,"props":6415,"children":6416},{"style":181},[6417],{"type":51,"value":875},{"type":45,"tag":54,"props":6419,"children":6420},{},[6421],{"type":51,"value":6422},"Common outputs by framework:",{"type":45,"tag":2676,"props":6424,"children":6425},{},[6426,6437,6448],{"type":45,"tag":85,"props":6427,"children":6428},{},[6429,6431],{"type":51,"value":6430},"Next.js: ",{"type":45,"tag":91,"props":6432,"children":6434},{"className":6433},[],[6435],{"type":51,"value":6436},"[\".next\u002F**\", \"!.next\u002Fcache\u002F**\", \"!.next\u002Fdev\u002F**\"]",{"type":45,"tag":85,"props":6438,"children":6439},{},[6440,6442],{"type":51,"value":6441},"Vite\u002FRollup: ",{"type":45,"tag":91,"props":6443,"children":6445},{"className":6444},[],[6446],{"type":51,"value":6447},"[\"dist\u002F**\"]",{"type":45,"tag":85,"props":6449,"children":6450},{},[6451,6453,6458,6460],{"type":51,"value":6452},"tsc: ",{"type":45,"tag":91,"props":6454,"children":6456},{"className":6455},[],[6457],{"type":51,"value":6447},{"type":51,"value":6459}," or custom ",{"type":45,"tag":91,"props":6461,"children":6463},{"className":6462},[],[6464],{"type":51,"value":6465},"outDir",{"type":45,"tag":54,"props":6467,"children":6468},{},[6469],{"type":45,"tag":70,"props":6470,"children":6471},{},[6472,6474,6480],{"type":51,"value":6473},"TypeScript ",{"type":45,"tag":91,"props":6475,"children":6477},{"className":6476},[],[6478],{"type":51,"value":6479},"--noEmit",{"type":51,"value":6481}," can still produce cache files:",{"type":45,"tag":54,"props":6483,"children":6484},{},[6485,6487,6493,6495,6501,6503,6509],{"type":51,"value":6486},"When ",{"type":45,"tag":91,"props":6488,"children":6490},{"className":6489},[],[6491],{"type":51,"value":6492},"incremental: true",{"type":51,"value":6494}," in tsconfig.json, ",{"type":45,"tag":91,"props":6496,"children":6498},{"className":6497},[],[6499],{"type":51,"value":6500},"tsc --noEmit",{"type":51,"value":6502}," writes ",{"type":45,"tag":91,"props":6504,"children":6506},{"className":6505},[],[6507],{"type":51,"value":6508},".tsbuildinfo",{"type":51,"value":6510}," files even without emitting JS. Check the tsconfig before assuming no outputs:",{"type":45,"tag":144,"props":6512,"children":6514},{"className":146,"code":6513,"language":148,"meta":149,"style":149},"\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",[6515],{"type":45,"tag":91,"props":6516,"children":6517},{"__ignoreMap":149},[6518,6526,6533,6556,6580,6625,6632,6639],{"type":45,"tag":155,"props":6519,"children":6520},{"class":157,"line":158},[6521],{"type":45,"tag":155,"props":6522,"children":6523},{"style":162},[6524],{"type":51,"value":6525},"\u002F\u002F If tsconfig has incremental: true, tsc --noEmit produces cache files\n",{"type":45,"tag":155,"props":6527,"children":6528},{"class":157,"line":168},[6529],{"type":45,"tag":155,"props":6530,"children":6531},{"style":181},[6532],{"type":51,"value":637},{"type":45,"tag":155,"props":6534,"children":6535},{"class":157,"line":177},[6536,6540,6544,6548,6552],{"type":45,"tag":155,"props":6537,"children":6538},{"style":181},[6539],{"type":51,"value":645},{"type":45,"tag":155,"props":6541,"children":6542},{"style":192},[6543],{"type":51,"value":650},{"type":45,"tag":155,"props":6545,"children":6546},{"style":181},[6547],{"type":51,"value":200},{"type":45,"tag":155,"props":6549,"children":6550},{"style":181},[6551],{"type":51,"value":205},{"type":45,"tag":155,"props":6553,"children":6554},{"style":181},[6555],{"type":51,"value":663},{"type":45,"tag":155,"props":6557,"children":6558},{"class":157,"line":324},[6559,6563,6568,6572,6576],{"type":45,"tag":155,"props":6560,"children":6561},{"style":181},[6562],{"type":51,"value":671},{"type":45,"tag":155,"props":6564,"children":6565},{"style":217},[6566],{"type":51,"value":6567},"typecheck",{"type":45,"tag":155,"props":6569,"children":6570},{"style":181},[6571],{"type":51,"value":200},{"type":45,"tag":155,"props":6573,"children":6574},{"style":181},[6575],{"type":51,"value":205},{"type":45,"tag":155,"props":6577,"children":6578},{"style":181},[6579],{"type":51,"value":663},{"type":45,"tag":155,"props":6581,"children":6582},{"class":157,"line":334},[6583,6587,6591,6595,6599,6603,6607,6612,6616,6620],{"type":45,"tag":155,"props":6584,"children":6585},{"style":181},[6586],{"type":51,"value":2977},{"type":45,"tag":155,"props":6588,"children":6589},{"style":694},[6590],{"type":51,"value":737},{"type":45,"tag":155,"props":6592,"children":6593},{"style":181},[6594],{"type":51,"value":200},{"type":45,"tag":155,"props":6596,"children":6597},{"style":181},[6598],{"type":51,"value":205},{"type":45,"tag":155,"props":6600,"children":6601},{"style":181},[6602],{"type":51,"value":710},{"type":45,"tag":155,"props":6604,"children":6605},{"style":181},[6606],{"type":51,"value":200},{"type":45,"tag":155,"props":6608,"children":6609},{"style":235},[6610],{"type":51,"value":6611},"node_modules\u002F.cache\u002Ftsbuildinfo.json",{"type":45,"tag":155,"props":6613,"children":6614},{"style":181},[6615],{"type":51,"value":200},{"type":45,"tag":155,"props":6617,"children":6618},{"style":181},[6619],{"type":51,"value":767},{"type":45,"tag":155,"props":6621,"children":6622},{"style":162},[6623],{"type":51,"value":6624}," \u002F\u002F or wherever tsBuildInfoFile points\n",{"type":45,"tag":155,"props":6626,"children":6627},{"class":157,"line":343},[6628],{"type":45,"tag":155,"props":6629,"children":6630},{"style":181},[6631],{"type":51,"value":3019},{"type":45,"tag":155,"props":6633,"children":6634},{"class":157,"line":472},[6635],{"type":45,"tag":155,"props":6636,"children":6637},{"style":181},[6638],{"type":51,"value":867},{"type":45,"tag":155,"props":6640,"children":6641},{"class":157,"line":480},[6642],{"type":45,"tag":155,"props":6643,"children":6644},{"style":181},[6645],{"type":51,"value":875},{"type":45,"tag":54,"props":6647,"children":6648},{},[6649],{"type":51,"value":6650},"To determine correct outputs for TypeScript tasks:",{"type":45,"tag":81,"props":6652,"children":6653},{},[6654,6675,6695],{"type":45,"tag":85,"props":6655,"children":6656},{},[6657,6659,6665,6667,6673],{"type":51,"value":6658},"Check if ",{"type":45,"tag":91,"props":6660,"children":6662},{"className":6661},[],[6663],{"type":51,"value":6664},"incremental",{"type":51,"value":6666}," or ",{"type":45,"tag":91,"props":6668,"children":6670},{"className":6669},[],[6671],{"type":51,"value":6672},"composite",{"type":51,"value":6674}," is enabled in tsconfig",{"type":45,"tag":85,"props":6676,"children":6677},{},[6678,6680,6686,6688,6693],{"type":51,"value":6679},"Check ",{"type":45,"tag":91,"props":6681,"children":6683},{"className":6682},[],[6684],{"type":51,"value":6685},"tsBuildInfoFile",{"type":51,"value":6687}," for custom cache location (default: alongside ",{"type":45,"tag":91,"props":6689,"children":6691},{"className":6690},[],[6692],{"type":51,"value":6465},{"type":51,"value":6694}," or in project root)",{"type":45,"tag":85,"props":6696,"children":6697},{},[6698,6700,6705],{"type":51,"value":6699},"If no incremental mode, ",{"type":45,"tag":91,"props":6701,"children":6703},{"className":6702},[],[6704],{"type":51,"value":6500},{"type":51,"value":6706}," produces no files",{"type":45,"tag":1437,"props":6708,"children":6710},{"id":6709},"build-vs-build-confusion",[6711,6716,6717,6722],{"type":45,"tag":91,"props":6712,"children":6714},{"className":6713},[],[6715],{"type":51,"value":719},{"type":51,"value":1253},{"type":45,"tag":91,"props":6718,"children":6720},{"className":6719},[],[6721],{"type":51,"value":220},{"type":51,"value":6723}," Confusion",{"type":45,"tag":144,"props":6725,"children":6727},{"className":146,"code":6726,"language":148,"meta":149,"style":149},"{\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",[6728],{"type":45,"tag":91,"props":6729,"children":6730},{"__ignoreMap":149},[6731,6738,6761,6769,6792,6831,6838,6846,6869,6908,6915,6923,6947,6987,6994,7001],{"type":45,"tag":155,"props":6732,"children":6733},{"class":157,"line":158},[6734],{"type":45,"tag":155,"props":6735,"children":6736},{"style":181},[6737],{"type":51,"value":637},{"type":45,"tag":155,"props":6739,"children":6740},{"class":157,"line":168},[6741,6745,6749,6753,6757],{"type":45,"tag":155,"props":6742,"children":6743},{"style":181},[6744],{"type":51,"value":645},{"type":45,"tag":155,"props":6746,"children":6747},{"style":192},[6748],{"type":51,"value":650},{"type":45,"tag":155,"props":6750,"children":6751},{"style":181},[6752],{"type":51,"value":200},{"type":45,"tag":155,"props":6754,"children":6755},{"style":181},[6756],{"type":51,"value":205},{"type":45,"tag":155,"props":6758,"children":6759},{"style":181},[6760],{"type":51,"value":663},{"type":45,"tag":155,"props":6762,"children":6763},{"class":157,"line":177},[6764],{"type":45,"tag":155,"props":6765,"children":6766},{"style":162},[6767],{"type":51,"value":6768},"    \u002F\u002F ^build = run build in DEPENDENCIES first (other packages this one imports)\n",{"type":45,"tag":155,"props":6770,"children":6771},{"class":157,"line":324},[6772,6776,6780,6784,6788],{"type":45,"tag":155,"props":6773,"children":6774},{"style":181},[6775],{"type":51,"value":671},{"type":45,"tag":155,"props":6777,"children":6778},{"style":217},[6779],{"type":51,"value":220},{"type":45,"tag":155,"props":6781,"children":6782},{"style":181},[6783],{"type":51,"value":200},{"type":45,"tag":155,"props":6785,"children":6786},{"style":181},[6787],{"type":51,"value":205},{"type":45,"tag":155,"props":6789,"children":6790},{"style":181},[6791],{"type":51,"value":663},{"type":45,"tag":155,"props":6793,"children":6794},{"class":157,"line":334},[6795,6799,6803,6807,6811,6815,6819,6823,6827],{"type":45,"tag":155,"props":6796,"children":6797},{"style":181},[6798],{"type":51,"value":2977},{"type":45,"tag":155,"props":6800,"children":6801},{"style":694},[6802],{"type":51,"value":697},{"type":45,"tag":155,"props":6804,"children":6805},{"style":181},[6806],{"type":51,"value":200},{"type":45,"tag":155,"props":6808,"children":6809},{"style":181},[6810],{"type":51,"value":205},{"type":45,"tag":155,"props":6812,"children":6813},{"style":181},[6814],{"type":51,"value":710},{"type":45,"tag":155,"props":6816,"children":6817},{"style":181},[6818],{"type":51,"value":200},{"type":45,"tag":155,"props":6820,"children":6821},{"style":235},[6822],{"type":51,"value":719},{"type":45,"tag":155,"props":6824,"children":6825},{"style":181},[6826],{"type":51,"value":200},{"type":45,"tag":155,"props":6828,"children":6829},{"style":181},[6830],{"type":51,"value":3010},{"type":45,"tag":155,"props":6832,"children":6833},{"class":157,"line":343},[6834],{"type":45,"tag":155,"props":6835,"children":6836},{"style":181},[6837],{"type":51,"value":3933},{"type":45,"tag":155,"props":6839,"children":6840},{"class":157,"line":472},[6841],{"type":45,"tag":155,"props":6842,"children":6843},{"style":162},[6844],{"type":51,"value":6845},"    \u002F\u002F build (no ^) = run build in SAME PACKAGE first\n",{"type":45,"tag":155,"props":6847,"children":6848},{"class":157,"line":480},[6849,6853,6857,6861,6865],{"type":45,"tag":155,"props":6850,"children":6851},{"style":181},[6852],{"type":51,"value":671},{"type":45,"tag":155,"props":6854,"children":6855},{"style":217},[6856],{"type":51,"value":290},{"type":45,"tag":155,"props":6858,"children":6859},{"style":181},[6860],{"type":51,"value":200},{"type":45,"tag":155,"props":6862,"children":6863},{"style":181},[6864],{"type":51,"value":205},{"type":45,"tag":155,"props":6866,"children":6867},{"style":181},[6868],{"type":51,"value":663},{"type":45,"tag":155,"props":6870,"children":6871},{"class":157,"line":489},[6872,6876,6880,6884,6888,6892,6896,6900,6904],{"type":45,"tag":155,"props":6873,"children":6874},{"style":181},[6875],{"type":51,"value":2977},{"type":45,"tag":155,"props":6877,"children":6878},{"style":694},[6879],{"type":51,"value":697},{"type":45,"tag":155,"props":6881,"children":6882},{"style":181},[6883],{"type":51,"value":200},{"type":45,"tag":155,"props":6885,"children":6886},{"style":181},[6887],{"type":51,"value":205},{"type":45,"tag":155,"props":6889,"children":6890},{"style":181},[6891],{"type":51,"value":710},{"type":45,"tag":155,"props":6893,"children":6894},{"style":181},[6895],{"type":51,"value":200},{"type":45,"tag":155,"props":6897,"children":6898},{"style":235},[6899],{"type":51,"value":220},{"type":45,"tag":155,"props":6901,"children":6902},{"style":181},[6903],{"type":51,"value":200},{"type":45,"tag":155,"props":6905,"children":6906},{"style":181},[6907],{"type":51,"value":3010},{"type":45,"tag":155,"props":6909,"children":6910},{"class":157,"line":1790},[6911],{"type":45,"tag":155,"props":6912,"children":6913},{"style":181},[6914],{"type":51,"value":3933},{"type":45,"tag":155,"props":6916,"children":6917},{"class":157,"line":1798},[6918],{"type":45,"tag":155,"props":6919,"children":6920},{"style":162},[6921],{"type":51,"value":6922},"    \u002F\u002F pkg#task = specific package's task\n",{"type":45,"tag":155,"props":6924,"children":6925},{"class":157,"line":1822},[6926,6930,6935,6939,6943],{"type":45,"tag":155,"props":6927,"children":6928},{"style":181},[6929],{"type":51,"value":671},{"type":45,"tag":155,"props":6931,"children":6932},{"style":217},[6933],{"type":51,"value":6934},"deploy",{"type":45,"tag":155,"props":6936,"children":6937},{"style":181},[6938],{"type":51,"value":200},{"type":45,"tag":155,"props":6940,"children":6941},{"style":181},[6942],{"type":51,"value":205},{"type":45,"tag":155,"props":6944,"children":6945},{"style":181},[6946],{"type":51,"value":663},{"type":45,"tag":155,"props":6948,"children":6949},{"class":157,"line":1858},[6950,6954,6958,6962,6966,6970,6974,6979,6983],{"type":45,"tag":155,"props":6951,"children":6952},{"style":181},[6953],{"type":51,"value":2977},{"type":45,"tag":155,"props":6955,"children":6956},{"style":694},[6957],{"type":51,"value":697},{"type":45,"tag":155,"props":6959,"children":6960},{"style":181},[6961],{"type":51,"value":200},{"type":45,"tag":155,"props":6963,"children":6964},{"style":181},[6965],{"type":51,"value":205},{"type":45,"tag":155,"props":6967,"children":6968},{"style":181},[6969],{"type":51,"value":710},{"type":45,"tag":155,"props":6971,"children":6972},{"style":181},[6973],{"type":51,"value":200},{"type":45,"tag":155,"props":6975,"children":6976},{"style":235},[6977],{"type":51,"value":6978},"web#build",{"type":45,"tag":155,"props":6980,"children":6981},{"style":181},[6982],{"type":51,"value":200},{"type":45,"tag":155,"props":6984,"children":6985},{"style":181},[6986],{"type":51,"value":3010},{"type":45,"tag":155,"props":6988,"children":6989},{"class":157,"line":1891},[6990],{"type":45,"tag":155,"props":6991,"children":6992},{"style":181},[6993],{"type":51,"value":3019},{"type":45,"tag":155,"props":6995,"children":6996},{"class":157,"line":1899},[6997],{"type":45,"tag":155,"props":6998,"children":6999},{"style":181},[7000],{"type":51,"value":867},{"type":45,"tag":155,"props":7002,"children":7003},{"class":157,"line":2947},[7004],{"type":45,"tag":155,"props":7005,"children":7006},{"style":181},[7007],{"type":51,"value":875},{"type":45,"tag":1437,"props":7009,"children":7011},{"id":7010},"environment-variables-not-hashed",[7012],{"type":51,"value":7013},"Environment Variables Not Hashed",{"type":45,"tag":144,"props":7015,"children":7017},{"className":146,"code":7016,"language":148,"meta":149,"style":149},"\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",[7018],{"type":45,"tag":91,"props":7019,"children":7020},{"__ignoreMap":149},[7021,7029,7036,7059,7082,7121,7128,7135,7142,7149,7157,7164,7187,7210,7249,7305,7312,7319],{"type":45,"tag":155,"props":7022,"children":7023},{"class":157,"line":158},[7024],{"type":45,"tag":155,"props":7025,"children":7026},{"style":162},[7027],{"type":51,"value":7028},"\u002F\u002F WRONG: API_URL changes won't cause rebuilds\n",{"type":45,"tag":155,"props":7030,"children":7031},{"class":157,"line":168},[7032],{"type":45,"tag":155,"props":7033,"children":7034},{"style":181},[7035],{"type":51,"value":637},{"type":45,"tag":155,"props":7037,"children":7038},{"class":157,"line":177},[7039,7043,7047,7051,7055],{"type":45,"tag":155,"props":7040,"children":7041},{"style":181},[7042],{"type":51,"value":645},{"type":45,"tag":155,"props":7044,"children":7045},{"style":192},[7046],{"type":51,"value":650},{"type":45,"tag":155,"props":7048,"children":7049},{"style":181},[7050],{"type":51,"value":200},{"type":45,"tag":155,"props":7052,"children":7053},{"style":181},[7054],{"type":51,"value":205},{"type":45,"tag":155,"props":7056,"children":7057},{"style":181},[7058],{"type":51,"value":663},{"type":45,"tag":155,"props":7060,"children":7061},{"class":157,"line":324},[7062,7066,7070,7074,7078],{"type":45,"tag":155,"props":7063,"children":7064},{"style":181},[7065],{"type":51,"value":671},{"type":45,"tag":155,"props":7067,"children":7068},{"style":217},[7069],{"type":51,"value":220},{"type":45,"tag":155,"props":7071,"children":7072},{"style":181},[7073],{"type":51,"value":200},{"type":45,"tag":155,"props":7075,"children":7076},{"style":181},[7077],{"type":51,"value":205},{"type":45,"tag":155,"props":7079,"children":7080},{"style":181},[7081],{"type":51,"value":663},{"type":45,"tag":155,"props":7083,"children":7084},{"class":157,"line":334},[7085,7089,7093,7097,7101,7105,7109,7113,7117],{"type":45,"tag":155,"props":7086,"children":7087},{"style":181},[7088],{"type":51,"value":2977},{"type":45,"tag":155,"props":7090,"children":7091},{"style":694},[7092],{"type":51,"value":737},{"type":45,"tag":155,"props":7094,"children":7095},{"style":181},[7096],{"type":51,"value":200},{"type":45,"tag":155,"props":7098,"children":7099},{"style":181},[7100],{"type":51,"value":205},{"type":45,"tag":155,"props":7102,"children":7103},{"style":181},[7104],{"type":51,"value":710},{"type":45,"tag":155,"props":7106,"children":7107},{"style":181},[7108],{"type":51,"value":200},{"type":45,"tag":155,"props":7110,"children":7111},{"style":235},[7112],{"type":51,"value":758},{"type":45,"tag":155,"props":7114,"children":7115},{"style":181},[7116],{"type":51,"value":200},{"type":45,"tag":155,"props":7118,"children":7119},{"style":181},[7120],{"type":51,"value":3010},{"type":45,"tag":155,"props":7122,"children":7123},{"class":157,"line":343},[7124],{"type":45,"tag":155,"props":7125,"children":7126},{"style":181},[7127],{"type":51,"value":3019},{"type":45,"tag":155,"props":7129,"children":7130},{"class":157,"line":472},[7131],{"type":45,"tag":155,"props":7132,"children":7133},{"style":181},[7134],{"type":51,"value":867},{"type":45,"tag":155,"props":7136,"children":7137},{"class":157,"line":480},[7138],{"type":45,"tag":155,"props":7139,"children":7140},{"style":181},[7141],{"type":51,"value":875},{"type":45,"tag":155,"props":7143,"children":7144},{"class":157,"line":489},[7145],{"type":45,"tag":155,"props":7146,"children":7147},{"emptyLinePlaceholder":328},[7148],{"type":51,"value":331},{"type":45,"tag":155,"props":7150,"children":7151},{"class":157,"line":1790},[7152],{"type":45,"tag":155,"props":7153,"children":7154},{"style":162},[7155],{"type":51,"value":7156},"\u002F\u002F CORRECT: API_URL changes invalidate cache\n",{"type":45,"tag":155,"props":7158,"children":7159},{"class":157,"line":1798},[7160],{"type":45,"tag":155,"props":7161,"children":7162},{"style":181},[7163],{"type":51,"value":637},{"type":45,"tag":155,"props":7165,"children":7166},{"class":157,"line":1822},[7167,7171,7175,7179,7183],{"type":45,"tag":155,"props":7168,"children":7169},{"style":181},[7170],{"type":51,"value":645},{"type":45,"tag":155,"props":7172,"children":7173},{"style":192},[7174],{"type":51,"value":650},{"type":45,"tag":155,"props":7176,"children":7177},{"style":181},[7178],{"type":51,"value":200},{"type":45,"tag":155,"props":7180,"children":7181},{"style":181},[7182],{"type":51,"value":205},{"type":45,"tag":155,"props":7184,"children":7185},{"style":181},[7186],{"type":51,"value":663},{"type":45,"tag":155,"props":7188,"children":7189},{"class":157,"line":1858},[7190,7194,7198,7202,7206],{"type":45,"tag":155,"props":7191,"children":7192},{"style":181},[7193],{"type":51,"value":671},{"type":45,"tag":155,"props":7195,"children":7196},{"style":217},[7197],{"type":51,"value":220},{"type":45,"tag":155,"props":7199,"children":7200},{"style":181},[7201],{"type":51,"value":200},{"type":45,"tag":155,"props":7203,"children":7204},{"style":181},[7205],{"type":51,"value":205},{"type":45,"tag":155,"props":7207,"children":7208},{"style":181},[7209],{"type":51,"value":663},{"type":45,"tag":155,"props":7211,"children":7212},{"class":157,"line":1891},[7213,7217,7221,7225,7229,7233,7237,7241,7245],{"type":45,"tag":155,"props":7214,"children":7215},{"style":181},[7216],{"type":51,"value":2977},{"type":45,"tag":155,"props":7218,"children":7219},{"style":694},[7220],{"type":51,"value":737},{"type":45,"tag":155,"props":7222,"children":7223},{"style":181},[7224],{"type":51,"value":200},{"type":45,"tag":155,"props":7226,"children":7227},{"style":181},[7228],{"type":51,"value":205},{"type":45,"tag":155,"props":7230,"children":7231},{"style":181},[7232],{"type":51,"value":710},{"type":45,"tag":155,"props":7234,"children":7235},{"style":181},[7236],{"type":51,"value":200},{"type":45,"tag":155,"props":7238,"children":7239},{"style":235},[7240],{"type":51,"value":758},{"type":45,"tag":155,"props":7242,"children":7243},{"style":181},[7244],{"type":51,"value":200},{"type":45,"tag":155,"props":7246,"children":7247},{"style":181},[7248],{"type":51,"value":3221},{"type":45,"tag":155,"props":7250,"children":7251},{"class":157,"line":1899},[7252,7256,7260,7264,7268,7272,7276,7280,7284,7288,7292,7297,7301],{"type":45,"tag":155,"props":7253,"children":7254},{"style":181},[7255],{"type":51,"value":2977},{"type":45,"tag":155,"props":7257,"children":7258},{"style":694},[7259],{"type":51,"value":3824},{"type":45,"tag":155,"props":7261,"children":7262},{"style":181},[7263],{"type":51,"value":200},{"type":45,"tag":155,"props":7265,"children":7266},{"style":181},[7267],{"type":51,"value":205},{"type":45,"tag":155,"props":7269,"children":7270},{"style":181},[7271],{"type":51,"value":710},{"type":45,"tag":155,"props":7273,"children":7274},{"style":181},[7275],{"type":51,"value":200},{"type":45,"tag":155,"props":7277,"children":7278},{"style":235},[7279],{"type":51,"value":3845},{"type":45,"tag":155,"props":7281,"children":7282},{"style":181},[7283],{"type":51,"value":200},{"type":45,"tag":155,"props":7285,"children":7286},{"style":181},[7287],{"type":51,"value":247},{"type":45,"tag":155,"props":7289,"children":7290},{"style":181},[7291],{"type":51,"value":189},{"type":45,"tag":155,"props":7293,"children":7294},{"style":235},[7295],{"type":51,"value":7296},"API_KEY",{"type":45,"tag":155,"props":7298,"children":7299},{"style":181},[7300],{"type":51,"value":200},{"type":45,"tag":155,"props":7302,"children":7303},{"style":181},[7304],{"type":51,"value":3010},{"type":45,"tag":155,"props":7306,"children":7307},{"class":157,"line":2947},[7308],{"type":45,"tag":155,"props":7309,"children":7310},{"style":181},[7311],{"type":51,"value":3019},{"type":45,"tag":155,"props":7313,"children":7314},{"class":157,"line":2971},[7315],{"type":45,"tag":155,"props":7316,"children":7317},{"style":181},[7318],{"type":51,"value":867},{"type":45,"tag":155,"props":7320,"children":7321},{"class":157,"line":3013},[7322],{"type":45,"tag":155,"props":7323,"children":7324},{"style":181},[7325],{"type":51,"value":875},{"type":45,"tag":1437,"props":7327,"children":7329},{"id":7328},"env-files-not-in-inputs",[7330,7335],{"type":45,"tag":91,"props":7331,"children":7333},{"className":7332},[],[7334],{"type":51,"value":3212},{"type":51,"value":7336}," Files Not in Inputs",{"type":45,"tag":54,"props":7338,"children":7339},{},[7340,7342,7347],{"type":51,"value":7341},"Turbo does NOT load ",{"type":45,"tag":91,"props":7343,"children":7345},{"className":7344},[],[7346],{"type":51,"value":3212},{"type":51,"value":7348}," files - your framework does. But Turbo needs to know about changes:",{"type":45,"tag":144,"props":7350,"children":7352},{"className":146,"code":7351,"language":148,"meta":149,"style":149},"\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",[7353],{"type":45,"tag":91,"props":7354,"children":7355},{"__ignoreMap":149},[7356,7364,7371,7394,7417,7456,7463,7470,7477,7484,7492,7499,7522,7545,7584,7656,7663,7670],{"type":45,"tag":155,"props":7357,"children":7358},{"class":157,"line":158},[7359],{"type":45,"tag":155,"props":7360,"children":7361},{"style":162},[7362],{"type":51,"value":7363},"\u002F\u002F WRONG: .env changes don't invalidate cache\n",{"type":45,"tag":155,"props":7365,"children":7366},{"class":157,"line":168},[7367],{"type":45,"tag":155,"props":7368,"children":7369},{"style":181},[7370],{"type":51,"value":637},{"type":45,"tag":155,"props":7372,"children":7373},{"class":157,"line":177},[7374,7378,7382,7386,7390],{"type":45,"tag":155,"props":7375,"children":7376},{"style":181},[7377],{"type":51,"value":645},{"type":45,"tag":155,"props":7379,"children":7380},{"style":192},[7381],{"type":51,"value":650},{"type":45,"tag":155,"props":7383,"children":7384},{"style":181},[7385],{"type":51,"value":200},{"type":45,"tag":155,"props":7387,"children":7388},{"style":181},[7389],{"type":51,"value":205},{"type":45,"tag":155,"props":7391,"children":7392},{"style":181},[7393],{"type":51,"value":663},{"type":45,"tag":155,"props":7395,"children":7396},{"class":157,"line":324},[7397,7401,7405,7409,7413],{"type":45,"tag":155,"props":7398,"children":7399},{"style":181},[7400],{"type":51,"value":671},{"type":45,"tag":155,"props":7402,"children":7403},{"style":217},[7404],{"type":51,"value":220},{"type":45,"tag":155,"props":7406,"children":7407},{"style":181},[7408],{"type":51,"value":200},{"type":45,"tag":155,"props":7410,"children":7411},{"style":181},[7412],{"type":51,"value":205},{"type":45,"tag":155,"props":7414,"children":7415},{"style":181},[7416],{"type":51,"value":663},{"type":45,"tag":155,"props":7418,"children":7419},{"class":157,"line":334},[7420,7424,7428,7432,7436,7440,7444,7448,7452],{"type":45,"tag":155,"props":7421,"children":7422},{"style":181},[7423],{"type":51,"value":2977},{"type":45,"tag":155,"props":7425,"children":7426},{"style":694},[7427],{"type":51,"value":3824},{"type":45,"tag":155,"props":7429,"children":7430},{"style":181},[7431],{"type":51,"value":200},{"type":45,"tag":155,"props":7433,"children":7434},{"style":181},[7435],{"type":51,"value":205},{"type":45,"tag":155,"props":7437,"children":7438},{"style":181},[7439],{"type":51,"value":710},{"type":45,"tag":155,"props":7441,"children":7442},{"style":181},[7443],{"type":51,"value":200},{"type":45,"tag":155,"props":7445,"children":7446},{"style":235},[7447],{"type":51,"value":3845},{"type":45,"tag":155,"props":7449,"children":7450},{"style":181},[7451],{"type":51,"value":200},{"type":45,"tag":155,"props":7453,"children":7454},{"style":181},[7455],{"type":51,"value":3010},{"type":45,"tag":155,"props":7457,"children":7458},{"class":157,"line":343},[7459],{"type":45,"tag":155,"props":7460,"children":7461},{"style":181},[7462],{"type":51,"value":3019},{"type":45,"tag":155,"props":7464,"children":7465},{"class":157,"line":472},[7466],{"type":45,"tag":155,"props":7467,"children":7468},{"style":181},[7469],{"type":51,"value":867},{"type":45,"tag":155,"props":7471,"children":7472},{"class":157,"line":480},[7473],{"type":45,"tag":155,"props":7474,"children":7475},{"style":181},[7476],{"type":51,"value":875},{"type":45,"tag":155,"props":7478,"children":7479},{"class":157,"line":489},[7480],{"type":45,"tag":155,"props":7481,"children":7482},{"emptyLinePlaceholder":328},[7483],{"type":51,"value":331},{"type":45,"tag":155,"props":7485,"children":7486},{"class":157,"line":1790},[7487],{"type":45,"tag":155,"props":7488,"children":7489},{"style":162},[7490],{"type":51,"value":7491},"\u002F\u002F CORRECT: .env file changes invalidate cache\n",{"type":45,"tag":155,"props":7493,"children":7494},{"class":157,"line":1798},[7495],{"type":45,"tag":155,"props":7496,"children":7497},{"style":181},[7498],{"type":51,"value":637},{"type":45,"tag":155,"props":7500,"children":7501},{"class":157,"line":1822},[7502,7506,7510,7514,7518],{"type":45,"tag":155,"props":7503,"children":7504},{"style":181},[7505],{"type":51,"value":645},{"type":45,"tag":155,"props":7507,"children":7508},{"style":192},[7509],{"type":51,"value":650},{"type":45,"tag":155,"props":7511,"children":7512},{"style":181},[7513],{"type":51,"value":200},{"type":45,"tag":155,"props":7515,"children":7516},{"style":181},[7517],{"type":51,"value":205},{"type":45,"tag":155,"props":7519,"children":7520},{"style":181},[7521],{"type":51,"value":663},{"type":45,"tag":155,"props":7523,"children":7524},{"class":157,"line":1858},[7525,7529,7533,7537,7541],{"type":45,"tag":155,"props":7526,"children":7527},{"style":181},[7528],{"type":51,"value":671},{"type":45,"tag":155,"props":7530,"children":7531},{"style":217},[7532],{"type":51,"value":220},{"type":45,"tag":155,"props":7534,"children":7535},{"style":181},[7536],{"type":51,"value":200},{"type":45,"tag":155,"props":7538,"children":7539},{"style":181},[7540],{"type":51,"value":205},{"type":45,"tag":155,"props":7542,"children":7543},{"style":181},[7544],{"type":51,"value":663},{"type":45,"tag":155,"props":7546,"children":7547},{"class":157,"line":1891},[7548,7552,7556,7560,7564,7568,7572,7576,7580],{"type":45,"tag":155,"props":7549,"children":7550},{"style":181},[7551],{"type":51,"value":2977},{"type":45,"tag":155,"props":7553,"children":7554},{"style":694},[7555],{"type":51,"value":3824},{"type":45,"tag":155,"props":7557,"children":7558},{"style":181},[7559],{"type":51,"value":200},{"type":45,"tag":155,"props":7561,"children":7562},{"style":181},[7563],{"type":51,"value":205},{"type":45,"tag":155,"props":7565,"children":7566},{"style":181},[7567],{"type":51,"value":710},{"type":45,"tag":155,"props":7569,"children":7570},{"style":181},[7571],{"type":51,"value":200},{"type":45,"tag":155,"props":7573,"children":7574},{"style":235},[7575],{"type":51,"value":3845},{"type":45,"tag":155,"props":7577,"children":7578},{"style":181},[7579],{"type":51,"value":200},{"type":45,"tag":155,"props":7581,"children":7582},{"style":181},[7583],{"type":51,"value":3221},{"type":45,"tag":155,"props":7585,"children":7586},{"class":157,"line":1899},[7587,7591,7595,7599,7603,7607,7611,7615,7619,7623,7627,7631,7635,7639,7643,7648,7652],{"type":45,"tag":155,"props":7588,"children":7589},{"style":181},[7590],{"type":51,"value":2977},{"type":45,"tag":155,"props":7592,"children":7593},{"style":694},[7594],{"type":51,"value":3087},{"type":45,"tag":155,"props":7596,"children":7597},{"style":181},[7598],{"type":51,"value":200},{"type":45,"tag":155,"props":7600,"children":7601},{"style":181},[7602],{"type":51,"value":205},{"type":45,"tag":155,"props":7604,"children":7605},{"style":181},[7606],{"type":51,"value":710},{"type":45,"tag":155,"props":7608,"children":7609},{"style":181},[7610],{"type":51,"value":200},{"type":45,"tag":155,"props":7612,"children":7613},{"style":235},[7614],{"type":51,"value":3299},{"type":45,"tag":155,"props":7616,"children":7617},{"style":181},[7618],{"type":51,"value":200},{"type":45,"tag":155,"props":7620,"children":7621},{"style":181},[7622],{"type":51,"value":247},{"type":45,"tag":155,"props":7624,"children":7625},{"style":181},[7626],{"type":51,"value":189},{"type":45,"tag":155,"props":7628,"children":7629},{"style":235},[7630],{"type":51,"value":3212},{"type":45,"tag":155,"props":7632,"children":7633},{"style":181},[7634],{"type":51,"value":200},{"type":45,"tag":155,"props":7636,"children":7637},{"style":181},[7638],{"type":51,"value":247},{"type":45,"tag":155,"props":7640,"children":7641},{"style":181},[7642],{"type":51,"value":189},{"type":45,"tag":155,"props":7644,"children":7645},{"style":235},[7646],{"type":51,"value":7647},".env.*",{"type":45,"tag":155,"props":7649,"children":7650},{"style":181},[7651],{"type":51,"value":200},{"type":45,"tag":155,"props":7653,"children":7654},{"style":181},[7655],{"type":51,"value":3010},{"type":45,"tag":155,"props":7657,"children":7658},{"class":157,"line":2947},[7659],{"type":45,"tag":155,"props":7660,"children":7661},{"style":181},[7662],{"type":51,"value":3019},{"type":45,"tag":155,"props":7664,"children":7665},{"class":157,"line":2971},[7666],{"type":45,"tag":155,"props":7667,"children":7668},{"style":181},[7669],{"type":51,"value":867},{"type":45,"tag":155,"props":7671,"children":7672},{"class":157,"line":3013},[7673],{"type":45,"tag":155,"props":7674,"children":7675},{"style":181},[7676],{"type":51,"value":875},{"type":45,"tag":1437,"props":7678,"children":7680},{"id":7679},"root-env-file-in-monorepo",[7681,7682,7687],{"type":51,"value":112},{"type":45,"tag":91,"props":7683,"children":7685},{"className":7684},[],[7686],{"type":51,"value":3212},{"type":51,"value":7688}," File in Monorepo",{"type":45,"tag":54,"props":7690,"children":7691},{},[7692,7694,7699],{"type":51,"value":7693},"A ",{"type":45,"tag":91,"props":7695,"children":7697},{"className":7696},[],[7698],{"type":51,"value":3212},{"type":51,"value":7700}," 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":45,"tag":144,"props":7702,"children":7705},{"className":7703,"code":7704,"language":51},[1446],"\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",[7706],{"type":45,"tag":91,"props":7707,"children":7708},{"__ignoreMap":149},[7709],{"type":51,"value":7704},{"type":45,"tag":54,"props":7711,"children":7712},{},[7713],{"type":45,"tag":70,"props":7714,"children":7715},{},[7716,7718,7723],{"type":51,"value":7717},"Problems with root ",{"type":45,"tag":91,"props":7719,"children":7721},{"className":7720},[],[7722],{"type":51,"value":3212},{"type":51,"value":205},{"type":45,"tag":2676,"props":7725,"children":7726},{},[7727,7732,7737,7742,7747],{"type":45,"tag":85,"props":7728,"children":7729},{},[7730],{"type":51,"value":7731},"Unclear which packages consume which variables",{"type":45,"tag":85,"props":7733,"children":7734},{},[7735],{"type":51,"value":7736},"All packages get all variables (even ones they don't need)",{"type":45,"tag":85,"props":7738,"children":7739},{},[7740],{"type":51,"value":7741},"Cache invalidation is coarse-grained (root .env change invalidates everything)",{"type":45,"tag":85,"props":7743,"children":7744},{},[7745],{"type":51,"value":7746},"Security risk: packages may accidentally access sensitive vars meant for others",{"type":45,"tag":85,"props":7748,"children":7749},{},[7750],{"type":51,"value":7751},"Bad habits start small — starter templates should model correct patterns",{"type":45,"tag":54,"props":7753,"children":7754},{},[7755,7760,7762,7767],{"type":45,"tag":70,"props":7756,"children":7757},{},[7758],{"type":51,"value":7759},"If you must share variables",{"type":51,"value":7761},", use ",{"type":45,"tag":91,"props":7763,"children":7765},{"className":7764},[],[7766],{"type":51,"value":4314},{"type":51,"value":7768}," to be explicit about what's shared, and document why.",{"type":45,"tag":1437,"props":7770,"children":7772},{"id":7771},"strict-mode-filtering-ci-variables",[7773],{"type":51,"value":7774},"Strict Mode Filtering CI Variables",{"type":45,"tag":54,"props":7776,"children":7777},{},[7778,7780,7785,7787,7792],{"type":51,"value":7779},"By default, Turborepo filters environment variables to only those in ",{"type":45,"tag":91,"props":7781,"children":7783},{"className":7782},[],[7784],{"type":51,"value":3824},{"type":51,"value":7786},"\u002F",{"type":45,"tag":91,"props":7788,"children":7790},{"className":7789},[],[7791],{"type":51,"value":4314},{"type":51,"value":7793},". CI variables may be missing:",{"type":45,"tag":144,"props":7795,"children":7797},{"className":146,"code":7796,"language":148,"meta":149,"style":149},"\u002F\u002F If CI scripts need GITHUB_TOKEN but it's not in env:\n{\n  \"globalPassThroughEnv\": [\"GITHUB_TOKEN\", \"CI\"],\n  \"tasks\": { ... }\n}\n",[7798],{"type":45,"tag":91,"props":7799,"children":7800},{"__ignoreMap":149},[7801,7809,7816,7874,7907],{"type":45,"tag":155,"props":7802,"children":7803},{"class":157,"line":158},[7804],{"type":45,"tag":155,"props":7805,"children":7806},{"style":162},[7807],{"type":51,"value":7808},"\u002F\u002F If CI scripts need GITHUB_TOKEN but it's not in env:\n",{"type":45,"tag":155,"props":7810,"children":7811},{"class":157,"line":168},[7812],{"type":45,"tag":155,"props":7813,"children":7814},{"style":181},[7815],{"type":51,"value":637},{"type":45,"tag":155,"props":7817,"children":7818},{"class":157,"line":177},[7819,7823,7828,7832,7836,7840,7844,7849,7853,7857,7861,7866,7870],{"type":45,"tag":155,"props":7820,"children":7821},{"style":181},[7822],{"type":51,"value":645},{"type":45,"tag":155,"props":7824,"children":7825},{"style":192},[7826],{"type":51,"value":7827},"globalPassThroughEnv",{"type":45,"tag":155,"props":7829,"children":7830},{"style":181},[7831],{"type":51,"value":200},{"type":45,"tag":155,"props":7833,"children":7834},{"style":181},[7835],{"type":51,"value":205},{"type":45,"tag":155,"props":7837,"children":7838},{"style":181},[7839],{"type":51,"value":710},{"type":45,"tag":155,"props":7841,"children":7842},{"style":181},[7843],{"type":51,"value":200},{"type":45,"tag":155,"props":7845,"children":7846},{"style":235},[7847],{"type":51,"value":7848},"GITHUB_TOKEN",{"type":45,"tag":155,"props":7850,"children":7851},{"style":181},[7852],{"type":51,"value":200},{"type":45,"tag":155,"props":7854,"children":7855},{"style":181},[7856],{"type":51,"value":247},{"type":45,"tag":155,"props":7858,"children":7859},{"style":181},[7860],{"type":51,"value":189},{"type":45,"tag":155,"props":7862,"children":7863},{"style":235},[7864],{"type":51,"value":7865},"CI",{"type":45,"tag":155,"props":7867,"children":7868},{"style":181},[7869],{"type":51,"value":200},{"type":45,"tag":155,"props":7871,"children":7872},{"style":181},[7873],{"type":51,"value":3221},{"type":45,"tag":155,"props":7875,"children":7876},{"class":157,"line":324},[7877,7881,7885,7889,7893,7897,7903],{"type":45,"tag":155,"props":7878,"children":7879},{"style":181},[7880],{"type":51,"value":645},{"type":45,"tag":155,"props":7882,"children":7883},{"style":192},[7884],{"type":51,"value":650},{"type":45,"tag":155,"props":7886,"children":7887},{"style":181},[7888],{"type":51,"value":200},{"type":45,"tag":155,"props":7890,"children":7891},{"style":181},[7892],{"type":51,"value":205},{"type":45,"tag":155,"props":7894,"children":7895},{"style":181},[7896],{"type":51,"value":210},{"type":45,"tag":155,"props":7898,"children":7900},{"style":7899},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[7901],{"type":51,"value":7902}," ... ",{"type":45,"tag":155,"props":7904,"children":7905},{"style":181},[7906],{"type":51,"value":875},{"type":45,"tag":155,"props":7908,"children":7909},{"class":157,"line":334},[7910],{"type":45,"tag":155,"props":7911,"children":7912},{"style":181},[7913],{"type":51,"value":875},{"type":45,"tag":54,"props":7915,"children":7916},{},[7917,7919,7925],{"type":51,"value":7918},"Or use ",{"type":45,"tag":91,"props":7920,"children":7922},{"className":7921},[],[7923],{"type":51,"value":7924},"--env-mode=loose",{"type":51,"value":7926}," (not recommended for production).",{"type":45,"tag":1437,"props":7928,"children":7930},{"id":7929},"shared-code-in-apps-should-be-a-package",[7931],{"type":51,"value":7932},"Shared Code in Apps (Should Be a Package)",{"type":45,"tag":144,"props":7934,"children":7937},{"className":7935,"code":7936,"language":51},[1446],"\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",[7938],{"type":45,"tag":91,"props":7939,"children":7940},{"__ignoreMap":149},[7941],{"type":51,"value":7936},{"type":45,"tag":1437,"props":7943,"children":7945},{"id":7944},"accessing-files-across-package-boundaries",[7946],{"type":51,"value":7947},"Accessing Files Across Package Boundaries",{"type":45,"tag":144,"props":7949,"children":7952},{"className":7950,"code":7951,"language":31,"meta":149,"style":149},"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",[7953],{"type":45,"tag":91,"props":7954,"children":7955},{"__ignoreMap":149},[7956,7964,8009,8016,8024],{"type":45,"tag":155,"props":7957,"children":7958},{"class":157,"line":158},[7959],{"type":45,"tag":155,"props":7960,"children":7961},{"style":162},[7962],{"type":51,"value":7963},"\u002F\u002F WRONG: Reaching into another package's internals\n",{"type":45,"tag":155,"props":7965,"children":7966},{"class":157,"line":168},[7967,7973,7977,7982,7986,7991,7995,8000,8004],{"type":45,"tag":155,"props":7968,"children":7970},{"style":7969},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[7971],{"type":51,"value":7972},"import",{"type":45,"tag":155,"props":7974,"children":7975},{"style":181},[7976],{"type":51,"value":210},{"type":45,"tag":155,"props":7978,"children":7979},{"style":7899},[7980],{"type":51,"value":7981}," Button",{"type":45,"tag":155,"props":7983,"children":7984},{"style":181},[7985],{"type":51,"value":316},{"type":45,"tag":155,"props":7987,"children":7988},{"style":7969},[7989],{"type":51,"value":7990}," from",{"type":45,"tag":155,"props":7992,"children":7993},{"style":181},[7994],{"type":51,"value":189},{"type":45,"tag":155,"props":7996,"children":7997},{"style":235},[7998],{"type":51,"value":7999},"..\u002F..\u002Fpackages\u002Fui\u002Fsrc\u002Fbutton",{"type":45,"tag":155,"props":8001,"children":8002},{"style":181},[8003],{"type":51,"value":200},{"type":45,"tag":155,"props":8005,"children":8006},{"style":181},[8007],{"type":51,"value":8008},";\n",{"type":45,"tag":155,"props":8010,"children":8011},{"class":157,"line":177},[8012],{"type":45,"tag":155,"props":8013,"children":8014},{"emptyLinePlaceholder":328},[8015],{"type":51,"value":331},{"type":45,"tag":155,"props":8017,"children":8018},{"class":157,"line":324},[8019],{"type":45,"tag":155,"props":8020,"children":8021},{"style":162},[8022],{"type":51,"value":8023},"\u002F\u002F CORRECT: Install and import properly\n",{"type":45,"tag":155,"props":8025,"children":8026},{"class":157,"line":334},[8027,8031,8035,8039,8043,8047,8051,8056,8060],{"type":45,"tag":155,"props":8028,"children":8029},{"style":7969},[8030],{"type":51,"value":7972},{"type":45,"tag":155,"props":8032,"children":8033},{"style":181},[8034],{"type":51,"value":210},{"type":45,"tag":155,"props":8036,"children":8037},{"style":7899},[8038],{"type":51,"value":7981},{"type":45,"tag":155,"props":8040,"children":8041},{"style":181},[8042],{"type":51,"value":316},{"type":45,"tag":155,"props":8044,"children":8045},{"style":7969},[8046],{"type":51,"value":7990},{"type":45,"tag":155,"props":8048,"children":8049},{"style":181},[8050],{"type":51,"value":189},{"type":45,"tag":155,"props":8052,"children":8053},{"style":235},[8054],{"type":51,"value":8055},"@repo\u002Fui\u002Fbutton",{"type":45,"tag":155,"props":8057,"children":8058},{"style":181},[8059],{"type":51,"value":200},{"type":45,"tag":155,"props":8061,"children":8062},{"style":181},[8063],{"type":51,"value":8008},{"type":45,"tag":1437,"props":8065,"children":8067},{"id":8066},"too-many-root-dependencies",[8068],{"type":51,"value":8069},"Too Many Root Dependencies",{"type":45,"tag":144,"props":8071,"children":8073},{"className":146,"code":8072,"language":148,"meta":149,"style":149},"\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",[8074],{"type":45,"tag":91,"props":8075,"children":8076},{"__ignoreMap":149},[8077,8085,8092,8115,8152,8185,8192,8199,8206,8214,8221,8245,8277,8284],{"type":45,"tag":155,"props":8078,"children":8079},{"class":157,"line":158},[8080],{"type":45,"tag":155,"props":8081,"children":8082},{"style":162},[8083],{"type":51,"value":8084},"\u002F\u002F WRONG: App dependencies in root\n",{"type":45,"tag":155,"props":8086,"children":8087},{"class":157,"line":168},[8088],{"type":45,"tag":155,"props":8089,"children":8090},{"style":181},[8091],{"type":51,"value":637},{"type":45,"tag":155,"props":8093,"children":8094},{"class":157,"line":177},[8095,8099,8103,8107,8111],{"type":45,"tag":155,"props":8096,"children":8097},{"style":181},[8098],{"type":51,"value":645},{"type":45,"tag":155,"props":8100,"children":8101},{"style":192},[8102],{"type":51,"value":2742},{"type":45,"tag":155,"props":8104,"children":8105},{"style":181},[8106],{"type":51,"value":200},{"type":45,"tag":155,"props":8108,"children":8109},{"style":181},[8110],{"type":51,"value":205},{"type":45,"tag":155,"props":8112,"children":8113},{"style":181},[8114],{"type":51,"value":663},{"type":45,"tag":155,"props":8116,"children":8117},{"class":157,"line":324},[8118,8122,8127,8131,8135,8139,8144,8148],{"type":45,"tag":155,"props":8119,"children":8120},{"style":181},[8121],{"type":51,"value":671},{"type":45,"tag":155,"props":8123,"children":8124},{"style":217},[8125],{"type":51,"value":8126},"react",{"type":45,"tag":155,"props":8128,"children":8129},{"style":181},[8130],{"type":51,"value":200},{"type":45,"tag":155,"props":8132,"children":8133},{"style":181},[8134],{"type":51,"value":205},{"type":45,"tag":155,"props":8136,"children":8137},{"style":181},[8138],{"type":51,"value":189},{"type":45,"tag":155,"props":8140,"children":8141},{"style":235},[8142],{"type":51,"value":8143},"^18",{"type":45,"tag":155,"props":8145,"children":8146},{"style":181},[8147],{"type":51,"value":200},{"type":45,"tag":155,"props":8149,"children":8150},{"style":181},[8151],{"type":51,"value":957},{"type":45,"tag":155,"props":8153,"children":8154},{"class":157,"line":334},[8155,8159,8164,8168,8172,8176,8181],{"type":45,"tag":155,"props":8156,"children":8157},{"style":181},[8158],{"type":51,"value":671},{"type":45,"tag":155,"props":8160,"children":8161},{"style":217},[8162],{"type":51,"value":8163},"next",{"type":45,"tag":155,"props":8165,"children":8166},{"style":181},[8167],{"type":51,"value":200},{"type":45,"tag":155,"props":8169,"children":8170},{"style":181},[8171],{"type":51,"value":205},{"type":45,"tag":155,"props":8173,"children":8174},{"style":181},[8175],{"type":51,"value":189},{"type":45,"tag":155,"props":8177,"children":8178},{"style":235},[8179],{"type":51,"value":8180},"^14",{"type":45,"tag":155,"props":8182,"children":8183},{"style":181},[8184],{"type":51,"value":1026},{"type":45,"tag":155,"props":8186,"children":8187},{"class":157,"line":343},[8188],{"type":45,"tag":155,"props":8189,"children":8190},{"style":181},[8191],{"type":51,"value":867},{"type":45,"tag":155,"props":8193,"children":8194},{"class":157,"line":472},[8195],{"type":45,"tag":155,"props":8196,"children":8197},{"style":181},[8198],{"type":51,"value":875},{"type":45,"tag":155,"props":8200,"children":8201},{"class":157,"line":480},[8202],{"type":45,"tag":155,"props":8203,"children":8204},{"emptyLinePlaceholder":328},[8205],{"type":51,"value":331},{"type":45,"tag":155,"props":8207,"children":8208},{"class":157,"line":489},[8209],{"type":45,"tag":155,"props":8210,"children":8211},{"style":162},[8212],{"type":51,"value":8213},"\u002F\u002F CORRECT: Only repo tools in root\n",{"type":45,"tag":155,"props":8215,"children":8216},{"class":157,"line":1790},[8217],{"type":45,"tag":155,"props":8218,"children":8219},{"style":181},[8220],{"type":51,"value":637},{"type":45,"tag":155,"props":8222,"children":8223},{"class":157,"line":1798},[8224,8228,8233,8237,8241],{"type":45,"tag":155,"props":8225,"children":8226},{"style":181},[8227],{"type":51,"value":645},{"type":45,"tag":155,"props":8229,"children":8230},{"style":192},[8231],{"type":51,"value":8232},"devDependencies",{"type":45,"tag":155,"props":8234,"children":8235},{"style":181},[8236],{"type":51,"value":200},{"type":45,"tag":155,"props":8238,"children":8239},{"style":181},[8240],{"type":51,"value":205},{"type":45,"tag":155,"props":8242,"children":8243},{"style":181},[8244],{"type":51,"value":663},{"type":45,"tag":155,"props":8246,"children":8247},{"class":157,"line":1822},[8248,8252,8256,8260,8264,8268,8273],{"type":45,"tag":155,"props":8249,"children":8250},{"style":181},[8251],{"type":51,"value":671},{"type":45,"tag":155,"props":8253,"children":8254},{"style":217},[8255],{"type":51,"value":1237},{"type":45,"tag":155,"props":8257,"children":8258},{"style":181},[8259],{"type":51,"value":200},{"type":45,"tag":155,"props":8261,"children":8262},{"style":181},[8263],{"type":51,"value":205},{"type":45,"tag":155,"props":8265,"children":8266},{"style":181},[8267],{"type":51,"value":189},{"type":45,"tag":155,"props":8269,"children":8270},{"style":235},[8271],{"type":51,"value":8272},"latest",{"type":45,"tag":155,"props":8274,"children":8275},{"style":181},[8276],{"type":51,"value":1026},{"type":45,"tag":155,"props":8278,"children":8279},{"class":157,"line":1858},[8280],{"type":45,"tag":155,"props":8281,"children":8282},{"style":181},[8283],{"type":51,"value":867},{"type":45,"tag":155,"props":8285,"children":8286},{"class":157,"line":1891},[8287],{"type":45,"tag":155,"props":8288,"children":8289},{"style":181},[8290],{"type":51,"value":875},{"type":45,"tag":60,"props":8292,"children":8294},{"id":8293},"common-task-configurations",[8295],{"type":51,"value":8296},"Common Task Configurations",{"type":45,"tag":1437,"props":8298,"children":8300},{"id":8299},"standard-build-pipeline",[8301],{"type":51,"value":8302},"Standard Build Pipeline",{"type":45,"tag":144,"props":8304,"children":8306},{"className":146,"code":8305,"language":148,"meta":149,"style":149},"{\n  \"$schema\": \"https:\u002F\u002Fv2-10-8-canary-4.turborepo.dev\u002Fschema.json\",\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist\u002F**\", \".next\u002F**\", \"!.next\u002Fcache\u002F**\", \"!.next\u002Fdev\u002F**\"]\n    },\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    }\n  }\n}\n",[8307],{"type":45,"tag":91,"props":8308,"children":8309},{"__ignoreMap":149},[8310,8317,8354,8377,8400,8439,8529,8536,8559,8582,8605,8612,8619],{"type":45,"tag":155,"props":8311,"children":8312},{"class":157,"line":158},[8313],{"type":45,"tag":155,"props":8314,"children":8315},{"style":181},[8316],{"type":51,"value":637},{"type":45,"tag":155,"props":8318,"children":8319},{"class":157,"line":168},[8320,8324,8329,8333,8337,8341,8346,8350],{"type":45,"tag":155,"props":8321,"children":8322},{"style":181},[8323],{"type":51,"value":645},{"type":45,"tag":155,"props":8325,"children":8326},{"style":192},[8327],{"type":51,"value":8328},"$schema",{"type":45,"tag":155,"props":8330,"children":8331},{"style":181},[8332],{"type":51,"value":200},{"type":45,"tag":155,"props":8334,"children":8335},{"style":181},[8336],{"type":51,"value":205},{"type":45,"tag":155,"props":8338,"children":8339},{"style":181},[8340],{"type":51,"value":189},{"type":45,"tag":155,"props":8342,"children":8343},{"style":235},[8344],{"type":51,"value":8345},"https:\u002F\u002Fv2-10-8-canary-4.turborepo.dev\u002Fschema.json",{"type":45,"tag":155,"props":8347,"children":8348},{"style":181},[8349],{"type":51,"value":200},{"type":45,"tag":155,"props":8351,"children":8352},{"style":181},[8353],{"type":51,"value":957},{"type":45,"tag":155,"props":8355,"children":8356},{"class":157,"line":177},[8357,8361,8365,8369,8373],{"type":45,"tag":155,"props":8358,"children":8359},{"style":181},[8360],{"type":51,"value":645},{"type":45,"tag":155,"props":8362,"children":8363},{"style":192},[8364],{"type":51,"value":650},{"type":45,"tag":155,"props":8366,"children":8367},{"style":181},[8368],{"type":51,"value":200},{"type":45,"tag":155,"props":8370,"children":8371},{"style":181},[8372],{"type":51,"value":205},{"type":45,"tag":155,"props":8374,"children":8375},{"style":181},[8376],{"type":51,"value":663},{"type":45,"tag":155,"props":8378,"children":8379},{"class":157,"line":324},[8380,8384,8388,8392,8396],{"type":45,"tag":155,"props":8381,"children":8382},{"style":181},[8383],{"type":51,"value":671},{"type":45,"tag":155,"props":8385,"children":8386},{"style":217},[8387],{"type":51,"value":220},{"type":45,"tag":155,"props":8389,"children":8390},{"style":181},[8391],{"type":51,"value":200},{"type":45,"tag":155,"props":8393,"children":8394},{"style":181},[8395],{"type":51,"value":205},{"type":45,"tag":155,"props":8397,"children":8398},{"style":181},[8399],{"type":51,"value":663},{"type":45,"tag":155,"props":8401,"children":8402},{"class":157,"line":334},[8403,8407,8411,8415,8419,8423,8427,8431,8435],{"type":45,"tag":155,"props":8404,"children":8405},{"style":181},[8406],{"type":51,"value":2977},{"type":45,"tag":155,"props":8408,"children":8409},{"style":694},[8410],{"type":51,"value":697},{"type":45,"tag":155,"props":8412,"children":8413},{"style":181},[8414],{"type":51,"value":200},{"type":45,"tag":155,"props":8416,"children":8417},{"style":181},[8418],{"type":51,"value":205},{"type":45,"tag":155,"props":8420,"children":8421},{"style":181},[8422],{"type":51,"value":710},{"type":45,"tag":155,"props":8424,"children":8425},{"style":181},[8426],{"type":51,"value":200},{"type":45,"tag":155,"props":8428,"children":8429},{"style":235},[8430],{"type":51,"value":719},{"type":45,"tag":155,"props":8432,"children":8433},{"style":181},[8434],{"type":51,"value":200},{"type":45,"tag":155,"props":8436,"children":8437},{"style":181},[8438],{"type":51,"value":3221},{"type":45,"tag":155,"props":8440,"children":8441},{"class":157,"line":343},[8442,8446,8450,8454,8458,8462,8466,8470,8474,8478,8482,8487,8491,8495,8499,8504,8508,8512,8516,8521,8525],{"type":45,"tag":155,"props":8443,"children":8444},{"style":181},[8445],{"type":51,"value":2977},{"type":45,"tag":155,"props":8447,"children":8448},{"style":694},[8449],{"type":51,"value":737},{"type":45,"tag":155,"props":8451,"children":8452},{"style":181},[8453],{"type":51,"value":200},{"type":45,"tag":155,"props":8455,"children":8456},{"style":181},[8457],{"type":51,"value":205},{"type":45,"tag":155,"props":8459,"children":8460},{"style":181},[8461],{"type":51,"value":710},{"type":45,"tag":155,"props":8463,"children":8464},{"style":181},[8465],{"type":51,"value":200},{"type":45,"tag":155,"props":8467,"children":8468},{"style":235},[8469],{"type":51,"value":758},{"type":45,"tag":155,"props":8471,"children":8472},{"style":181},[8473],{"type":51,"value":200},{"type":45,"tag":155,"props":8475,"children":8476},{"style":181},[8477],{"type":51,"value":247},{"type":45,"tag":155,"props":8479,"children":8480},{"style":181},[8481],{"type":51,"value":189},{"type":45,"tag":155,"props":8483,"children":8484},{"style":235},[8485],{"type":51,"value":8486},".next\u002F**",{"type":45,"tag":155,"props":8488,"children":8489},{"style":181},[8490],{"type":51,"value":200},{"type":45,"tag":155,"props":8492,"children":8493},{"style":181},[8494],{"type":51,"value":247},{"type":45,"tag":155,"props":8496,"children":8497},{"style":181},[8498],{"type":51,"value":189},{"type":45,"tag":155,"props":8500,"children":8501},{"style":235},[8502],{"type":51,"value":8503},"!.next\u002Fcache\u002F**",{"type":45,"tag":155,"props":8505,"children":8506},{"style":181},[8507],{"type":51,"value":200},{"type":45,"tag":155,"props":8509,"children":8510},{"style":181},[8511],{"type":51,"value":247},{"type":45,"tag":155,"props":8513,"children":8514},{"style":181},[8515],{"type":51,"value":189},{"type":45,"tag":155,"props":8517,"children":8518},{"style":235},[8519],{"type":51,"value":8520},"!.next\u002Fdev\u002F**",{"type":45,"tag":155,"props":8522,"children":8523},{"style":181},[8524],{"type":51,"value":200},{"type":45,"tag":155,"props":8526,"children":8527},{"style":181},[8528],{"type":51,"value":3010},{"type":45,"tag":155,"props":8530,"children":8531},{"class":157,"line":472},[8532],{"type":45,"tag":155,"props":8533,"children":8534},{"style":181},[8535],{"type":51,"value":3933},{"type":45,"tag":155,"props":8537,"children":8538},{"class":157,"line":480},[8539,8543,8547,8551,8555],{"type":45,"tag":155,"props":8540,"children":8541},{"style":181},[8542],{"type":51,"value":671},{"type":45,"tag":155,"props":8544,"children":8545},{"style":217},[8546],{"type":51,"value":1737},{"type":45,"tag":155,"props":8548,"children":8549},{"style":181},[8550],{"type":51,"value":200},{"type":45,"tag":155,"props":8552,"children":8553},{"style":181},[8554],{"type":51,"value":205},{"type":45,"tag":155,"props":8556,"children":8557},{"style":181},[8558],{"type":51,"value":663},{"type":45,"tag":155,"props":8560,"children":8561},{"class":157,"line":489},[8562,8566,8570,8574,8578],{"type":45,"tag":155,"props":8563,"children":8564},{"style":181},[8565],{"type":51,"value":2977},{"type":45,"tag":155,"props":8567,"children":8568},{"style":694},[8569],{"type":51,"value":4218},{"type":45,"tag":155,"props":8571,"children":8572},{"style":181},[8573],{"type":51,"value":200},{"type":45,"tag":155,"props":8575,"children":8576},{"style":181},[8577],{"type":51,"value":205},{"type":45,"tag":155,"props":8579,"children":8580},{"style":181},[8581],{"type":51,"value":4231},{"type":45,"tag":155,"props":8583,"children":8584},{"class":157,"line":1790},[8585,8589,8593,8597,8601],{"type":45,"tag":155,"props":8586,"children":8587},{"style":181},[8588],{"type":51,"value":2977},{"type":45,"tag":155,"props":8590,"children":8591},{"style":694},[8592],{"type":51,"value":4243},{"type":45,"tag":155,"props":8594,"children":8595},{"style":181},[8596],{"type":51,"value":200},{"type":45,"tag":155,"props":8598,"children":8599},{"style":181},[8600],{"type":51,"value":205},{"type":45,"tag":155,"props":8602,"children":8603},{"style":181},[8604],{"type":51,"value":4256},{"type":45,"tag":155,"props":8606,"children":8607},{"class":157,"line":1798},[8608],{"type":45,"tag":155,"props":8609,"children":8610},{"style":181},[8611],{"type":51,"value":3019},{"type":45,"tag":155,"props":8613,"children":8614},{"class":157,"line":1822},[8615],{"type":45,"tag":155,"props":8616,"children":8617},{"style":181},[8618],{"type":51,"value":867},{"type":45,"tag":155,"props":8620,"children":8621},{"class":157,"line":1858},[8622],{"type":45,"tag":155,"props":8623,"children":8624},{"style":181},[8625],{"type":51,"value":875},{"type":45,"tag":54,"props":8627,"children":8628},{},[8629,8631,8637],{"type":51,"value":8630},"Add a ",{"type":45,"tag":91,"props":8632,"children":8634},{"className":8633},[],[8635],{"type":51,"value":8636},"transit",{"type":51,"value":8638}," task if you have tasks that need parallel execution with cache invalidation (see below).",{"type":45,"tag":1437,"props":8640,"children":8642},{"id":8641},"dev-task-with-dev-pattern-for-turbo-watch",[8643,8645,8651,8653,8659],{"type":51,"value":8644},"Dev Task with ",{"type":45,"tag":91,"props":8646,"children":8648},{"className":8647},[],[8649],{"type":51,"value":8650},"^dev",{"type":51,"value":8652}," Pattern (for ",{"type":45,"tag":91,"props":8654,"children":8656},{"className":8655},[],[8657],{"type":51,"value":8658},"turbo watch",{"type":51,"value":5715},{"type":45,"tag":54,"props":8661,"children":8662},{},[8663,8664,8669,8671,8677,8679,8685,8687,8699],{"type":51,"value":7693},{"type":45,"tag":91,"props":8665,"children":8667},{"className":8666},[],[8668],{"type":51,"value":1737},{"type":51,"value":8670}," task with ",{"type":45,"tag":91,"props":8672,"children":8674},{"className":8673},[],[8675],{"type":51,"value":8676},"dependsOn: [\"^dev\"]",{"type":51,"value":8678}," and ",{"type":45,"tag":91,"props":8680,"children":8682},{"className":8681},[],[8683],{"type":51,"value":8684},"persistent: false",{"type":51,"value":8686}," in root turbo.json may look unusual but is ",{"type":45,"tag":70,"props":8688,"children":8689},{},[8690,8692,8697],{"type":51,"value":8691},"correct for ",{"type":45,"tag":91,"props":8693,"children":8695},{"className":8694},[],[8696],{"type":51,"value":8658},{"type":51,"value":8698}," workflows",{"type":51,"value":205},{"type":45,"tag":144,"props":8701,"children":8703},{"className":146,"code":8702,"language":148,"meta":149,"style":149},"\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",[8704],{"type":45,"tag":91,"props":8705,"children":8706},{"__ignoreMap":149},[8707,8715,8722,8745,8768,8807,8830,8859,8866,8873,8880,8887,8895,8902,8941,8964,8987,9015,9022,9029],{"type":45,"tag":155,"props":8708,"children":8709},{"class":157,"line":158},[8710],{"type":45,"tag":155,"props":8711,"children":8712},{"style":162},[8713],{"type":51,"value":8714},"\u002F\u002F Root turbo.json\n",{"type":45,"tag":155,"props":8716,"children":8717},{"class":157,"line":168},[8718],{"type":45,"tag":155,"props":8719,"children":8720},{"style":181},[8721],{"type":51,"value":637},{"type":45,"tag":155,"props":8723,"children":8724},{"class":157,"line":177},[8725,8729,8733,8737,8741],{"type":45,"tag":155,"props":8726,"children":8727},{"style":181},[8728],{"type":51,"value":645},{"type":45,"tag":155,"props":8730,"children":8731},{"style":192},[8732],{"type":51,"value":650},{"type":45,"tag":155,"props":8734,"children":8735},{"style":181},[8736],{"type":51,"value":200},{"type":45,"tag":155,"props":8738,"children":8739},{"style":181},[8740],{"type":51,"value":205},{"type":45,"tag":155,"props":8742,"children":8743},{"style":181},[8744],{"type":51,"value":663},{"type":45,"tag":155,"props":8746,"children":8747},{"class":157,"line":324},[8748,8752,8756,8760,8764],{"type":45,"tag":155,"props":8749,"children":8750},{"style":181},[8751],{"type":51,"value":671},{"type":45,"tag":155,"props":8753,"children":8754},{"style":217},[8755],{"type":51,"value":1737},{"type":45,"tag":155,"props":8757,"children":8758},{"style":181},[8759],{"type":51,"value":200},{"type":45,"tag":155,"props":8761,"children":8762},{"style":181},[8763],{"type":51,"value":205},{"type":45,"tag":155,"props":8765,"children":8766},{"style":181},[8767],{"type":51,"value":663},{"type":45,"tag":155,"props":8769,"children":8770},{"class":157,"line":334},[8771,8775,8779,8783,8787,8791,8795,8799,8803],{"type":45,"tag":155,"props":8772,"children":8773},{"style":181},[8774],{"type":51,"value":2977},{"type":45,"tag":155,"props":8776,"children":8777},{"style":694},[8778],{"type":51,"value":697},{"type":45,"tag":155,"props":8780,"children":8781},{"style":181},[8782],{"type":51,"value":200},{"type":45,"tag":155,"props":8784,"children":8785},{"style":181},[8786],{"type":51,"value":205},{"type":45,"tag":155,"props":8788,"children":8789},{"style":181},[8790],{"type":51,"value":710},{"type":45,"tag":155,"props":8792,"children":8793},{"style":181},[8794],{"type":51,"value":200},{"type":45,"tag":155,"props":8796,"children":8797},{"style":235},[8798],{"type":51,"value":8650},{"type":45,"tag":155,"props":8800,"children":8801},{"style":181},[8802],{"type":51,"value":200},{"type":45,"tag":155,"props":8804,"children":8805},{"style":181},[8806],{"type":51,"value":3221},{"type":45,"tag":155,"props":8808,"children":8809},{"class":157,"line":343},[8810,8814,8818,8822,8826],{"type":45,"tag":155,"props":8811,"children":8812},{"style":181},[8813],{"type":51,"value":2977},{"type":45,"tag":155,"props":8815,"children":8816},{"style":694},[8817],{"type":51,"value":4218},{"type":45,"tag":155,"props":8819,"children":8820},{"style":181},[8821],{"type":51,"value":200},{"type":45,"tag":155,"props":8823,"children":8824},{"style":181},[8825],{"type":51,"value":205},{"type":45,"tag":155,"props":8827,"children":8828},{"style":181},[8829],{"type":51,"value":4231},{"type":45,"tag":155,"props":8831,"children":8832},{"class":157,"line":472},[8833,8837,8841,8845,8849,8854],{"type":45,"tag":155,"props":8834,"children":8835},{"style":181},[8836],{"type":51,"value":2977},{"type":45,"tag":155,"props":8838,"children":8839},{"style":694},[8840],{"type":51,"value":4243},{"type":45,"tag":155,"props":8842,"children":8843},{"style":181},[8844],{"type":51,"value":200},{"type":45,"tag":155,"props":8846,"children":8847},{"style":181},[8848],{"type":51,"value":205},{"type":45,"tag":155,"props":8850,"children":8851},{"style":181},[8852],{"type":51,"value":8853}," false",{"type":45,"tag":155,"props":8855,"children":8856},{"style":162},[8857],{"type":51,"value":8858},"  \u002F\u002F Packages have one-shot dev scripts\n",{"type":45,"tag":155,"props":8860,"children":8861},{"class":157,"line":480},[8862],{"type":45,"tag":155,"props":8863,"children":8864},{"style":181},[8865],{"type":51,"value":3019},{"type":45,"tag":155,"props":8867,"children":8868},{"class":157,"line":489},[8869],{"type":45,"tag":155,"props":8870,"children":8871},{"style":181},[8872],{"type":51,"value":867},{"type":45,"tag":155,"props":8874,"children":8875},{"class":157,"line":1790},[8876],{"type":45,"tag":155,"props":8877,"children":8878},{"style":181},[8879],{"type":51,"value":875},{"type":45,"tag":155,"props":8881,"children":8882},{"class":157,"line":1798},[8883],{"type":45,"tag":155,"props":8884,"children":8885},{"emptyLinePlaceholder":328},[8886],{"type":51,"value":331},{"type":45,"tag":155,"props":8888,"children":8889},{"class":157,"line":1822},[8890],{"type":45,"tag":155,"props":8891,"children":8892},{"style":162},[8893],{"type":51,"value":8894},"\u002F\u002F Package turbo.json (apps\u002Fweb\u002Fturbo.json)\n",{"type":45,"tag":155,"props":8896,"children":8897},{"class":157,"line":1858},[8898],{"type":45,"tag":155,"props":8899,"children":8900},{"style":181},[8901],{"type":51,"value":637},{"type":45,"tag":155,"props":8903,"children":8904},{"class":157,"line":1891},[8905,8909,8913,8917,8921,8925,8929,8933,8937],{"type":45,"tag":155,"props":8906,"children":8907},{"style":181},[8908],{"type":51,"value":645},{"type":45,"tag":155,"props":8910,"children":8911},{"style":192},[8912],{"type":51,"value":5353},{"type":45,"tag":155,"props":8914,"children":8915},{"style":181},[8916],{"type":51,"value":200},{"type":45,"tag":155,"props":8918,"children":8919},{"style":181},[8920],{"type":51,"value":205},{"type":45,"tag":155,"props":8922,"children":8923},{"style":181},[8924],{"type":51,"value":710},{"type":45,"tag":155,"props":8926,"children":8927},{"style":181},[8928],{"type":51,"value":200},{"type":45,"tag":155,"props":8930,"children":8931},{"style":235},[8932],{"type":51,"value":5374},{"type":45,"tag":155,"props":8934,"children":8935},{"style":181},[8936],{"type":51,"value":200},{"type":45,"tag":155,"props":8938,"children":8939},{"style":181},[8940],{"type":51,"value":3221},{"type":45,"tag":155,"props":8942,"children":8943},{"class":157,"line":1899},[8944,8948,8952,8956,8960],{"type":45,"tag":155,"props":8945,"children":8946},{"style":181},[8947],{"type":51,"value":645},{"type":45,"tag":155,"props":8949,"children":8950},{"style":192},[8951],{"type":51,"value":650},{"type":45,"tag":155,"props":8953,"children":8954},{"style":181},[8955],{"type":51,"value":200},{"type":45,"tag":155,"props":8957,"children":8958},{"style":181},[8959],{"type":51,"value":205},{"type":45,"tag":155,"props":8961,"children":8962},{"style":181},[8963],{"type":51,"value":663},{"type":45,"tag":155,"props":8965,"children":8966},{"class":157,"line":2947},[8967,8971,8975,8979,8983],{"type":45,"tag":155,"props":8968,"children":8969},{"style":181},[8970],{"type":51,"value":671},{"type":45,"tag":155,"props":8972,"children":8973},{"style":217},[8974],{"type":51,"value":1737},{"type":45,"tag":155,"props":8976,"children":8977},{"style":181},[8978],{"type":51,"value":200},{"type":45,"tag":155,"props":8980,"children":8981},{"style":181},[8982],{"type":51,"value":205},{"type":45,"tag":155,"props":8984,"children":8985},{"style":181},[8986],{"type":51,"value":663},{"type":45,"tag":155,"props":8988,"children":8989},{"class":157,"line":2971},[8990,8994,8998,9002,9006,9010],{"type":45,"tag":155,"props":8991,"children":8992},{"style":181},[8993],{"type":51,"value":2977},{"type":45,"tag":155,"props":8995,"children":8996},{"style":694},[8997],{"type":51,"value":4243},{"type":45,"tag":155,"props":8999,"children":9000},{"style":181},[9001],{"type":51,"value":200},{"type":45,"tag":155,"props":9003,"children":9004},{"style":181},[9005],{"type":51,"value":205},{"type":45,"tag":155,"props":9007,"children":9008},{"style":181},[9009],{"type":51,"value":3473},{"type":45,"tag":155,"props":9011,"children":9012},{"style":162},[9013],{"type":51,"value":9014},"  \u002F\u002F Apps run long-running dev servers\n",{"type":45,"tag":155,"props":9016,"children":9017},{"class":157,"line":3013},[9018],{"type":45,"tag":155,"props":9019,"children":9020},{"style":181},[9021],{"type":51,"value":3019},{"type":45,"tag":155,"props":9023,"children":9024},{"class":157,"line":3022},[9025],{"type":45,"tag":155,"props":9026,"children":9027},{"style":181},[9028],{"type":51,"value":867},{"type":45,"tag":155,"props":9030,"children":9031},{"class":157,"line":3030},[9032],{"type":45,"tag":155,"props":9033,"children":9034},{"style":181},[9035],{"type":51,"value":875},{"type":45,"tag":54,"props":9037,"children":9038},{},[9039],{"type":45,"tag":70,"props":9040,"children":9041},{},[9042],{"type":51,"value":9043},"Why this works:",{"type":45,"tag":2676,"props":9045,"children":9046},{},[9047,9079,9097],{"type":45,"tag":85,"props":9048,"children":9049},{},[9050,9055,9056,9062,9063,9069,9071,9077],{"type":45,"tag":70,"props":9051,"children":9052},{},[9053],{"type":51,"value":9054},"Packages",{"type":51,"value":2627},{"type":45,"tag":91,"props":9057,"children":9059},{"className":9058},[],[9060],{"type":51,"value":9061},"@acme\u002Fdb",{"type":51,"value":6105},{"type":45,"tag":91,"props":9064,"children":9066},{"className":9065},[],[9067],{"type":51,"value":9068},"@acme\u002Fvalidators",{"type":51,"value":9070},") have ",{"type":45,"tag":91,"props":9072,"children":9074},{"className":9073},[],[9075],{"type":51,"value":9076},"\"dev\": \"tsc\"",{"type":51,"value":9078}," — one-shot type generation that completes quickly",{"type":45,"tag":85,"props":9080,"children":9081},{},[9082,9087,9089,9095],{"type":45,"tag":70,"props":9083,"children":9084},{},[9085],{"type":51,"value":9086},"Apps",{"type":51,"value":9088}," override with ",{"type":45,"tag":91,"props":9090,"children":9092},{"className":9091},[],[9093],{"type":51,"value":9094},"persistent: true",{"type":51,"value":9096}," for actual dev servers (Next.js, etc.)",{"type":45,"tag":85,"props":9098,"children":9099},{},[9100,9108,9110,9115],{"type":45,"tag":70,"props":9101,"children":9102},{},[9103],{"type":45,"tag":91,"props":9104,"children":9106},{"className":9105},[],[9107],{"type":51,"value":8658},{"type":51,"value":9109}," re-runs the one-shot package ",{"type":45,"tag":91,"props":9111,"children":9113},{"className":9112},[],[9114],{"type":51,"value":1737},{"type":51,"value":9116}," scripts when source files change, keeping types in sync",{"type":45,"tag":54,"props":9118,"children":9119},{},[9120,9125,9127,9133,9135,9140],{"type":45,"tag":70,"props":9121,"children":9122},{},[9123],{"type":51,"value":9124},"Intended usage:",{"type":51,"value":9126}," Run ",{"type":45,"tag":91,"props":9128,"children":9130},{"className":9129},[],[9131],{"type":51,"value":9132},"turbo watch dev",{"type":51,"value":9134}," (not ",{"type":45,"tag":91,"props":9136,"children":9138},{"className":9137},[],[9139],{"type":51,"value":1884},{"type":51,"value":9141},"). Watch mode re-executes one-shot tasks on file changes while keeping persistent tasks running.",{"type":45,"tag":54,"props":9143,"children":9144},{},[9145,9150,9152,9158,9159,9165],{"type":45,"tag":70,"props":9146,"children":9147},{},[9148],{"type":51,"value":9149},"Alternative pattern:",{"type":51,"value":9151}," Use a separate task name like ",{"type":45,"tag":91,"props":9153,"children":9155},{"className":9154},[],[9156],{"type":51,"value":9157},"prepare",{"type":51,"value":6666},{"type":45,"tag":91,"props":9160,"children":9162},{"className":9161},[],[9163],{"type":51,"value":9164},"generate",{"type":51,"value":9166}," for one-shot dependency builds to make the intent clearer:",{"type":45,"tag":144,"props":9168,"children":9170},{"className":146,"code":9169,"language":148,"meta":149,"style":149},"{\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",[9171],{"type":45,"tag":91,"props":9172,"children":9173},{"__ignoreMap":149},[9174,9181,9204,9227,9267,9306,9313,9336,9375,9398,9421,9428,9435],{"type":45,"tag":155,"props":9175,"children":9176},{"class":157,"line":158},[9177],{"type":45,"tag":155,"props":9178,"children":9179},{"style":181},[9180],{"type":51,"value":637},{"type":45,"tag":155,"props":9182,"children":9183},{"class":157,"line":168},[9184,9188,9192,9196,9200],{"type":45,"tag":155,"props":9185,"children":9186},{"style":181},[9187],{"type":51,"value":645},{"type":45,"tag":155,"props":9189,"children":9190},{"style":192},[9191],{"type":51,"value":650},{"type":45,"tag":155,"props":9193,"children":9194},{"style":181},[9195],{"type":51,"value":200},{"type":45,"tag":155,"props":9197,"children":9198},{"style":181},[9199],{"type":51,"value":205},{"type":45,"tag":155,"props":9201,"children":9202},{"style":181},[9203],{"type":51,"value":663},{"type":45,"tag":155,"props":9205,"children":9206},{"class":157,"line":177},[9207,9211,9215,9219,9223],{"type":45,"tag":155,"props":9208,"children":9209},{"style":181},[9210],{"type":51,"value":671},{"type":45,"tag":155,"props":9212,"children":9213},{"style":217},[9214],{"type":51,"value":9157},{"type":45,"tag":155,"props":9216,"children":9217},{"style":181},[9218],{"type":51,"value":200},{"type":45,"tag":155,"props":9220,"children":9221},{"style":181},[9222],{"type":51,"value":205},{"type":45,"tag":155,"props":9224,"children":9225},{"style":181},[9226],{"type":51,"value":663},{"type":45,"tag":155,"props":9228,"children":9229},{"class":157,"line":324},[9230,9234,9238,9242,9246,9250,9254,9259,9263],{"type":45,"tag":155,"props":9231,"children":9232},{"style":181},[9233],{"type":51,"value":2977},{"type":45,"tag":155,"props":9235,"children":9236},{"style":694},[9237],{"type":51,"value":697},{"type":45,"tag":155,"props":9239,"children":9240},{"style":181},[9241],{"type":51,"value":200},{"type":45,"tag":155,"props":9243,"children":9244},{"style":181},[9245],{"type":51,"value":205},{"type":45,"tag":155,"props":9247,"children":9248},{"style":181},[9249],{"type":51,"value":710},{"type":45,"tag":155,"props":9251,"children":9252},{"style":181},[9253],{"type":51,"value":200},{"type":45,"tag":155,"props":9255,"children":9256},{"style":235},[9257],{"type":51,"value":9258},"^prepare",{"type":45,"tag":155,"props":9260,"children":9261},{"style":181},[9262],{"type":51,"value":200},{"type":45,"tag":155,"props":9264,"children":9265},{"style":181},[9266],{"type":51,"value":3221},{"type":45,"tag":155,"props":9268,"children":9269},{"class":157,"line":334},[9270,9274,9278,9282,9286,9290,9294,9298,9302],{"type":45,"tag":155,"props":9271,"children":9272},{"style":181},[9273],{"type":51,"value":2977},{"type":45,"tag":155,"props":9275,"children":9276},{"style":694},[9277],{"type":51,"value":737},{"type":45,"tag":155,"props":9279,"children":9280},{"style":181},[9281],{"type":51,"value":200},{"type":45,"tag":155,"props":9283,"children":9284},{"style":181},[9285],{"type":51,"value":205},{"type":45,"tag":155,"props":9287,"children":9288},{"style":181},[9289],{"type":51,"value":710},{"type":45,"tag":155,"props":9291,"children":9292},{"style":181},[9293],{"type":51,"value":200},{"type":45,"tag":155,"props":9295,"children":9296},{"style":235},[9297],{"type":51,"value":758},{"type":45,"tag":155,"props":9299,"children":9300},{"style":181},[9301],{"type":51,"value":200},{"type":45,"tag":155,"props":9303,"children":9304},{"style":181},[9305],{"type":51,"value":3010},{"type":45,"tag":155,"props":9307,"children":9308},{"class":157,"line":343},[9309],{"type":45,"tag":155,"props":9310,"children":9311},{"style":181},[9312],{"type":51,"value":3933},{"type":45,"tag":155,"props":9314,"children":9315},{"class":157,"line":472},[9316,9320,9324,9328,9332],{"type":45,"tag":155,"props":9317,"children":9318},{"style":181},[9319],{"type":51,"value":671},{"type":45,"tag":155,"props":9321,"children":9322},{"style":217},[9323],{"type":51,"value":1737},{"type":45,"tag":155,"props":9325,"children":9326},{"style":181},[9327],{"type":51,"value":200},{"type":45,"tag":155,"props":9329,"children":9330},{"style":181},[9331],{"type":51,"value":205},{"type":45,"tag":155,"props":9333,"children":9334},{"style":181},[9335],{"type":51,"value":663},{"type":45,"tag":155,"props":9337,"children":9338},{"class":157,"line":480},[9339,9343,9347,9351,9355,9359,9363,9367,9371],{"type":45,"tag":155,"props":9340,"children":9341},{"style":181},[9342],{"type":51,"value":2977},{"type":45,"tag":155,"props":9344,"children":9345},{"style":694},[9346],{"type":51,"value":697},{"type":45,"tag":155,"props":9348,"children":9349},{"style":181},[9350],{"type":51,"value":200},{"type":45,"tag":155,"props":9352,"children":9353},{"style":181},[9354],{"type":51,"value":205},{"type":45,"tag":155,"props":9356,"children":9357},{"style":181},[9358],{"type":51,"value":710},{"type":45,"tag":155,"props":9360,"children":9361},{"style":181},[9362],{"type":51,"value":200},{"type":45,"tag":155,"props":9364,"children":9365},{"style":235},[9366],{"type":51,"value":9157},{"type":45,"tag":155,"props":9368,"children":9369},{"style":181},[9370],{"type":51,"value":200},{"type":45,"tag":155,"props":9372,"children":9373},{"style":181},[9374],{"type":51,"value":3221},{"type":45,"tag":155,"props":9376,"children":9377},{"class":157,"line":489},[9378,9382,9386,9390,9394],{"type":45,"tag":155,"props":9379,"children":9380},{"style":181},[9381],{"type":51,"value":2977},{"type":45,"tag":155,"props":9383,"children":9384},{"style":694},[9385],{"type":51,"value":4218},{"type":45,"tag":155,"props":9387,"children":9388},{"style":181},[9389],{"type":51,"value":200},{"type":45,"tag":155,"props":9391,"children":9392},{"style":181},[9393],{"type":51,"value":205},{"type":45,"tag":155,"props":9395,"children":9396},{"style":181},[9397],{"type":51,"value":4231},{"type":45,"tag":155,"props":9399,"children":9400},{"class":157,"line":1790},[9401,9405,9409,9413,9417],{"type":45,"tag":155,"props":9402,"children":9403},{"style":181},[9404],{"type":51,"value":2977},{"type":45,"tag":155,"props":9406,"children":9407},{"style":694},[9408],{"type":51,"value":4243},{"type":45,"tag":155,"props":9410,"children":9411},{"style":181},[9412],{"type":51,"value":200},{"type":45,"tag":155,"props":9414,"children":9415},{"style":181},[9416],{"type":51,"value":205},{"type":45,"tag":155,"props":9418,"children":9419},{"style":181},[9420],{"type":51,"value":4256},{"type":45,"tag":155,"props":9422,"children":9423},{"class":157,"line":1798},[9424],{"type":45,"tag":155,"props":9425,"children":9426},{"style":181},[9427],{"type":51,"value":3019},{"type":45,"tag":155,"props":9429,"children":9430},{"class":157,"line":1822},[9431],{"type":45,"tag":155,"props":9432,"children":9433},{"style":181},[9434],{"type":51,"value":867},{"type":45,"tag":155,"props":9436,"children":9437},{"class":157,"line":1858},[9438],{"type":45,"tag":155,"props":9439,"children":9440},{"style":181},[9441],{"type":51,"value":875},{"type":45,"tag":1437,"props":9443,"children":9445},{"id":9444},"transit-nodes-for-parallel-tasks-with-cache-invalidation",[9446],{"type":51,"value":9447},"Transit Nodes for Parallel Tasks with Cache Invalidation",{"type":45,"tag":54,"props":9449,"children":9450},{},[9451],{"type":51,"value":9452},"Some tasks can run in parallel (don't need built output from dependencies) but must invalidate cache when dependency source code changes.",{"type":45,"tag":54,"props":9454,"children":9455},{},[9456],{"type":45,"tag":70,"props":9457,"children":9458},{},[9459,9461,9467],{"type":51,"value":9460},"The problem with ",{"type":45,"tag":91,"props":9462,"children":9464},{"className":9463},[],[9465],{"type":51,"value":9466},"dependsOn: [\"^taskname\"]",{"type":51,"value":205},{"type":45,"tag":2676,"props":9469,"children":9470},{},[9471],{"type":45,"tag":85,"props":9472,"children":9473},{},[9474],{"type":51,"value":9475},"Forces sequential execution (slow)",{"type":45,"tag":54,"props":9477,"children":9478},{},[9479],{"type":45,"tag":70,"props":9480,"children":9481},{},[9482,9483,9489],{"type":51,"value":9460},{"type":45,"tag":91,"props":9484,"children":9486},{"className":9485},[],[9487],{"type":51,"value":9488},"dependsOn: []",{"type":51,"value":9490}," (no dependencies):",{"type":45,"tag":2676,"props":9492,"children":9493},{},[9494,9499],{"type":45,"tag":85,"props":9495,"children":9496},{},[9497],{"type":51,"value":9498},"Allows parallel execution (fast)",{"type":45,"tag":85,"props":9500,"children":9501},{},[9502],{"type":51,"value":9503},"But cache is INCORRECT - changing dependency source won't invalidate cache",{"type":45,"tag":54,"props":9505,"children":9506},{},[9507],{"type":45,"tag":70,"props":9508,"children":9509},{},[9510],{"type":51,"value":9511},"Transit Nodes solve both:",{"type":45,"tag":144,"props":9513,"children":9515},{"className":146,"code":9514,"language":148,"meta":149,"style":149},"{\n  \"tasks\": {\n    \"transit\": { \"dependsOn\": [\"^transit\"] },\n    \"my-task\": { \"dependsOn\": [\"transit\"] }\n  }\n}\n",[9516],{"type":45,"tag":91,"props":9517,"children":9518},{"__ignoreMap":149},[9519,9526,9549,9613,9677,9684],{"type":45,"tag":155,"props":9520,"children":9521},{"class":157,"line":158},[9522],{"type":45,"tag":155,"props":9523,"children":9524},{"style":181},[9525],{"type":51,"value":637},{"type":45,"tag":155,"props":9527,"children":9528},{"class":157,"line":168},[9529,9533,9537,9541,9545],{"type":45,"tag":155,"props":9530,"children":9531},{"style":181},[9532],{"type":51,"value":645},{"type":45,"tag":155,"props":9534,"children":9535},{"style":192},[9536],{"type":51,"value":650},{"type":45,"tag":155,"props":9538,"children":9539},{"style":181},[9540],{"type":51,"value":200},{"type":45,"tag":155,"props":9542,"children":9543},{"style":181},[9544],{"type":51,"value":205},{"type":45,"tag":155,"props":9546,"children":9547},{"style":181},[9548],{"type":51,"value":663},{"type":45,"tag":155,"props":9550,"children":9551},{"class":157,"line":177},[9552,9556,9560,9564,9568,9572,9576,9580,9584,9588,9592,9596,9601,9605,9609],{"type":45,"tag":155,"props":9553,"children":9554},{"style":181},[9555],{"type":51,"value":671},{"type":45,"tag":155,"props":9557,"children":9558},{"style":217},[9559],{"type":51,"value":8636},{"type":45,"tag":155,"props":9561,"children":9562},{"style":181},[9563],{"type":51,"value":200},{"type":45,"tag":155,"props":9565,"children":9566},{"style":181},[9567],{"type":51,"value":205},{"type":45,"tag":155,"props":9569,"children":9570},{"style":181},[9571],{"type":51,"value":210},{"type":45,"tag":155,"props":9573,"children":9574},{"style":181},[9575],{"type":51,"value":189},{"type":45,"tag":155,"props":9577,"children":9578},{"style":694},[9579],{"type":51,"value":697},{"type":45,"tag":155,"props":9581,"children":9582},{"style":181},[9583],{"type":51,"value":200},{"type":45,"tag":155,"props":9585,"children":9586},{"style":181},[9587],{"type":51,"value":205},{"type":45,"tag":155,"props":9589,"children":9590},{"style":181},[9591],{"type":51,"value":710},{"type":45,"tag":155,"props":9593,"children":9594},{"style":181},[9595],{"type":51,"value":200},{"type":45,"tag":155,"props":9597,"children":9598},{"style":235},[9599],{"type":51,"value":9600},"^transit",{"type":45,"tag":155,"props":9602,"children":9603},{"style":181},[9604],{"type":51,"value":200},{"type":45,"tag":155,"props":9606,"children":9607},{"style":181},[9608],{"type":51,"value":767},{"type":45,"tag":155,"props":9610,"children":9611},{"style":181},[9612],{"type":51,"value":772},{"type":45,"tag":155,"props":9614,"children":9615},{"class":157,"line":324},[9616,9620,9625,9629,9633,9637,9641,9645,9649,9653,9657,9661,9665,9669,9673],{"type":45,"tag":155,"props":9617,"children":9618},{"style":181},[9619],{"type":51,"value":671},{"type":45,"tag":155,"props":9621,"children":9622},{"style":217},[9623],{"type":51,"value":9624},"my-task",{"type":45,"tag":155,"props":9626,"children":9627},{"style":181},[9628],{"type":51,"value":200},{"type":45,"tag":155,"props":9630,"children":9631},{"style":181},[9632],{"type":51,"value":205},{"type":45,"tag":155,"props":9634,"children":9635},{"style":181},[9636],{"type":51,"value":210},{"type":45,"tag":155,"props":9638,"children":9639},{"style":181},[9640],{"type":51,"value":189},{"type":45,"tag":155,"props":9642,"children":9643},{"style":694},[9644],{"type":51,"value":697},{"type":45,"tag":155,"props":9646,"children":9647},{"style":181},[9648],{"type":51,"value":200},{"type":45,"tag":155,"props":9650,"children":9651},{"style":181},[9652],{"type":51,"value":205},{"type":45,"tag":155,"props":9654,"children":9655},{"style":181},[9656],{"type":51,"value":710},{"type":45,"tag":155,"props":9658,"children":9659},{"style":181},[9660],{"type":51,"value":200},{"type":45,"tag":155,"props":9662,"children":9663},{"style":235},[9664],{"type":51,"value":8636},{"type":45,"tag":155,"props":9666,"children":9667},{"style":181},[9668],{"type":51,"value":200},{"type":45,"tag":155,"props":9670,"children":9671},{"style":181},[9672],{"type":51,"value":767},{"type":45,"tag":155,"props":9674,"children":9675},{"style":181},[9676],{"type":51,"value":321},{"type":45,"tag":155,"props":9678,"children":9679},{"class":157,"line":334},[9680],{"type":45,"tag":155,"props":9681,"children":9682},{"style":181},[9683],{"type":51,"value":867},{"type":45,"tag":155,"props":9685,"children":9686},{"class":157,"line":343},[9687],{"type":45,"tag":155,"props":9688,"children":9689},{"style":181},[9690],{"type":51,"value":875},{"type":45,"tag":54,"props":9692,"children":9693},{},[9694,9695,9700],{"type":51,"value":4662},{"type":45,"tag":91,"props":9696,"children":9698},{"className":9697},[],[9699],{"type":51,"value":8636},{"type":51,"value":9701}," task creates dependency relationships without matching any actual script, so tasks run in parallel with correct cache invalidation.",{"type":45,"tag":54,"props":9703,"children":9704},{},[9705,9710],{"type":45,"tag":70,"props":9706,"children":9707},{},[9708],{"type":51,"value":9709},"How to identify tasks that need this pattern:",{"type":51,"value":9711}," Look for tasks that read source files from dependencies but don't need their build outputs.",{"type":45,"tag":1437,"props":9713,"children":9715},{"id":9714},"with-environment-variables",[9716],{"type":51,"value":9717},"With Environment Variables",{"type":45,"tag":144,"props":9719,"children":9721},{"className":146,"code":9720,"language":148,"meta":149,"style":149},"{\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",[9722],{"type":45,"tag":91,"props":9723,"children":9724},{"__ignoreMap":149},[9725,9732,9772,9811,9834,9857,9896,9935,9990,9997,10004],{"type":45,"tag":155,"props":9726,"children":9727},{"class":157,"line":158},[9728],{"type":45,"tag":155,"props":9729,"children":9730},{"style":181},[9731],{"type":51,"value":637},{"type":45,"tag":155,"props":9733,"children":9734},{"class":157,"line":168},[9735,9739,9743,9747,9751,9755,9759,9764,9768],{"type":45,"tag":155,"props":9736,"children":9737},{"style":181},[9738],{"type":51,"value":645},{"type":45,"tag":155,"props":9740,"children":9741},{"style":192},[9742],{"type":51,"value":4314},{"type":45,"tag":155,"props":9744,"children":9745},{"style":181},[9746],{"type":51,"value":200},{"type":45,"tag":155,"props":9748,"children":9749},{"style":181},[9750],{"type":51,"value":205},{"type":45,"tag":155,"props":9752,"children":9753},{"style":181},[9754],{"type":51,"value":710},{"type":45,"tag":155,"props":9756,"children":9757},{"style":181},[9758],{"type":51,"value":200},{"type":45,"tag":155,"props":9760,"children":9761},{"style":235},[9762],{"type":51,"value":9763},"NODE_ENV",{"type":45,"tag":155,"props":9765,"children":9766},{"style":181},[9767],{"type":51,"value":200},{"type":45,"tag":155,"props":9769,"children":9770},{"style":181},[9771],{"type":51,"value":3221},{"type":45,"tag":155,"props":9773,"children":9774},{"class":157,"line":177},[9775,9779,9783,9787,9791,9795,9799,9803,9807],{"type":45,"tag":155,"props":9776,"children":9777},{"style":181},[9778],{"type":51,"value":645},{"type":45,"tag":155,"props":9780,"children":9781},{"style":192},[9782],{"type":51,"value":3064},{"type":45,"tag":155,"props":9784,"children":9785},{"style":181},[9786],{"type":51,"value":200},{"type":45,"tag":155,"props":9788,"children":9789},{"style":181},[9790],{"type":51,"value":205},{"type":45,"tag":155,"props":9792,"children":9793},{"style":181},[9794],{"type":51,"value":710},{"type":45,"tag":155,"props":9796,"children":9797},{"style":181},[9798],{"type":51,"value":200},{"type":45,"tag":155,"props":9800,"children":9801},{"style":235},[9802],{"type":51,"value":3212},{"type":45,"tag":155,"props":9804,"children":9805},{"style":181},[9806],{"type":51,"value":200},{"type":45,"tag":155,"props":9808,"children":9809},{"style":181},[9810],{"type":51,"value":3221},{"type":45,"tag":155,"props":9812,"children":9813},{"class":157,"line":324},[9814,9818,9822,9826,9830],{"type":45,"tag":155,"props":9815,"children":9816},{"style":181},[9817],{"type":51,"value":645},{"type":45,"tag":155,"props":9819,"children":9820},{"style":192},[9821],{"type":51,"value":650},{"type":45,"tag":155,"props":9823,"children":9824},{"style":181},[9825],{"type":51,"value":200},{"type":45,"tag":155,"props":9827,"children":9828},{"style":181},[9829],{"type":51,"value":205},{"type":45,"tag":155,"props":9831,"children":9832},{"style":181},[9833],{"type":51,"value":663},{"type":45,"tag":155,"props":9835,"children":9836},{"class":157,"line":334},[9837,9841,9845,9849,9853],{"type":45,"tag":155,"props":9838,"children":9839},{"style":181},[9840],{"type":51,"value":671},{"type":45,"tag":155,"props":9842,"children":9843},{"style":217},[9844],{"type":51,"value":220},{"type":45,"tag":155,"props":9846,"children":9847},{"style":181},[9848],{"type":51,"value":200},{"type":45,"tag":155,"props":9850,"children":9851},{"style":181},[9852],{"type":51,"value":205},{"type":45,"tag":155,"props":9854,"children":9855},{"style":181},[9856],{"type":51,"value":663},{"type":45,"tag":155,"props":9858,"children":9859},{"class":157,"line":343},[9860,9864,9868,9872,9876,9880,9884,9888,9892],{"type":45,"tag":155,"props":9861,"children":9862},{"style":181},[9863],{"type":51,"value":2977},{"type":45,"tag":155,"props":9865,"children":9866},{"style":694},[9867],{"type":51,"value":697},{"type":45,"tag":155,"props":9869,"children":9870},{"style":181},[9871],{"type":51,"value":200},{"type":45,"tag":155,"props":9873,"children":9874},{"style":181},[9875],{"type":51,"value":205},{"type":45,"tag":155,"props":9877,"children":9878},{"style":181},[9879],{"type":51,"value":710},{"type":45,"tag":155,"props":9881,"children":9882},{"style":181},[9883],{"type":51,"value":200},{"type":45,"tag":155,"props":9885,"children":9886},{"style":235},[9887],{"type":51,"value":719},{"type":45,"tag":155,"props":9889,"children":9890},{"style":181},[9891],{"type":51,"value":200},{"type":45,"tag":155,"props":9893,"children":9894},{"style":181},[9895],{"type":51,"value":3221},{"type":45,"tag":155,"props":9897,"children":9898},{"class":157,"line":472},[9899,9903,9907,9911,9915,9919,9923,9927,9931],{"type":45,"tag":155,"props":9900,"children":9901},{"style":181},[9902],{"type":51,"value":2977},{"type":45,"tag":155,"props":9904,"children":9905},{"style":694},[9906],{"type":51,"value":737},{"type":45,"tag":155,"props":9908,"children":9909},{"style":181},[9910],{"type":51,"value":200},{"type":45,"tag":155,"props":9912,"children":9913},{"style":181},[9914],{"type":51,"value":205},{"type":45,"tag":155,"props":9916,"children":9917},{"style":181},[9918],{"type":51,"value":710},{"type":45,"tag":155,"props":9920,"children":9921},{"style":181},[9922],{"type":51,"value":200},{"type":45,"tag":155,"props":9924,"children":9925},{"style":235},[9926],{"type":51,"value":758},{"type":45,"tag":155,"props":9928,"children":9929},{"style":181},[9930],{"type":51,"value":200},{"type":45,"tag":155,"props":9932,"children":9933},{"style":181},[9934],{"type":51,"value":3221},{"type":45,"tag":155,"props":9936,"children":9937},{"class":157,"line":480},[9938,9942,9946,9950,9954,9958,9962,9966,9970,9974,9978,9982,9986],{"type":45,"tag":155,"props":9939,"children":9940},{"style":181},[9941],{"type":51,"value":2977},{"type":45,"tag":155,"props":9943,"children":9944},{"style":694},[9945],{"type":51,"value":3824},{"type":45,"tag":155,"props":9947,"children":9948},{"style":181},[9949],{"type":51,"value":200},{"type":45,"tag":155,"props":9951,"children":9952},{"style":181},[9953],{"type":51,"value":205},{"type":45,"tag":155,"props":9955,"children":9956},{"style":181},[9957],{"type":51,"value":710},{"type":45,"tag":155,"props":9959,"children":9960},{"style":181},[9961],{"type":51,"value":200},{"type":45,"tag":155,"props":9963,"children":9964},{"style":235},[9965],{"type":51,"value":3845},{"type":45,"tag":155,"props":9967,"children":9968},{"style":181},[9969],{"type":51,"value":200},{"type":45,"tag":155,"props":9971,"children":9972},{"style":181},[9973],{"type":51,"value":247},{"type":45,"tag":155,"props":9975,"children":9976},{"style":181},[9977],{"type":51,"value":189},{"type":45,"tag":155,"props":9979,"children":9980},{"style":235},[9981],{"type":51,"value":3862},{"type":45,"tag":155,"props":9983,"children":9984},{"style":181},[9985],{"type":51,"value":200},{"type":45,"tag":155,"props":9987,"children":9988},{"style":181},[9989],{"type":51,"value":3010},{"type":45,"tag":155,"props":9991,"children":9992},{"class":157,"line":489},[9993],{"type":45,"tag":155,"props":9994,"children":9995},{"style":181},[9996],{"type":51,"value":3019},{"type":45,"tag":155,"props":9998,"children":9999},{"class":157,"line":1790},[10000],{"type":45,"tag":155,"props":10001,"children":10002},{"style":181},[10003],{"type":51,"value":867},{"type":45,"tag":155,"props":10005,"children":10006},{"class":157,"line":1798},[10007],{"type":45,"tag":155,"props":10008,"children":10009},{"style":181},[10010],{"type":51,"value":875},{"type":45,"tag":54,"props":10012,"children":10013},{},[10014,10015,10020,10022,10027,10029,10034],{"type":51,"value":3389},{"type":45,"tag":91,"props":10016,"children":10018},{"className":10017},[],[10019],{"type":51,"value":3395},{"type":51,"value":10021},", the same config moves global settings under ",{"type":45,"tag":91,"props":10023,"children":10025},{"className":10024},[],[10026],{"type":51,"value":3489},{"type":51,"value":10028}," — and ",{"type":45,"tag":91,"props":10030,"children":10032},{"className":10031},[],[10033],{"type":51,"value":3212},{"type":51,"value":10035}," becomes a per-task input instead of a global hash input:",{"type":45,"tag":144,"props":10037,"children":10039},{"className":146,"code":10038,"language":148,"meta":149,"style":149},"{\n  \"futureFlags\": { \"globalConfiguration\": true },\n  \"global\": {\n    \"env\": [\"NODE_ENV\"],\n    \"inputs\": [\".env\"]\n  },\n  \"tasks\": {\n    \"build\": {\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist\u002F**\"],\n      \"env\": [\"API_URL\", \"DATABASE_URL\"]\n    }\n  }\n}\n",[10040],{"type":45,"tag":91,"props":10041,"children":10042},{"__ignoreMap":149},[10043,10050,10097,10120,10159,10198,10205,10228,10251,10290,10329,10384,10391,10398],{"type":45,"tag":155,"props":10044,"children":10045},{"class":157,"line":158},[10046],{"type":45,"tag":155,"props":10047,"children":10048},{"style":181},[10049],{"type":51,"value":637},{"type":45,"tag":155,"props":10051,"children":10052},{"class":157,"line":168},[10053,10057,10061,10065,10069,10073,10077,10081,10085,10089,10093],{"type":45,"tag":155,"props":10054,"children":10055},{"style":181},[10056],{"type":51,"value":645},{"type":45,"tag":155,"props":10058,"children":10059},{"style":192},[10060],{"type":51,"value":3439},{"type":45,"tag":155,"props":10062,"children":10063},{"style":181},[10064],{"type":51,"value":200},{"type":45,"tag":155,"props":10066,"children":10067},{"style":181},[10068],{"type":51,"value":205},{"type":45,"tag":155,"props":10070,"children":10071},{"style":181},[10072],{"type":51,"value":210},{"type":45,"tag":155,"props":10074,"children":10075},{"style":181},[10076],{"type":51,"value":189},{"type":45,"tag":155,"props":10078,"children":10079},{"style":217},[10080],{"type":51,"value":3460},{"type":45,"tag":155,"props":10082,"children":10083},{"style":181},[10084],{"type":51,"value":200},{"type":45,"tag":155,"props":10086,"children":10087},{"style":181},[10088],{"type":51,"value":205},{"type":45,"tag":155,"props":10090,"children":10091},{"style":181},[10092],{"type":51,"value":3473},{"type":45,"tag":155,"props":10094,"children":10095},{"style":181},[10096],{"type":51,"value":772},{"type":45,"tag":155,"props":10098,"children":10099},{"class":157,"line":177},[10100,10104,10108,10112,10116],{"type":45,"tag":155,"props":10101,"children":10102},{"style":181},[10103],{"type":51,"value":645},{"type":45,"tag":155,"props":10105,"children":10106},{"style":192},[10107],{"type":51,"value":3489},{"type":45,"tag":155,"props":10109,"children":10110},{"style":181},[10111],{"type":51,"value":200},{"type":45,"tag":155,"props":10113,"children":10114},{"style":181},[10115],{"type":51,"value":205},{"type":45,"tag":155,"props":10117,"children":10118},{"style":181},[10119],{"type":51,"value":663},{"type":45,"tag":155,"props":10121,"children":10122},{"class":157,"line":324},[10123,10127,10131,10135,10139,10143,10147,10151,10155],{"type":45,"tag":155,"props":10124,"children":10125},{"style":181},[10126],{"type":51,"value":671},{"type":45,"tag":155,"props":10128,"children":10129},{"style":217},[10130],{"type":51,"value":3824},{"type":45,"tag":155,"props":10132,"children":10133},{"style":181},[10134],{"type":51,"value":200},{"type":45,"tag":155,"props":10136,"children":10137},{"style":181},[10138],{"type":51,"value":205},{"type":45,"tag":155,"props":10140,"children":10141},{"style":181},[10142],{"type":51,"value":710},{"type":45,"tag":155,"props":10144,"children":10145},{"style":181},[10146],{"type":51,"value":200},{"type":45,"tag":155,"props":10148,"children":10149},{"style":235},[10150],{"type":51,"value":9763},{"type":45,"tag":155,"props":10152,"children":10153},{"style":181},[10154],{"type":51,"value":200},{"type":45,"tag":155,"props":10156,"children":10157},{"style":181},[10158],{"type":51,"value":3221},{"type":45,"tag":155,"props":10160,"children":10161},{"class":157,"line":334},[10162,10166,10170,10174,10178,10182,10186,10190,10194],{"type":45,"tag":155,"props":10163,"children":10164},{"style":181},[10165],{"type":51,"value":671},{"type":45,"tag":155,"props":10167,"children":10168},{"style":217},[10169],{"type":51,"value":3087},{"type":45,"tag":155,"props":10171,"children":10172},{"style":181},[10173],{"type":51,"value":200},{"type":45,"tag":155,"props":10175,"children":10176},{"style":181},[10177],{"type":51,"value":205},{"type":45,"tag":155,"props":10179,"children":10180},{"style":181},[10181],{"type":51,"value":710},{"type":45,"tag":155,"props":10183,"children":10184},{"style":181},[10185],{"type":51,"value":200},{"type":45,"tag":155,"props":10187,"children":10188},{"style":235},[10189],{"type":51,"value":3212},{"type":45,"tag":155,"props":10191,"children":10192},{"style":181},[10193],{"type":51,"value":200},{"type":45,"tag":155,"props":10195,"children":10196},{"style":181},[10197],{"type":51,"value":3010},{"type":45,"tag":155,"props":10199,"children":10200},{"class":157,"line":343},[10201],{"type":45,"tag":155,"props":10202,"children":10203},{"style":181},[10204],{"type":51,"value":2831},{"type":45,"tag":155,"props":10206,"children":10207},{"class":157,"line":472},[10208,10212,10216,10220,10224],{"type":45,"tag":155,"props":10209,"children":10210},{"style":181},[10211],{"type":51,"value":645},{"type":45,"tag":155,"props":10213,"children":10214},{"style":192},[10215],{"type":51,"value":650},{"type":45,"tag":155,"props":10217,"children":10218},{"style":181},[10219],{"type":51,"value":200},{"type":45,"tag":155,"props":10221,"children":10222},{"style":181},[10223],{"type":51,"value":205},{"type":45,"tag":155,"props":10225,"children":10226},{"style":181},[10227],{"type":51,"value":663},{"type":45,"tag":155,"props":10229,"children":10230},{"class":157,"line":480},[10231,10235,10239,10243,10247],{"type":45,"tag":155,"props":10232,"children":10233},{"style":181},[10234],{"type":51,"value":671},{"type":45,"tag":155,"props":10236,"children":10237},{"style":217},[10238],{"type":51,"value":220},{"type":45,"tag":155,"props":10240,"children":10241},{"style":181},[10242],{"type":51,"value":200},{"type":45,"tag":155,"props":10244,"children":10245},{"style":181},[10246],{"type":51,"value":205},{"type":45,"tag":155,"props":10248,"children":10249},{"style":181},[10250],{"type":51,"value":663},{"type":45,"tag":155,"props":10252,"children":10253},{"class":157,"line":489},[10254,10258,10262,10266,10270,10274,10278,10282,10286],{"type":45,"tag":155,"props":10255,"children":10256},{"style":181},[10257],{"type":51,"value":2977},{"type":45,"tag":155,"props":10259,"children":10260},{"style":694},[10261],{"type":51,"value":697},{"type":45,"tag":155,"props":10263,"children":10264},{"style":181},[10265],{"type":51,"value":200},{"type":45,"tag":155,"props":10267,"children":10268},{"style":181},[10269],{"type":51,"value":205},{"type":45,"tag":155,"props":10271,"children":10272},{"style":181},[10273],{"type":51,"value":710},{"type":45,"tag":155,"props":10275,"children":10276},{"style":181},[10277],{"type":51,"value":200},{"type":45,"tag":155,"props":10279,"children":10280},{"style":235},[10281],{"type":51,"value":719},{"type":45,"tag":155,"props":10283,"children":10284},{"style":181},[10285],{"type":51,"value":200},{"type":45,"tag":155,"props":10287,"children":10288},{"style":181},[10289],{"type":51,"value":3221},{"type":45,"tag":155,"props":10291,"children":10292},{"class":157,"line":1790},[10293,10297,10301,10305,10309,10313,10317,10321,10325],{"type":45,"tag":155,"props":10294,"children":10295},{"style":181},[10296],{"type":51,"value":2977},{"type":45,"tag":155,"props":10298,"children":10299},{"style":694},[10300],{"type":51,"value":737},{"type":45,"tag":155,"props":10302,"children":10303},{"style":181},[10304],{"type":51,"value":200},{"type":45,"tag":155,"props":10306,"children":10307},{"style":181},[10308],{"type":51,"value":205},{"type":45,"tag":155,"props":10310,"children":10311},{"style":181},[10312],{"type":51,"value":710},{"type":45,"tag":155,"props":10314,"children":10315},{"style":181},[10316],{"type":51,"value":200},{"type":45,"tag":155,"props":10318,"children":10319},{"style":235},[10320],{"type":51,"value":758},{"type":45,"tag":155,"props":10322,"children":10323},{"style":181},[10324],{"type":51,"value":200},{"type":45,"tag":155,"props":10326,"children":10327},{"style":181},[10328],{"type":51,"value":3221},{"type":45,"tag":155,"props":10330,"children":10331},{"class":157,"line":1798},[10332,10336,10340,10344,10348,10352,10356,10360,10364,10368,10372,10376,10380],{"type":45,"tag":155,"props":10333,"children":10334},{"style":181},[10335],{"type":51,"value":2977},{"type":45,"tag":155,"props":10337,"children":10338},{"style":694},[10339],{"type":51,"value":3824},{"type":45,"tag":155,"props":10341,"children":10342},{"style":181},[10343],{"type":51,"value":200},{"type":45,"tag":155,"props":10345,"children":10346},{"style":181},[10347],{"type":51,"value":205},{"type":45,"tag":155,"props":10349,"children":10350},{"style":181},[10351],{"type":51,"value":710},{"type":45,"tag":155,"props":10353,"children":10354},{"style":181},[10355],{"type":51,"value":200},{"type":45,"tag":155,"props":10357,"children":10358},{"style":235},[10359],{"type":51,"value":3845},{"type":45,"tag":155,"props":10361,"children":10362},{"style":181},[10363],{"type":51,"value":200},{"type":45,"tag":155,"props":10365,"children":10366},{"style":181},[10367],{"type":51,"value":247},{"type":45,"tag":155,"props":10369,"children":10370},{"style":181},[10371],{"type":51,"value":189},{"type":45,"tag":155,"props":10373,"children":10374},{"style":235},[10375],{"type":51,"value":3862},{"type":45,"tag":155,"props":10377,"children":10378},{"style":181},[10379],{"type":51,"value":200},{"type":45,"tag":155,"props":10381,"children":10382},{"style":181},[10383],{"type":51,"value":3010},{"type":45,"tag":155,"props":10385,"children":10386},{"class":157,"line":1822},[10387],{"type":45,"tag":155,"props":10388,"children":10389},{"style":181},[10390],{"type":51,"value":3019},{"type":45,"tag":155,"props":10392,"children":10393},{"class":157,"line":1858},[10394],{"type":45,"tag":155,"props":10395,"children":10396},{"style":181},[10397],{"type":51,"value":867},{"type":45,"tag":155,"props":10399,"children":10400},{"class":157,"line":1891},[10401],{"type":45,"tag":155,"props":10402,"children":10403},{"style":181},[10404],{"type":51,"value":875},{"type":45,"tag":60,"props":10406,"children":10408},{"id":10407},"reference-index",[10409],{"type":51,"value":10410},"Reference Index",{"type":45,"tag":1437,"props":10412,"children":10414},{"id":10413},"configuration",[10415],{"type":51,"value":10416},"Configuration",{"type":45,"tag":10418,"props":10419,"children":10420},"table",{},[10421,10440],{"type":45,"tag":10422,"props":10423,"children":10424},"thead",{},[10425],{"type":45,"tag":10426,"props":10427,"children":10428},"tr",{},[10429,10435],{"type":45,"tag":10430,"props":10431,"children":10432},"th",{},[10433],{"type":51,"value":10434},"File",{"type":45,"tag":10430,"props":10436,"children":10437},{},[10438],{"type":51,"value":10439},"Purpose",{"type":45,"tag":10441,"props":10442,"children":10443},"tbody",{},[10444,10463,10480,10497],{"type":45,"tag":10426,"props":10445,"children":10446},{},[10447,10458],{"type":45,"tag":10448,"props":10449,"children":10450},"td",{},[10451],{"type":45,"tag":10452,"props":10453,"children":10455},"a",{"href":10454},".\u002Freferences\u002Fconfiguration\u002FRULE.md",[10456],{"type":51,"value":10457},"configuration\u002FRULE.md",{"type":45,"tag":10448,"props":10459,"children":10460},{},[10461],{"type":51,"value":10462},"turbo.json overview, Package Configurations",{"type":45,"tag":10426,"props":10464,"children":10465},{},[10466,10475],{"type":45,"tag":10448,"props":10467,"children":10468},{},[10469],{"type":45,"tag":10452,"props":10470,"children":10472},{"href":10471},".\u002Freferences\u002Fconfiguration\u002Ftasks.md",[10473],{"type":51,"value":10474},"configuration\u002Ftasks.md",{"type":45,"tag":10448,"props":10476,"children":10477},{},[10478],{"type":51,"value":10479},"dependsOn, outputs, inputs, env, cache, persistent",{"type":45,"tag":10426,"props":10481,"children":10482},{},[10483,10492],{"type":45,"tag":10448,"props":10484,"children":10485},{},[10486],{"type":45,"tag":10452,"props":10487,"children":10489},{"href":10488},".\u002Freferences\u002Fconfiguration\u002Fglobal-options.md",[10490],{"type":51,"value":10491},"configuration\u002Fglobal-options.md",{"type":45,"tag":10448,"props":10493,"children":10494},{},[10495],{"type":51,"value":10496},"globalEnv, globalDependencies, global key, futureFlags, cacheDir, envMode",{"type":45,"tag":10426,"props":10498,"children":10499},{},[10500,10509],{"type":45,"tag":10448,"props":10501,"children":10502},{},[10503],{"type":45,"tag":10452,"props":10504,"children":10506},{"href":10505},".\u002Freferences\u002Fconfiguration\u002Fgotchas.md",[10507],{"type":51,"value":10508},"configuration\u002Fgotchas.md",{"type":45,"tag":10448,"props":10510,"children":10511},{},[10512],{"type":51,"value":10513},"Common configuration mistakes",{"type":45,"tag":1437,"props":10515,"children":10517},{"id":10516},"caching",[10518],{"type":51,"value":10519},"Caching",{"type":45,"tag":10418,"props":10521,"children":10522},{},[10523,10537],{"type":45,"tag":10422,"props":10524,"children":10525},{},[10526],{"type":45,"tag":10426,"props":10527,"children":10528},{},[10529,10533],{"type":45,"tag":10430,"props":10530,"children":10531},{},[10532],{"type":51,"value":10434},{"type":45,"tag":10430,"props":10534,"children":10535},{},[10536],{"type":51,"value":10439},{"type":45,"tag":10441,"props":10538,"children":10539},{},[10540,10557,10574],{"type":45,"tag":10426,"props":10541,"children":10542},{},[10543,10552],{"type":45,"tag":10448,"props":10544,"children":10545},{},[10546],{"type":45,"tag":10452,"props":10547,"children":10549},{"href":10548},".\u002Freferences\u002Fcaching\u002FRULE.md",[10550],{"type":51,"value":10551},"caching\u002FRULE.md",{"type":45,"tag":10448,"props":10553,"children":10554},{},[10555],{"type":51,"value":10556},"How caching works, hash inputs",{"type":45,"tag":10426,"props":10558,"children":10559},{},[10560,10569],{"type":45,"tag":10448,"props":10561,"children":10562},{},[10563],{"type":45,"tag":10452,"props":10564,"children":10566},{"href":10565},".\u002Freferences\u002Fcaching\u002Fremote-cache.md",[10567],{"type":51,"value":10568},"caching\u002Fremote-cache.md",{"type":45,"tag":10448,"props":10570,"children":10571},{},[10572],{"type":51,"value":10573},"Vercel Remote Cache, self-hosted, login\u002Flink",{"type":45,"tag":10426,"props":10575,"children":10576},{},[10577,10586],{"type":45,"tag":10448,"props":10578,"children":10579},{},[10580],{"type":45,"tag":10452,"props":10581,"children":10583},{"href":10582},".\u002Freferences\u002Fcaching\u002Fgotchas.md",[10584],{"type":51,"value":10585},"caching\u002Fgotchas.md",{"type":45,"tag":10448,"props":10587,"children":10588},{},[10589],{"type":51,"value":10590},"Debugging cache misses, --summarize, --dry",{"type":45,"tag":1437,"props":10592,"children":10594},{"id":10593},"environment-variables",[10595],{"type":51,"value":10596},"Environment Variables",{"type":45,"tag":10418,"props":10598,"children":10599},{},[10600,10614],{"type":45,"tag":10422,"props":10601,"children":10602},{},[10603],{"type":45,"tag":10426,"props":10604,"children":10605},{},[10606,10610],{"type":45,"tag":10430,"props":10607,"children":10608},{},[10609],{"type":51,"value":10434},{"type":45,"tag":10430,"props":10611,"children":10612},{},[10613],{"type":51,"value":10439},{"type":45,"tag":10441,"props":10615,"children":10616},{},[10617,10634,10651],{"type":45,"tag":10426,"props":10618,"children":10619},{},[10620,10629],{"type":45,"tag":10448,"props":10621,"children":10622},{},[10623],{"type":45,"tag":10452,"props":10624,"children":10626},{"href":10625},".\u002Freferences\u002Fenvironment\u002FRULE.md",[10627],{"type":51,"value":10628},"environment\u002FRULE.md",{"type":45,"tag":10448,"props":10630,"children":10631},{},[10632],{"type":51,"value":10633},"env, globalEnv, passThroughEnv",{"type":45,"tag":10426,"props":10635,"children":10636},{},[10637,10646],{"type":45,"tag":10448,"props":10638,"children":10639},{},[10640],{"type":45,"tag":10452,"props":10641,"children":10643},{"href":10642},".\u002Freferences\u002Fenvironment\u002Fmodes.md",[10644],{"type":51,"value":10645},"environment\u002Fmodes.md",{"type":45,"tag":10448,"props":10647,"children":10648},{},[10649],{"type":51,"value":10650},"Strict vs Loose mode, framework inference",{"type":45,"tag":10426,"props":10652,"children":10653},{},[10654,10663],{"type":45,"tag":10448,"props":10655,"children":10656},{},[10657],{"type":45,"tag":10452,"props":10658,"children":10660},{"href":10659},".\u002Freferences\u002Fenvironment\u002Fgotchas.md",[10661],{"type":51,"value":10662},"environment\u002Fgotchas.md",{"type":45,"tag":10448,"props":10664,"children":10665},{},[10666],{"type":51,"value":10667},".env files, CI issues",{"type":45,"tag":1437,"props":10669,"children":10671},{"id":10670},"filtering",[10672],{"type":51,"value":10673},"Filtering",{"type":45,"tag":10418,"props":10675,"children":10676},{},[10677,10691],{"type":45,"tag":10422,"props":10678,"children":10679},{},[10680],{"type":45,"tag":10426,"props":10681,"children":10682},{},[10683,10687],{"type":45,"tag":10430,"props":10684,"children":10685},{},[10686],{"type":51,"value":10434},{"type":45,"tag":10430,"props":10688,"children":10689},{},[10690],{"type":51,"value":10439},{"type":45,"tag":10441,"props":10692,"children":10693},{},[10694,10711],{"type":45,"tag":10426,"props":10695,"children":10696},{},[10697,10706],{"type":45,"tag":10448,"props":10698,"children":10699},{},[10700],{"type":45,"tag":10452,"props":10701,"children":10703},{"href":10702},".\u002Freferences\u002Ffiltering\u002FRULE.md",[10704],{"type":51,"value":10705},"filtering\u002FRULE.md",{"type":45,"tag":10448,"props":10707,"children":10708},{},[10709],{"type":51,"value":10710},"--filter syntax overview",{"type":45,"tag":10426,"props":10712,"children":10713},{},[10714,10723],{"type":45,"tag":10448,"props":10715,"children":10716},{},[10717],{"type":45,"tag":10452,"props":10718,"children":10720},{"href":10719},".\u002Freferences\u002Ffiltering\u002Fpatterns.md",[10721],{"type":51,"value":10722},"filtering\u002Fpatterns.md",{"type":45,"tag":10448,"props":10724,"children":10725},{},[10726],{"type":51,"value":10727},"Common filter patterns",{"type":45,"tag":1437,"props":10729,"children":10731},{"id":10730},"cicd",[10732],{"type":51,"value":19},{"type":45,"tag":10418,"props":10734,"children":10735},{},[10736,10750],{"type":45,"tag":10422,"props":10737,"children":10738},{},[10739],{"type":45,"tag":10426,"props":10740,"children":10741},{},[10742,10746],{"type":45,"tag":10430,"props":10743,"children":10744},{},[10745],{"type":51,"value":10434},{"type":45,"tag":10430,"props":10747,"children":10748},{},[10749],{"type":51,"value":10439},{"type":45,"tag":10441,"props":10751,"children":10752},{},[10753,10770,10787,10804],{"type":45,"tag":10426,"props":10754,"children":10755},{},[10756,10765],{"type":45,"tag":10448,"props":10757,"children":10758},{},[10759],{"type":45,"tag":10452,"props":10760,"children":10762},{"href":10761},".\u002Freferences\u002Fci\u002FRULE.md",[10763],{"type":51,"value":10764},"ci\u002FRULE.md",{"type":45,"tag":10448,"props":10766,"children":10767},{},[10768],{"type":51,"value":10769},"General CI principles",{"type":45,"tag":10426,"props":10771,"children":10772},{},[10773,10782],{"type":45,"tag":10448,"props":10774,"children":10775},{},[10776],{"type":45,"tag":10452,"props":10777,"children":10779},{"href":10778},".\u002Freferences\u002Fci\u002Fgithub-actions.md",[10780],{"type":51,"value":10781},"ci\u002Fgithub-actions.md",{"type":45,"tag":10448,"props":10783,"children":10784},{},[10785],{"type":51,"value":10786},"Complete GitHub Actions setup",{"type":45,"tag":10426,"props":10788,"children":10789},{},[10790,10799],{"type":45,"tag":10448,"props":10791,"children":10792},{},[10793],{"type":45,"tag":10452,"props":10794,"children":10796},{"href":10795},".\u002Freferences\u002Fci\u002Fvercel.md",[10797],{"type":51,"value":10798},"ci\u002Fvercel.md",{"type":45,"tag":10448,"props":10800,"children":10801},{},[10802],{"type":51,"value":10803},"Vercel deployment, turbo-ignore",{"type":45,"tag":10426,"props":10805,"children":10806},{},[10807,10816],{"type":45,"tag":10448,"props":10808,"children":10809},{},[10810],{"type":45,"tag":10452,"props":10811,"children":10813},{"href":10812},".\u002Freferences\u002Fci\u002Fpatterns.md",[10814],{"type":51,"value":10815},"ci\u002Fpatterns.md",{"type":45,"tag":10448,"props":10817,"children":10818},{},[10819],{"type":51,"value":10820},"--affected, caching strategies",{"type":45,"tag":1437,"props":10822,"children":10824},{"id":10823},"cli",[10825],{"type":51,"value":10826},"CLI",{"type":45,"tag":10418,"props":10828,"children":10829},{},[10830,10844],{"type":45,"tag":10422,"props":10831,"children":10832},{},[10833],{"type":45,"tag":10426,"props":10834,"children":10835},{},[10836,10840],{"type":45,"tag":10430,"props":10837,"children":10838},{},[10839],{"type":51,"value":10434},{"type":45,"tag":10430,"props":10841,"children":10842},{},[10843],{"type":51,"value":10439},{"type":45,"tag":10441,"props":10845,"children":10846},{},[10847,10864],{"type":45,"tag":10426,"props":10848,"children":10849},{},[10850,10859],{"type":45,"tag":10448,"props":10851,"children":10852},{},[10853],{"type":45,"tag":10452,"props":10854,"children":10856},{"href":10855},".\u002Freferences\u002Fcli\u002FRULE.md",[10857],{"type":51,"value":10858},"cli\u002FRULE.md",{"type":45,"tag":10448,"props":10860,"children":10861},{},[10862],{"type":51,"value":10863},"turbo run basics",{"type":45,"tag":10426,"props":10865,"children":10866},{},[10867,10876],{"type":45,"tag":10448,"props":10868,"children":10869},{},[10870],{"type":45,"tag":10452,"props":10871,"children":10873},{"href":10872},".\u002Freferences\u002Fcli\u002Fcommands.md",[10874],{"type":51,"value":10875},"cli\u002Fcommands.md",{"type":45,"tag":10448,"props":10877,"children":10878},{},[10879],{"type":51,"value":10880},"turbo run flags, turbo-ignore, other commands",{"type":45,"tag":1437,"props":10882,"children":10884},{"id":10883},"best-practices",[10885],{"type":51,"value":10886},"Best Practices",{"type":45,"tag":10418,"props":10888,"children":10889},{},[10890,10904],{"type":45,"tag":10422,"props":10891,"children":10892},{},[10893],{"type":45,"tag":10426,"props":10894,"children":10895},{},[10896,10900],{"type":45,"tag":10430,"props":10897,"children":10898},{},[10899],{"type":51,"value":10434},{"type":45,"tag":10430,"props":10901,"children":10902},{},[10903],{"type":51,"value":10439},{"type":45,"tag":10441,"props":10905,"children":10906},{},[10907,10924,10941,10958],{"type":45,"tag":10426,"props":10908,"children":10909},{},[10910,10919],{"type":45,"tag":10448,"props":10911,"children":10912},{},[10913],{"type":45,"tag":10452,"props":10914,"children":10916},{"href":10915},".\u002Freferences\u002Fbest-practices\u002FRULE.md",[10917],{"type":51,"value":10918},"best-practices\u002FRULE.md",{"type":45,"tag":10448,"props":10920,"children":10921},{},[10922],{"type":51,"value":10923},"Monorepo best practices overview",{"type":45,"tag":10426,"props":10925,"children":10926},{},[10927,10936],{"type":45,"tag":10448,"props":10928,"children":10929},{},[10930],{"type":45,"tag":10452,"props":10931,"children":10933},{"href":10932},".\u002Freferences\u002Fbest-practices\u002Fstructure.md",[10934],{"type":51,"value":10935},"best-practices\u002Fstructure.md",{"type":45,"tag":10448,"props":10937,"children":10938},{},[10939],{"type":51,"value":10940},"Repository structure, workspace config, TypeScript\u002FESLint setup",{"type":45,"tag":10426,"props":10942,"children":10943},{},[10944,10953],{"type":45,"tag":10448,"props":10945,"children":10946},{},[10947],{"type":45,"tag":10452,"props":10948,"children":10950},{"href":10949},".\u002Freferences\u002Fbest-practices\u002Fpackages.md",[10951],{"type":51,"value":10952},"best-practices\u002Fpackages.md",{"type":45,"tag":10448,"props":10954,"children":10955},{},[10956],{"type":51,"value":10957},"Creating internal packages, JIT vs Compiled, exports",{"type":45,"tag":10426,"props":10959,"children":10960},{},[10961,10970],{"type":45,"tag":10448,"props":10962,"children":10963},{},[10964],{"type":45,"tag":10452,"props":10965,"children":10967},{"href":10966},".\u002Freferences\u002Fbest-practices\u002Fdependencies.md",[10968],{"type":51,"value":10969},"best-practices\u002Fdependencies.md",{"type":45,"tag":10448,"props":10971,"children":10972},{},[10973],{"type":51,"value":10974},"Dependency management, installing, version sync",{"type":45,"tag":1437,"props":10976,"children":10978},{"id":10977},"watch-mode",[10979],{"type":51,"value":10980},"Watch Mode",{"type":45,"tag":10418,"props":10982,"children":10983},{},[10984,10998],{"type":45,"tag":10422,"props":10985,"children":10986},{},[10987],{"type":45,"tag":10426,"props":10988,"children":10989},{},[10990,10994],{"type":45,"tag":10430,"props":10991,"children":10992},{},[10993],{"type":51,"value":10434},{"type":45,"tag":10430,"props":10995,"children":10996},{},[10997],{"type":51,"value":10439},{"type":45,"tag":10441,"props":10999,"children":11000},{},[11001],{"type":45,"tag":10426,"props":11002,"children":11003},{},[11004,11013],{"type":45,"tag":10448,"props":11005,"children":11006},{},[11007],{"type":45,"tag":10452,"props":11008,"children":11010},{"href":11009},".\u002Freferences\u002Fwatch\u002FRULE.md",[11011],{"type":51,"value":11012},"watch\u002FRULE.md",{"type":45,"tag":10448,"props":11014,"children":11015},{},[11016],{"type":51,"value":11017},"turbo watch, interruptible tasks, dev workflows",{"type":45,"tag":1437,"props":11019,"children":11021},{"id":11020},"boundaries-experimental",[11022],{"type":51,"value":11023},"Boundaries (Experimental)",{"type":45,"tag":10418,"props":11025,"children":11026},{},[11027,11041],{"type":45,"tag":10422,"props":11028,"children":11029},{},[11030],{"type":45,"tag":10426,"props":11031,"children":11032},{},[11033,11037],{"type":45,"tag":10430,"props":11034,"children":11035},{},[11036],{"type":51,"value":10434},{"type":45,"tag":10430,"props":11038,"children":11039},{},[11040],{"type":51,"value":10439},{"type":45,"tag":10441,"props":11042,"children":11043},{},[11044],{"type":45,"tag":10426,"props":11045,"children":11046},{},[11047,11056],{"type":45,"tag":10448,"props":11048,"children":11049},{},[11050],{"type":45,"tag":10452,"props":11051,"children":11053},{"href":11052},".\u002Freferences\u002Fboundaries\u002FRULE.md",[11054],{"type":51,"value":11055},"boundaries\u002FRULE.md",{"type":45,"tag":10448,"props":11057,"children":11058},{},[11059],{"type":51,"value":11060},"Enforce package isolation, tag-based dependency rules",{"type":45,"tag":60,"props":11062,"children":11064},{"id":11063},"source-documentation",[11065],{"type":51,"value":11066},"Source Documentation",{"type":45,"tag":54,"props":11068,"children":11069},{},[11070],{"type":51,"value":11071},"This skill is based on the official Turborepo documentation at:",{"type":45,"tag":2676,"props":11073,"children":11074},{},[11075,11088],{"type":45,"tag":85,"props":11076,"children":11077},{},[11078,11080,11086],{"type":51,"value":11079},"Source: ",{"type":45,"tag":91,"props":11081,"children":11083},{"className":11082},[],[11084],{"type":51,"value":11085},"apps\u002Fdocs\u002Fcontent\u002Fdocs\u002F",{"type":51,"value":11087}," in the Turborepo repository",{"type":45,"tag":85,"props":11089,"children":11090},{},[11091,11093],{"type":51,"value":11092},"Live: ",{"type":45,"tag":10452,"props":11094,"children":11098},{"href":11095,"rel":11096},"https:\u002F\u002Fturborepo.dev\u002Fdocs",[11097],"nofollow",[11099],{"type":51,"value":11095},{"type":45,"tag":11101,"props":11102,"children":11103},"style",{},[11104],{"type":51,"value":11105},"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":11107,"total":158},[11108],{"slug":4,"name":4,"fn":5,"description":6,"org":11109,"tags":11110,"stars":21,"repoUrl":22,"updatedAt":23},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11111,11112,11113],{"name":19,"slug":20,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":4,"type":15},{"items":11115,"total":11281},[11116,11136,11148,11167,11178,11184,11200,11218,11230,11249,11261,11271],{"slug":11117,"name":11117,"fn":11118,"description":11119,"org":11120,"tags":11121,"stars":11133,"repoUrl":11134,"updatedAt":11135},"next-cache-components-adoption","enable and migrate to Next.js Cache Components","Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the `cacheComponents` flag, work through a flood of blocking-prerender \u002F instant validation errors, run the `cache-components-instant-false` codemod, or decide between opting routes out with `export const instant = false` and fixing them in place.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11122,11123,11126,11129,11132],{"name":10519,"slug":10516,"type":15},{"name":11124,"slug":11125,"type":15},"Frontend","frontend",{"name":11127,"slug":11128,"type":15},"Migration","migration",{"name":11130,"slug":11131,"type":15},"Next.js","next-js",{"name":9,"slug":8,"type":15},141208,"https:\u002F\u002Fgithub.com\u002Fvercel\u002Fnext.js","2026-07-24T05:38:30.118542",{"slug":11137,"name":11137,"fn":11138,"description":11139,"org":11140,"tags":11141,"stars":11133,"repoUrl":11134,"updatedAt":11147},"next-cache-components-optimizer","optimize Next.js cache components","Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components \u002F PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next\u002Fplaywright instant() e2e and work it to green, one verified route at a time; the shipped test then guards against regression. Use when asked to make a route's navigation instant (its static shell commits immediately), fix a route whose static shell isn't prerendered\u002Fserved\u002Fprefetched, grow a route's static shell or fix its slow first paint, diagnose which Suspense boundary keeps a route out of its static shell, or write the instant() e2e guard for one. Requires Next.js 16.3+ with cacheComponents; directs an upgrade if older.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11142,11143,11144,11145,11146],{"name":10519,"slug":10516,"type":15},{"name":11124,"slug":11125,"type":15},{"name":11130,"slug":11131,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:31:10.674078",{"slug":11149,"name":11149,"fn":11150,"description":11151,"org":11152,"tags":11153,"stars":11133,"repoUrl":11134,"updatedAt":11166},"next-dev-loop","verify Next.js runtime behavior","Verify Next.js runtime behavior after editing app code. Use this skill to confirm a change actually works in a running app — not just that it compiles or type-checks. Combines \u002F_next\u002Fmcp (Next.js's view) with agent-browser (the browser's view). Requires a running `next dev`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11154,11157,11158,11161,11162,11163],{"name":11155,"slug":11156,"type":15},"Debugging","debugging",{"name":11124,"slug":11125,"type":15},{"name":11159,"slug":11160,"type":15},"Local Development","local-development",{"name":11130,"slug":11131,"type":15},{"name":9,"slug":8,"type":15},{"name":11164,"slug":11165,"type":15},"Web Development","web-development","2026-05-22T06:45:28.627735",{"slug":11168,"name":11168,"fn":11169,"description":11170,"org":11171,"tags":11172,"stars":11133,"repoUrl":11134,"updatedAt":11177},"next-partial-prefetching-adoption","adopt Partial Prefetching in Next.js apps","Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the `partialPrefetching` flag, opt routes in with `export const prefetch = 'partial'`, audit `\u003CLink prefetch={true}>` calls, or resolve the link-prefetch-partial and instant-shell-url-data insights.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11173,11174,11175,11176],{"name":11124,"slug":11125,"type":15},{"name":11130,"slug":11131,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-30T05:31:11.591864",{"slug":4,"name":4,"fn":5,"description":6,"org":11179,"tags":11180,"stars":21,"repoUrl":22,"updatedAt":23},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11181,11182,11183],{"name":19,"slug":20,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":4,"type":15},{"slug":11185,"name":11185,"fn":11186,"description":11187,"org":11188,"tags":11189,"stars":11197,"repoUrl":11198,"updatedAt":11199},"add-function-examples","add AI function examples for testing","Guide for adding new AI function examples, for testing specific features against the actual provider APIs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11190,11193,11196],{"name":11191,"slug":11192,"type":15},"AI SDK","ai-sdk",{"name":11194,"slug":11195,"type":15},"Testing","testing",{"name":9,"slug":8,"type":15},25670,"https:\u002F\u002Fgithub.com\u002Fvercel\u002Fai","2026-04-06T18:55:51.318866",{"slug":11201,"name":11201,"fn":11202,"description":11203,"org":11204,"tags":11205,"stars":11197,"repoUrl":11198,"updatedAt":11217},"add-harness-package","add AI SDK harness packages","Guide for adding new AI SDK harness packages. Use when creating a new @ai-sdk\u002Fharness-\u003Cname> package that adapts a coding-agent runtime to HarnessV1.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11206,11209,11210,11213,11216],{"name":11207,"slug":11208,"type":15},"Agents","agents",{"name":11191,"slug":11192,"type":15},{"name":11211,"slug":11212,"type":15},"Harness","harness",{"name":11214,"slug":11215,"type":15},"SDK","sdk",{"name":9,"slug":8,"type":15},"2026-06-18T08:29:19.858737",{"slug":11219,"name":11219,"fn":11220,"description":11221,"org":11222,"tags":11223,"stars":11197,"repoUrl":11198,"updatedAt":11229},"add-provider-package","add new provider packages to AI SDK","Guide for adding new AI provider packages to the AI SDK. Use when creating a new @ai-sdk\u002F\u003Cprovider> package to integrate an AI service into the SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11224,11225,11228],{"name":11191,"slug":11192,"type":15},{"name":11226,"slug":11227,"type":15},"API Development","api-development",{"name":9,"slug":8,"type":15},"2026-04-06T18:55:47.45549",{"slug":11231,"name":11231,"fn":11232,"description":11233,"org":11234,"tags":11235,"stars":11197,"repoUrl":11198,"updatedAt":11248},"adr-skill","create and maintain architecture decision records","Create and maintain Architecture Decision Records (ADRs) optimized for agentic coding workflows. Use when you need to propose, write, update, accept\u002Freject, deprecate, or supersede an ADR; bootstrap an adr folder and index; consult existing ADRs before implementing changes; or enforce ADR conventions. This skill uses Socratic questioning to capture intent before drafting, and validates output against an agent-readiness checklist.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11236,11239,11242,11245],{"name":11237,"slug":11238,"type":15},"ADR","adr",{"name":11240,"slug":11241,"type":15},"Architecture","architecture",{"name":11243,"slug":11244,"type":15},"Documentation","documentation",{"name":11246,"slug":11247,"type":15},"Engineering","engineering","2026-04-06T18:55:50.043694",{"slug":11192,"name":11192,"fn":11250,"description":11251,"org":11252,"tags":11253,"stars":11197,"repoUrl":11198,"updatedAt":11260},"build AI features with Vercel AI SDK","Answer questions about the AI SDK and help build AI-powered features. Use when developers: (1) Ask about AI SDK functions like generateText, streamText, ToolLoopAgent, embed, or tools, (2) Want to build AI agents, chatbots, RAG systems, or text generation features, (3) Have questions about AI providers (OpenAI, Anthropic, Google, etc.), streaming, tool calling, structured output, or embeddings, (4) Use React hooks like useChat or useCompletion. Triggers on: \"AI SDK\", \"Vercel AI SDK\", \"generateText\", \"streamText\", \"add AI to my app\", \"build an agent\", \"tool calling\", \"structured output\", \"useChat\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11254,11255,11256,11259],{"name":11207,"slug":11208,"type":15},{"name":11191,"slug":11192,"type":15},{"name":11257,"slug":11258,"type":15},"LLM","llm",{"name":9,"slug":8,"type":15},"2026-04-06T18:55:48.739463",{"slug":11262,"name":11262,"fn":11263,"description":11264,"org":11265,"tags":11266,"stars":11197,"repoUrl":11198,"updatedAt":11270},"capture-api-response-test-fixture","capture API response test fixtures","Capture API response test fixture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11267,11268,11269],{"name":11226,"slug":11227,"type":15},{"name":11194,"slug":11195,"type":15},{"name":9,"slug":8,"type":15},"2026-04-06T18:55:56.374433",{"slug":11272,"name":11272,"fn":11273,"description":11274,"org":11275,"tags":11276,"stars":11197,"repoUrl":11198,"updatedAt":11280},"develop-ai-functions-example","develop AI SDK function examples","Develop examples for AI SDK functions. Use when creating, running, or modifying examples under examples\u002Fai-functions\u002Fsrc to validate provider support, demonstrate features, or create test fixtures.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[11277,11278,11279],{"name":11191,"slug":11192,"type":15},{"name":11194,"slug":11195,"type":15},{"name":9,"slug":8,"type":15},"2026-04-06T18:55:55.088956",68]