ads-fe 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -0
- package/dist/cli.js +545 -0
- package/dist/meta.js +93 -0
- package/package.json +43 -0
- package/skill.md +66 -0
- package/skills/core/SKILL.md +66 -0
- package/skills/core/references/app-development.md +45 -0
- package/skills/core/references/git.md +66 -0
- package/skills/core/references/monorepo.md +124 -0
- package/skills/element-plus-vue3/LICENSE.md +405 -0
- package/skills/element-plus-vue3/LICENSE.txt +202 -0
- package/skills/element-plus-vue3/SKILL.md +218 -0
- package/skills/element-plus-vue3/SYNC.md +5 -0
- package/skills/element-plus-vue3/api/component-api.md +94 -0
- package/skills/element-plus-vue3/api/global-config.md +89 -0
- package/skills/element-plus-vue3/api/props-and-events.md +101 -0
- package/skills/element-plus-vue3/examples/components/button.md +99 -0
- package/skills/element-plus-vue3/examples/components/date-picker.md +115 -0
- package/skills/element-plus-vue3/examples/components/dialog.md +106 -0
- package/skills/element-plus-vue3/examples/components/form.md +127 -0
- package/skills/element-plus-vue3/examples/components/input.md +123 -0
- package/skills/element-plus-vue3/examples/components/message.md +93 -0
- package/skills/element-plus-vue3/examples/components/overview.md +59 -0
- package/skills/element-plus-vue3/examples/components/select.md +133 -0
- package/skills/element-plus-vue3/examples/components/table.md +166 -0
- package/skills/element-plus-vue3/examples/guide/design.md +68 -0
- package/skills/element-plus-vue3/examples/guide/global-config.md +95 -0
- package/skills/element-plus-vue3/examples/guide/i18n.md +95 -0
- package/skills/element-plus-vue3/examples/guide/installation.md +110 -0
- package/skills/element-plus-vue3/examples/guide/quick-start.md +103 -0
- package/skills/element-plus-vue3/examples/guide/theme.md +78 -0
- package/skills/element-plus-vue3/templates/component-usage.md +92 -0
- package/skills/element-plus-vue3/templates/installation.md +82 -0
- package/skills/element-plus-vue3/templates/project-setup.md +83 -0
- package/skills/node/LICENSE.md +21 -0
- package/skills/node/SKILL.md +94 -0
- package/skills/node/SYNC.md +5 -0
- package/skills/node/rules/assets/graceful-server.test.ts +88 -0
- package/skills/node/rules/assets/graceful-server.ts +80 -0
- package/skills/node/rules/async-patterns.md +136 -0
- package/skills/node/rules/caching.md +198 -0
- package/skills/node/rules/environment.md +253 -0
- package/skills/node/rules/error-handling.md +164 -0
- package/skills/node/rules/flaky-tests.md +439 -0
- package/skills/node/rules/graceful-shutdown.md +204 -0
- package/skills/node/rules/logging.md +205 -0
- package/skills/node/rules/modules.md +105 -0
- package/skills/node/rules/node-modules-exploration.md +172 -0
- package/skills/node/rules/performance.md +130 -0
- package/skills/node/rules/profiling.md +183 -0
- package/skills/node/rules/streams.md +213 -0
- package/skills/node/rules/stuck-processes-and-tests.md +124 -0
- package/skills/node/rules/testing.md +218 -0
- package/skills/node/rules/typescript.md +262 -0
- package/skills/node/tile.json +11 -0
- package/skills/nuxt/GENERATION.md +5 -0
- package/skills/nuxt/LICENSE.md +21 -0
- package/skills/nuxt/SKILL.md +55 -0
- package/skills/nuxt/SYNC.md +5 -0
- package/skills/nuxt/references/advanced-hooks.md +289 -0
- package/skills/nuxt/references/advanced-layers.md +299 -0
- package/skills/nuxt/references/advanced-module-authoring.md +554 -0
- package/skills/nuxt/references/best-practices-data-fetching.md +357 -0
- package/skills/nuxt/references/best-practices-ssr.md +355 -0
- package/skills/nuxt/references/core-cli.md +263 -0
- package/skills/nuxt/references/core-config.md +162 -0
- package/skills/nuxt/references/core-data-fetching.md +236 -0
- package/skills/nuxt/references/core-deployment.md +224 -0
- package/skills/nuxt/references/core-directory-structure.md +269 -0
- package/skills/nuxt/references/core-modules.md +292 -0
- package/skills/nuxt/references/core-routing.md +226 -0
- package/skills/nuxt/references/features-components-autoimport.md +328 -0
- package/skills/nuxt/references/features-components.md +264 -0
- package/skills/nuxt/references/features-composables.md +276 -0
- package/skills/nuxt/references/features-server.md +265 -0
- package/skills/nuxt/references/features-state.md +194 -0
- package/skills/nuxt/references/rendering-modes.md +237 -0
- package/skills/pinia/GENERATION.md +5 -0
- package/skills/pinia/LICENSE.md +21 -0
- package/skills/pinia/SKILL.md +59 -0
- package/skills/pinia/SYNC.md +5 -0
- package/skills/pinia/references/advanced-hmr.md +61 -0
- package/skills/pinia/references/advanced-nuxt.md +119 -0
- package/skills/pinia/references/advanced-ssr.md +121 -0
- package/skills/pinia/references/best-practices-outside-component.md +115 -0
- package/skills/pinia/references/best-practices-testing.md +212 -0
- package/skills/pinia/references/core-stores.md +389 -0
- package/skills/pinia/references/features-composables.md +114 -0
- package/skills/pinia/references/features-composing-stores.md +134 -0
- package/skills/pinia/references/features-plugins.md +203 -0
- package/skills/pnpm/GENERATION.md +5 -0
- package/skills/pnpm/LICENSE.md +21 -0
- package/skills/pnpm/SKILL.md +42 -0
- package/skills/pnpm/SYNC.md +5 -0
- package/skills/pnpm/references/best-practices-ci.md +285 -0
- package/skills/pnpm/references/best-practices-migration.md +291 -0
- package/skills/pnpm/references/best-practices-performance.md +284 -0
- package/skills/pnpm/references/core-cli.md +229 -0
- package/skills/pnpm/references/core-config.md +188 -0
- package/skills/pnpm/references/core-store.md +179 -0
- package/skills/pnpm/references/core-workspaces.md +205 -0
- package/skills/pnpm/references/features-aliases.md +168 -0
- package/skills/pnpm/references/features-catalogs.md +159 -0
- package/skills/pnpm/references/features-hooks.md +233 -0
- package/skills/pnpm/references/features-overrides.md +184 -0
- package/skills/pnpm/references/features-patches.md +201 -0
- package/skills/pnpm/references/features-peer-deps.md +250 -0
- package/skills/slidev/LICENSE.md +21 -0
- package/skills/slidev/README.md +61 -0
- package/skills/slidev/SKILL.md +189 -0
- package/skills/slidev/SYNC.md +5 -0
- package/skills/slidev/references/animation-click-marker.md +37 -0
- package/skills/slidev/references/animation-drawing.md +68 -0
- package/skills/slidev/references/animation-rough-marker.md +53 -0
- package/skills/slidev/references/api-slide-hooks.md +37 -0
- package/skills/slidev/references/build-og-image.md +36 -0
- package/skills/slidev/references/build-pdf.md +40 -0
- package/skills/slidev/references/build-remote-assets.md +34 -0
- package/skills/slidev/references/build-seo-meta.md +43 -0
- package/skills/slidev/references/code-groups.md +64 -0
- package/skills/slidev/references/code-import-snippet.md +55 -0
- package/skills/slidev/references/code-line-highlighting.md +50 -0
- package/skills/slidev/references/code-line-numbers.md +46 -0
- package/skills/slidev/references/code-magic-move.md +57 -0
- package/skills/slidev/references/code-max-height.md +37 -0
- package/skills/slidev/references/code-twoslash.md +42 -0
- package/skills/slidev/references/core-animations.md +196 -0
- package/skills/slidev/references/core-cli.md +140 -0
- package/skills/slidev/references/core-components.md +197 -0
- package/skills/slidev/references/core-exporting.md +148 -0
- package/skills/slidev/references/core-frontmatter.md +195 -0
- package/skills/slidev/references/core-global-context.md +155 -0
- package/skills/slidev/references/core-headmatter.md +188 -0
- package/skills/slidev/references/core-hosting.md +152 -0
- package/skills/slidev/references/core-layouts.md +286 -0
- package/skills/slidev/references/core-syntax.md +155 -0
- package/skills/slidev/references/diagram-latex.md +55 -0
- package/skills/slidev/references/diagram-mermaid.md +44 -0
- package/skills/slidev/references/diagram-plantuml.md +45 -0
- package/skills/slidev/references/editor-monaco-run.md +44 -0
- package/skills/slidev/references/editor-monaco-write.md +24 -0
- package/skills/slidev/references/editor-monaco.md +50 -0
- package/skills/slidev/references/editor-prettier.md +40 -0
- package/skills/slidev/references/editor-side.md +23 -0
- package/skills/slidev/references/editor-vscode.md +55 -0
- package/skills/slidev/references/layout-canvas-size.md +25 -0
- package/skills/slidev/references/layout-draggable.md +57 -0
- package/skills/slidev/references/layout-global-layers.md +50 -0
- package/skills/slidev/references/layout-slots.md +75 -0
- package/skills/slidev/references/layout-transform.md +33 -0
- package/skills/slidev/references/layout-zoom.md +39 -0
- package/skills/slidev/references/presenter-notes-ruby.md +35 -0
- package/skills/slidev/references/presenter-recording.md +30 -0
- package/skills/slidev/references/presenter-remote.md +40 -0
- package/skills/slidev/references/presenter-timer.md +34 -0
- package/skills/slidev/references/style-direction.md +34 -0
- package/skills/slidev/references/style-icons.md +46 -0
- package/skills/slidev/references/style-scoped.md +50 -0
- package/skills/slidev/references/syntax-block-frontmatter.md +39 -0
- package/skills/slidev/references/syntax-comark.md +51 -0
- package/skills/slidev/references/syntax-frontmatter-merging.md +49 -0
- package/skills/slidev/references/syntax-importing-slides.md +60 -0
- package/skills/slidev/references/tool-eject-theme.md +27 -0
- package/skills/tsdown/LICENSE.md +22 -0
- package/skills/tsdown/README.md +77 -0
- package/skills/tsdown/SKILL.md +416 -0
- package/skills/tsdown/SYNC.md +5 -0
- package/skills/tsdown/references/README.md +139 -0
- package/skills/tsdown/references/advanced-benchmark.md +8 -0
- package/skills/tsdown/references/advanced-ci.md +89 -0
- package/skills/tsdown/references/advanced-hooks.md +363 -0
- package/skills/tsdown/references/advanced-plugins.md +381 -0
- package/skills/tsdown/references/advanced-programmatic.md +378 -0
- package/skills/tsdown/references/advanced-rolldown-options.md +117 -0
- package/skills/tsdown/references/guide-getting-started.md +183 -0
- package/skills/tsdown/references/guide-introduction.md +42 -0
- package/skills/tsdown/references/guide-migrate-from-tsup.md +199 -0
- package/skills/tsdown/references/option-cjs-default.md +98 -0
- package/skills/tsdown/references/option-cleaning.md +275 -0
- package/skills/tsdown/references/option-config-file.md +291 -0
- package/skills/tsdown/references/option-css.md +301 -0
- package/skills/tsdown/references/option-dependencies.md +385 -0
- package/skills/tsdown/references/option-dts.md +251 -0
- package/skills/tsdown/references/option-entry.md +211 -0
- package/skills/tsdown/references/option-exe.md +120 -0
- package/skills/tsdown/references/option-lint.md +127 -0
- package/skills/tsdown/references/option-log-level.md +91 -0
- package/skills/tsdown/references/option-minification.md +177 -0
- package/skills/tsdown/references/option-output-directory.md +272 -0
- package/skills/tsdown/references/option-output-format.md +183 -0
- package/skills/tsdown/references/option-package-exports.md +320 -0
- package/skills/tsdown/references/option-platform.md +256 -0
- package/skills/tsdown/references/option-root.md +88 -0
- package/skills/tsdown/references/option-shims.md +299 -0
- package/skills/tsdown/references/option-sourcemap.md +301 -0
- package/skills/tsdown/references/option-target.md +222 -0
- package/skills/tsdown/references/option-tree-shaking.md +335 -0
- package/skills/tsdown/references/option-unbundle.md +310 -0
- package/skills/tsdown/references/option-watch-mode.md +261 -0
- package/skills/tsdown/references/recipe-react.md +338 -0
- package/skills/tsdown/references/recipe-solid.md +42 -0
- package/skills/tsdown/references/recipe-svelte.md +54 -0
- package/skills/tsdown/references/recipe-vue.md +387 -0
- package/skills/tsdown/references/recipe-wasm.md +125 -0
- package/skills/tsdown/references/reference-cli.md +472 -0
- package/skills/turborepo/LICENSE.md +7 -0
- package/skills/turborepo/SKILL.md +951 -0
- package/skills/turborepo/SYNC.md +5 -0
- package/skills/turborepo/command/turborepo.md +70 -0
- package/skills/turborepo/references/best-practices/RULE.md +241 -0
- package/skills/turborepo/references/best-practices/dependencies.md +246 -0
- package/skills/turborepo/references/best-practices/packages.md +335 -0
- package/skills/turborepo/references/best-practices/structure.md +297 -0
- package/skills/turborepo/references/boundaries/RULE.md +126 -0
- package/skills/turborepo/references/caching/RULE.md +153 -0
- package/skills/turborepo/references/caching/gotchas.md +190 -0
- package/skills/turborepo/references/caching/remote-cache.md +127 -0
- package/skills/turborepo/references/ci/RULE.md +79 -0
- package/skills/turborepo/references/ci/github-actions.md +162 -0
- package/skills/turborepo/references/ci/patterns.md +145 -0
- package/skills/turborepo/references/ci/vercel.md +103 -0
- package/skills/turborepo/references/cli/RULE.md +100 -0
- package/skills/turborepo/references/cli/commands.md +297 -0
- package/skills/turborepo/references/configuration/RULE.md +235 -0
- package/skills/turborepo/references/configuration/global-options.md +239 -0
- package/skills/turborepo/references/configuration/gotchas.md +368 -0
- package/skills/turborepo/references/configuration/tasks.md +325 -0
- package/skills/turborepo/references/environment/RULE.md +123 -0
- package/skills/turborepo/references/environment/gotchas.md +175 -0
- package/skills/turborepo/references/environment/modes.md +101 -0
- package/skills/turborepo/references/filtering/RULE.md +148 -0
- package/skills/turborepo/references/filtering/patterns.md +152 -0
- package/skills/turborepo/references/watch/RULE.md +99 -0
- package/skills/vite/GENERATION.md +5 -0
- package/skills/vite/LICENSE.md +21 -0
- package/skills/vite/SKILL.md +72 -0
- package/skills/vite/SYNC.md +5 -0
- package/skills/vite/references/build-and-ssr.md +164 -0
- package/skills/vite/references/core-config.md +162 -0
- package/skills/vite/references/core-features.md +205 -0
- package/skills/vite/references/core-plugin-api.md +235 -0
- package/skills/vite/references/environment-api.md +108 -0
- package/skills/vite/references/rolldown-migration.md +157 -0
- package/skills/vitepress/GENERATION.md +5 -0
- package/skills/vitepress/LICENSE.md +21 -0
- package/skills/vitepress/SKILL.md +65 -0
- package/skills/vitepress/SYNC.md +5 -0
- package/skills/vitepress/references/advanced-i18n.md +299 -0
- package/skills/vitepress/references/advanced-ssr.md +228 -0
- package/skills/vitepress/references/core-cli.md +119 -0
- package/skills/vitepress/references/core-config.md +189 -0
- package/skills/vitepress/references/core-markdown.md +277 -0
- package/skills/vitepress/references/core-routing.md +169 -0
- package/skills/vitepress/references/features-code-blocks.md +243 -0
- package/skills/vitepress/references/features-data-loading.md +220 -0
- package/skills/vitepress/references/features-dynamic-routes.md +235 -0
- package/skills/vitepress/references/features-vue.md +224 -0
- package/skills/vitepress/references/recipes-deploy.md +240 -0
- package/skills/vitepress/references/theme-config.md +315 -0
- package/skills/vitepress/references/theme-custom.md +269 -0
- package/skills/vitepress/references/theme-customization.md +290 -0
- package/skills/vitest/GENERATION.md +5 -0
- package/skills/vitest/LICENSE.md +21 -0
- package/skills/vitest/SKILL.md +52 -0
- package/skills/vitest/SYNC.md +5 -0
- package/skills/vitest/references/advanced-environments.md +264 -0
- package/skills/vitest/references/advanced-projects.md +300 -0
- package/skills/vitest/references/advanced-type-testing.md +237 -0
- package/skills/vitest/references/advanced-vi.md +249 -0
- package/skills/vitest/references/core-cli.md +166 -0
- package/skills/vitest/references/core-config.md +174 -0
- package/skills/vitest/references/core-describe.md +193 -0
- package/skills/vitest/references/core-expect.md +219 -0
- package/skills/vitest/references/core-hooks.md +244 -0
- package/skills/vitest/references/core-test-api.md +233 -0
- package/skills/vitest/references/features-concurrency.md +250 -0
- package/skills/vitest/references/features-context.md +238 -0
- package/skills/vitest/references/features-coverage.md +207 -0
- package/skills/vitest/references/features-filtering.md +211 -0
- package/skills/vitest/references/features-mocking.md +265 -0
- package/skills/vitest/references/features-snapshots.md +207 -0
- package/skills/vue/GENERATION.md +5 -0
- package/skills/vue/LICENSE.md +21 -0
- package/skills/vue/SKILL.md +84 -0
- package/skills/vue/SYNC.md +5 -0
- package/skills/vue/references/advanced-patterns.md +314 -0
- package/skills/vue/references/core-new-apis.md +264 -0
- package/skills/vue/references/script-setup-macros.md +204 -0
- package/skills/vue-best-practices/LICENSE.md +21 -0
- package/skills/vue-best-practices/SKILL.md +154 -0
- package/skills/vue-best-practices/SYNC.md +5 -0
- package/skills/vue-best-practices/references/animation-class-based-technique.md +254 -0
- package/skills/vue-best-practices/references/animation-state-driven-technique.md +291 -0
- package/skills/vue-best-practices/references/component-async.md +97 -0
- package/skills/vue-best-practices/references/component-data-flow.md +307 -0
- package/skills/vue-best-practices/references/component-fallthrough-attrs.md +174 -0
- package/skills/vue-best-practices/references/component-keep-alive.md +137 -0
- package/skills/vue-best-practices/references/component-slots.md +216 -0
- package/skills/vue-best-practices/references/component-suspense.md +228 -0
- package/skills/vue-best-practices/references/component-teleport.md +108 -0
- package/skills/vue-best-practices/references/component-transition-group.md +128 -0
- package/skills/vue-best-practices/references/component-transition.md +125 -0
- package/skills/vue-best-practices/references/composables.md +290 -0
- package/skills/vue-best-practices/references/directives.md +162 -0
- package/skills/vue-best-practices/references/perf-avoid-component-abstraction-in-lists.md +159 -0
- package/skills/vue-best-practices/references/perf-v-once-v-memo-directives.md +182 -0
- package/skills/vue-best-practices/references/perf-virtualize-large-lists.md +187 -0
- package/skills/vue-best-practices/references/plugins.md +166 -0
- package/skills/vue-best-practices/references/reactivity.md +344 -0
- package/skills/vue-best-practices/references/render-functions.md +201 -0
- package/skills/vue-best-practices/references/sfc.md +310 -0
- package/skills/vue-best-practices/references/state-management.md +135 -0
- package/skills/vue-best-practices/references/updated-hook-performance.md +187 -0
- package/skills/vue-router-best-practices/LICENSE.md +21 -0
- package/skills/vue-router-best-practices/SKILL.md +23 -0
- package/skills/vue-router-best-practices/SYNC.md +5 -0
- package/skills/vue-router-best-practices/reference/router-beforeenter-no-param-trigger.md +167 -0
- package/skills/vue-router-best-practices/reference/router-beforerouteenter-no-this.md +176 -0
- package/skills/vue-router-best-practices/reference/router-guard-async-await-pattern.md +227 -0
- package/skills/vue-router-best-practices/reference/router-navigation-guard-infinite-loop.md +187 -0
- package/skills/vue-router-best-practices/reference/router-navigation-guard-next-deprecated.md +150 -0
- package/skills/vue-router-best-practices/reference/router-param-change-no-lifecycle.md +181 -0
- package/skills/vue-router-best-practices/reference/router-simple-routing-cleanup.md +209 -0
- package/skills/vue-router-best-practices/reference/router-use-vue-router-for-production.md +183 -0
- package/skills/vue-testing-best-practices/LICENSE.md +21 -0
- package/skills/vue-testing-best-practices/SKILL.md +29 -0
- package/skills/vue-testing-best-practices/SYNC.md +5 -0
- package/skills/vue-testing-best-practices/reference/async-component-testing.md +163 -0
- package/skills/vue-testing-best-practices/reference/teleport-testing-complexity.md +158 -0
- package/skills/vue-testing-best-practices/reference/testing-async-await-flushpromises.md +175 -0
- package/skills/vue-testing-best-practices/reference/testing-browser-vs-node-runners.md +208 -0
- package/skills/vue-testing-best-practices/reference/testing-component-blackbox-approach.md +144 -0
- package/skills/vue-testing-best-practices/reference/testing-composables-helper-wrapper.md +238 -0
- package/skills/vue-testing-best-practices/reference/testing-e2e-playwright-recommended.md +242 -0
- package/skills/vue-testing-best-practices/reference/testing-no-snapshot-only.md +197 -0
- package/skills/vue-testing-best-practices/reference/testing-pinia-store-setup.md +228 -0
- package/skills/vue-testing-best-practices/reference/testing-suspense-async-components.md +229 -0
- package/skills/vue-testing-best-practices/reference/testing-vitest-recommended-for-vue.md +204 -0
- package/skills/vueuse-functions/LICENSE.md +21 -0
- package/skills/vueuse-functions/SKILL.md +419 -0
- package/skills/vueuse-functions/SYNC.md +5 -0
- package/skills/vueuse-functions/references/computedAsync.md +195 -0
- package/skills/vueuse-functions/references/computedEager.md +62 -0
- package/skills/vueuse-functions/references/computedInject.md +137 -0
- package/skills/vueuse-functions/references/computedWithControl.md +98 -0
- package/skills/vueuse-functions/references/createEventHook.md +86 -0
- package/skills/vueuse-functions/references/createGenericProjection.md +25 -0
- package/skills/vueuse-functions/references/createGlobalState.md +95 -0
- package/skills/vueuse-functions/references/createInjectionState.md +226 -0
- package/skills/vueuse-functions/references/createProjection.md +31 -0
- package/skills/vueuse-functions/references/createRef.md +54 -0
- package/skills/vueuse-functions/references/createReusableTemplate.md +361 -0
- package/skills/vueuse-functions/references/createSharedComposable.md +42 -0
- package/skills/vueuse-functions/references/createTemplatePromise.md +306 -0
- package/skills/vueuse-functions/references/createUnrefFn.md +51 -0
- package/skills/vueuse-functions/references/extendRef.md +76 -0
- package/skills/vueuse-functions/references/from.md +80 -0
- package/skills/vueuse-functions/references/get.md +30 -0
- package/skills/vueuse-functions/references/injectLocal.md +35 -0
- package/skills/vueuse-functions/references/isDefined.md +31 -0
- package/skills/vueuse-functions/references/logicAnd.md +40 -0
- package/skills/vueuse-functions/references/logicNot.md +36 -0
- package/skills/vueuse-functions/references/logicOr.md +40 -0
- package/skills/vueuse-functions/references/makeDestructurable.md +41 -0
- package/skills/vueuse-functions/references/onClickOutside.md +228 -0
- package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
- package/skills/vueuse-functions/references/onKeyStroke.md +212 -0
- package/skills/vueuse-functions/references/onLongPress.md +235 -0
- package/skills/vueuse-functions/references/onStartTyping.md +53 -0
- package/skills/vueuse-functions/references/provideLocal.md +37 -0
- package/skills/vueuse-functions/references/reactify.md +144 -0
- package/skills/vueuse-functions/references/reactifyObject.md +62 -0
- package/skills/vueuse-functions/references/reactiveComputed.md +34 -0
- package/skills/vueuse-functions/references/reactiveOmit.md +86 -0
- package/skills/vueuse-functions/references/reactivePick.md +106 -0
- package/skills/vueuse-functions/references/refAutoReset.md +46 -0
- package/skills/vueuse-functions/references/refDebounced.md +81 -0
- package/skills/vueuse-functions/references/refDefault.md +36 -0
- package/skills/vueuse-functions/references/refManualReset.md +48 -0
- package/skills/vueuse-functions/references/refThrottled.md +99 -0
- package/skills/vueuse-functions/references/refWithControl.md +146 -0
- package/skills/vueuse-functions/references/set.md +30 -0
- package/skills/vueuse-functions/references/syncRef.md +195 -0
- package/skills/vueuse-functions/references/syncRefs.md +128 -0
- package/skills/vueuse-functions/references/templateRef.md +86 -0
- package/skills/vueuse-functions/references/toObserver.md +38 -0
- package/skills/vueuse-functions/references/toReactive.md +41 -0
- package/skills/vueuse-functions/references/toRef.md +74 -0
- package/skills/vueuse-functions/references/toRefs.md +78 -0
- package/skills/vueuse-functions/references/tryOnBeforeMount.md +34 -0
- package/skills/vueuse-functions/references/tryOnBeforeUnmount.md +32 -0
- package/skills/vueuse-functions/references/tryOnMounted.md +34 -0
- package/skills/vueuse-functions/references/tryOnScopeDispose.md +31 -0
- package/skills/vueuse-functions/references/tryOnUnmounted.md +32 -0
- package/skills/vueuse-functions/references/unrefElement.md +54 -0
- package/skills/vueuse-functions/references/until.md +161 -0
- package/skills/vueuse-functions/references/useAbs.md +31 -0
- package/skills/vueuse-functions/references/useActiveElement.md +86 -0
- package/skills/vueuse-functions/references/useAnimate.md +180 -0
- package/skills/vueuse-functions/references/useArrayDifference.md +84 -0
- package/skills/vueuse-functions/references/useArrayEvery.md +59 -0
- package/skills/vueuse-functions/references/useArrayFilter.md +63 -0
- package/skills/vueuse-functions/references/useArrayFind.md +50 -0
- package/skills/vueuse-functions/references/useArrayFindIndex.md +59 -0
- package/skills/vueuse-functions/references/useArrayFindLast.md +52 -0
- package/skills/vueuse-functions/references/useArrayIncludes.md +63 -0
- package/skills/vueuse-functions/references/useArrayJoin.md +74 -0
- package/skills/vueuse-functions/references/useArrayMap.md +59 -0
- package/skills/vueuse-functions/references/useArrayReduce.md +81 -0
- package/skills/vueuse-functions/references/useArraySome.md +59 -0
- package/skills/vueuse-functions/references/useArrayUnique.md +76 -0
- package/skills/vueuse-functions/references/useAsyncQueue.md +136 -0
- package/skills/vueuse-functions/references/useAsyncState.md +185 -0
- package/skills/vueuse-functions/references/useAsyncValidator.md +70 -0
- package/skills/vueuse-functions/references/useAuth.md +123 -0
- package/skills/vueuse-functions/references/useAverage.md +36 -0
- package/skills/vueuse-functions/references/useAxios.md +325 -0
- package/skills/vueuse-functions/references/useBase64.md +136 -0
- package/skills/vueuse-functions/references/useBattery.md +80 -0
- package/skills/vueuse-functions/references/useBluetooth.md +174 -0
- package/skills/vueuse-functions/references/useBreakpoints.md +176 -0
- package/skills/vueuse-functions/references/useBroadcastChannel.md +73 -0
- package/skills/vueuse-functions/references/useBrowserLocation.md +56 -0
- package/skills/vueuse-functions/references/useCached.md +52 -0
- package/skills/vueuse-functions/references/useCeil.md +31 -0
- package/skills/vueuse-functions/references/useChangeCase.md +79 -0
- package/skills/vueuse-functions/references/useClamp.md +85 -0
- package/skills/vueuse-functions/references/useClipboard.md +122 -0
- package/skills/vueuse-functions/references/useClipboardItems.md +93 -0
- package/skills/vueuse-functions/references/useCloned.md +91 -0
- package/skills/vueuse-functions/references/useColorMode.md +172 -0
- package/skills/vueuse-functions/references/useConfirmDialog.md +159 -0
- package/skills/vueuse-functions/references/useCookies.md +162 -0
- package/skills/vueuse-functions/references/useCountdown.md +105 -0
- package/skills/vueuse-functions/references/useCounter.md +86 -0
- package/skills/vueuse-functions/references/useCssSupports.md +33 -0
- package/skills/vueuse-functions/references/useCssVar.md +50 -0
- package/skills/vueuse-functions/references/useCurrentElement.md +61 -0
- package/skills/vueuse-functions/references/useCycleList.md +75 -0
- package/skills/vueuse-functions/references/useDark.md +142 -0
- package/skills/vueuse-functions/references/useDateFormat.md +145 -0
- package/skills/vueuse-functions/references/useDebounceFn.md +100 -0
- package/skills/vueuse-functions/references/useDebouncedRefHistory.md +40 -0
- package/skills/vueuse-functions/references/useDeviceMotion.md +80 -0
- package/skills/vueuse-functions/references/useDeviceOrientation.md +64 -0
- package/skills/vueuse-functions/references/useDevicePixelRatio.md +47 -0
- package/skills/vueuse-functions/references/useDevicesList.md +89 -0
- package/skills/vueuse-functions/references/useDisplayMedia.md +67 -0
- package/skills/vueuse-functions/references/useDocumentVisibility.md +44 -0
- package/skills/vueuse-functions/references/useDraggable.md +289 -0
- package/skills/vueuse-functions/references/useDrauu.md +65 -0
- package/skills/vueuse-functions/references/useDropZone.md +83 -0
- package/skills/vueuse-functions/references/useElementBounding.md +131 -0
- package/skills/vueuse-functions/references/useElementByPoint.md +46 -0
- package/skills/vueuse-functions/references/useElementHover.md +79 -0
- package/skills/vueuse-functions/references/useElementSize.md +79 -0
- package/skills/vueuse-functions/references/useElementVisibility.md +163 -0
- package/skills/vueuse-functions/references/useEventBus.md +101 -0
- package/skills/vueuse-functions/references/useEventListener.md +226 -0
- package/skills/vueuse-functions/references/useEventSource.md +204 -0
- package/skills/vueuse-functions/references/useExtractedObservable.md +198 -0
- package/skills/vueuse-functions/references/useEyeDropper.md +72 -0
- package/skills/vueuse-functions/references/useFavicon.md +69 -0
- package/skills/vueuse-functions/references/useFetch.md +546 -0
- package/skills/vueuse-functions/references/useFileDialog.md +91 -0
- package/skills/vueuse-functions/references/useFileSystemAccess.md +161 -0
- package/skills/vueuse-functions/references/useFirestore.md +129 -0
- package/skills/vueuse-functions/references/useFloor.md +31 -0
- package/skills/vueuse-functions/references/useFocus.md +99 -0
- package/skills/vueuse-functions/references/useFocusTrap.md +245 -0
- package/skills/vueuse-functions/references/useFocusWithin.md +57 -0
- package/skills/vueuse-functions/references/useFps.md +28 -0
- package/skills/vueuse-functions/references/useFullscreen.md +74 -0
- package/skills/vueuse-functions/references/useFuse.md +75 -0
- package/skills/vueuse-functions/references/useGamepad.md +176 -0
- package/skills/vueuse-functions/references/useGeolocation.md +63 -0
- package/skills/vueuse-functions/references/useIDBKeyval.md +93 -0
- package/skills/vueuse-functions/references/useIdle.md +88 -0
- package/skills/vueuse-functions/references/useImage.md +90 -0
- package/skills/vueuse-functions/references/useInfiniteScroll.md +156 -0
- package/skills/vueuse-functions/references/useIntersectionObserver.md +117 -0
- package/skills/vueuse-functions/references/useInterval.md +112 -0
- package/skills/vueuse-functions/references/useIntervalFn.md +50 -0
- package/skills/vueuse-functions/references/useIpcRenderer.md +144 -0
- package/skills/vueuse-functions/references/useIpcRendererInvoke.md +58 -0
- package/skills/vueuse-functions/references/useIpcRendererOn.md +52 -0
- package/skills/vueuse-functions/references/useJwt.md +57 -0
- package/skills/vueuse-functions/references/useKeyModifier.md +87 -0
- package/skills/vueuse-functions/references/useLastChanged.md +63 -0
- package/skills/vueuse-functions/references/useLocalStorage.md +41 -0
- package/skills/vueuse-functions/references/useMagicKeys.md +245 -0
- package/skills/vueuse-functions/references/useManualRefHistory.md +204 -0
- package/skills/vueuse-functions/references/useMath.md +47 -0
- package/skills/vueuse-functions/references/useMax.md +36 -0
- package/skills/vueuse-functions/references/useMediaControls.md +201 -0
- package/skills/vueuse-functions/references/useMediaQuery.md +53 -0
- package/skills/vueuse-functions/references/useMemoize.md +175 -0
- package/skills/vueuse-functions/references/useMemory.md +70 -0
- package/skills/vueuse-functions/references/useMin.md +36 -0
- package/skills/vueuse-functions/references/useMounted.md +38 -0
- package/skills/vueuse-functions/references/useMouse.md +113 -0
- package/skills/vueuse-functions/references/useMouseInElement.md +132 -0
- package/skills/vueuse-functions/references/useMousePressed.md +116 -0
- package/skills/vueuse-functions/references/useMutationObserver.md +60 -0
- package/skills/vueuse-functions/references/useNProgress.md +78 -0
- package/skills/vueuse-functions/references/useNavigatorLanguage.md +57 -0
- package/skills/vueuse-functions/references/useNetwork.md +106 -0
- package/skills/vueuse-functions/references/useNow.md +83 -0
- package/skills/vueuse-functions/references/useObjectUrl.md +55 -0
- package/skills/vueuse-functions/references/useObservable.md +91 -0
- package/skills/vueuse-functions/references/useOffsetPagination.md +199 -0
- package/skills/vueuse-functions/references/useOnline.md +41 -0
- package/skills/vueuse-functions/references/usePageLeave.md +43 -0
- package/skills/vueuse-functions/references/useParallax.md +58 -0
- package/skills/vueuse-functions/references/useParentElement.md +54 -0
- package/skills/vueuse-functions/references/usePerformanceObserver.md +48 -0
- package/skills/vueuse-functions/references/usePermission.md +78 -0
- package/skills/vueuse-functions/references/usePointer.md +91 -0
- package/skills/vueuse-functions/references/usePointerLock.md +59 -0
- package/skills/vueuse-functions/references/usePointerSwipe.md +80 -0
- package/skills/vueuse-functions/references/usePrecision.md +49 -0
- package/skills/vueuse-functions/references/usePreferredColorScheme.md +42 -0
- package/skills/vueuse-functions/references/usePreferredContrast.md +42 -0
- package/skills/vueuse-functions/references/usePreferredDark.md +41 -0
- package/skills/vueuse-functions/references/usePreferredLanguages.md +41 -0
- package/skills/vueuse-functions/references/usePreferredReducedMotion.md +42 -0
- package/skills/vueuse-functions/references/usePreferredReducedTransparency.md +42 -0
- package/skills/vueuse-functions/references/usePrevious.md +40 -0
- package/skills/vueuse-functions/references/useProjection.md +38 -0
- package/skills/vueuse-functions/references/useQRCode.md +53 -0
- package/skills/vueuse-functions/references/useRTDB.md +83 -0
- package/skills/vueuse-functions/references/useRafFn.md +68 -0
- package/skills/vueuse-functions/references/useRefHistory.md +285 -0
- package/skills/vueuse-functions/references/useResizeObserver.md +108 -0
- package/skills/vueuse-functions/references/useRound.md +31 -0
- package/skills/vueuse-functions/references/useRouteHash.md +27 -0
- package/skills/vueuse-functions/references/useRouteParams.md +38 -0
- package/skills/vueuse-functions/references/useRouteQuery.md +79 -0
- package/skills/vueuse-functions/references/useSSRWidth.md +47 -0
- package/skills/vueuse-functions/references/useScreenOrientation.md +98 -0
- package/skills/vueuse-functions/references/useScreenSafeArea.md +60 -0
- package/skills/vueuse-functions/references/useScriptTag.md +116 -0
- package/skills/vueuse-functions/references/useScroll.md +238 -0
- package/skills/vueuse-functions/references/useScrollLock.md +66 -0
- package/skills/vueuse-functions/references/useSessionStorage.md +41 -0
- package/skills/vueuse-functions/references/useShare.md +67 -0
- package/skills/vueuse-functions/references/useSortable.md +276 -0
- package/skills/vueuse-functions/references/useSorted.md +90 -0
- package/skills/vueuse-functions/references/useSpeechRecognition.md +90 -0
- package/skills/vueuse-functions/references/useSpeechSynthesis.md +101 -0
- package/skills/vueuse-functions/references/useStepper.md +137 -0
- package/skills/vueuse-functions/references/useStorage.md +278 -0
- package/skills/vueuse-functions/references/useStorageAsync.md +136 -0
- package/skills/vueuse-functions/references/useStyleTag.md +131 -0
- package/skills/vueuse-functions/references/useSubject.md +77 -0
- package/skills/vueuse-functions/references/useSubscription.md +33 -0
- package/skills/vueuse-functions/references/useSum.md +36 -0
- package/skills/vueuse-functions/references/useSupported.md +29 -0
- package/skills/vueuse-functions/references/useSwipe.md +75 -0
- package/skills/vueuse-functions/references/useTemplateRefsList.md +37 -0
- package/skills/vueuse-functions/references/useTextDirection.md +75 -0
- package/skills/vueuse-functions/references/useTextSelection.md +43 -0
- package/skills/vueuse-functions/references/useTextareaAutosize.md +94 -0
- package/skills/vueuse-functions/references/useThrottleFn.md +57 -0
- package/skills/vueuse-functions/references/useThrottledRefHistory.md +47 -0
- package/skills/vueuse-functions/references/useTimeAgo.md +154 -0
- package/skills/vueuse-functions/references/useTimeAgoIntl.md +117 -0
- package/skills/vueuse-functions/references/useTimeout.md +113 -0
- package/skills/vueuse-functions/references/useTimeoutFn.md +51 -0
- package/skills/vueuse-functions/references/useTimeoutPoll.md +47 -0
- package/skills/vueuse-functions/references/useTimestamp.md +93 -0
- package/skills/vueuse-functions/references/useTitle.md +115 -0
- package/skills/vueuse-functions/references/useToNumber.md +54 -0
- package/skills/vueuse-functions/references/useToString.md +34 -0
- package/skills/vueuse-functions/references/useToggle.md +103 -0
- package/skills/vueuse-functions/references/useTransition.md +265 -0
- package/skills/vueuse-functions/references/useTrunc.md +33 -0
- package/skills/vueuse-functions/references/useUrlSearchParams.md +121 -0
- package/skills/vueuse-functions/references/useUserMedia.md +96 -0
- package/skills/vueuse-functions/references/useVModel.md +182 -0
- package/skills/vueuse-functions/references/useVModels.md +67 -0
- package/skills/vueuse-functions/references/useVibrate.md +86 -0
- package/skills/vueuse-functions/references/useVirtualList.md +182 -0
- package/skills/vueuse-functions/references/useWakeLock.md +51 -0
- package/skills/vueuse-functions/references/useWebNotification.md +175 -0
- package/skills/vueuse-functions/references/useWebSocket.md +299 -0
- package/skills/vueuse-functions/references/useWebWorker.md +60 -0
- package/skills/vueuse-functions/references/useWebWorkerFn.md +102 -0
- package/skills/vueuse-functions/references/useWindowFocus.md +46 -0
- package/skills/vueuse-functions/references/useWindowScroll.md +46 -0
- package/skills/vueuse-functions/references/useWindowSize.md +78 -0
- package/skills/vueuse-functions/references/useZoomFactor.md +53 -0
- package/skills/vueuse-functions/references/useZoomLevel.md +53 -0
- package/skills/vueuse-functions/references/watchArray.md +53 -0
- package/skills/vueuse-functions/references/watchAtMost.md +63 -0
- package/skills/vueuse-functions/references/watchDebounced.md +101 -0
- package/skills/vueuse-functions/references/watchDeep.md +54 -0
- package/skills/vueuse-functions/references/watchExtractedObservable.md +192 -0
- package/skills/vueuse-functions/references/watchIgnorable.md +120 -0
- package/skills/vueuse-functions/references/watchImmediate.md +44 -0
- package/skills/vueuse-functions/references/watchOnce.md +41 -0
- package/skills/vueuse-functions/references/watchPausable.md +86 -0
- package/skills/vueuse-functions/references/watchThrottled.md +108 -0
- package/skills/vueuse-functions/references/watchTriggerable.md +98 -0
- package/skills/vueuse-functions/references/watchWithFilter.md +54 -0
- package/skills/vueuse-functions/references/whenever.md +108 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/web-design-guidelines/SYNC.md +5 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
# Task Configuration Reference
|
|
2
|
+
|
|
3
|
+
Full docs: https://turborepo.dev/docs/reference/configuration#tasks
|
|
4
|
+
|
|
5
|
+
## dependsOn
|
|
6
|
+
|
|
7
|
+
Controls task execution order.
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"tasks": {
|
|
12
|
+
"build": {
|
|
13
|
+
"dependsOn": [
|
|
14
|
+
"^build", // Dependencies' build tasks first
|
|
15
|
+
"codegen", // Same package's codegen task first
|
|
16
|
+
"shared#build" // Specific package's build task
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
| Syntax | Meaning |
|
|
24
|
+
| ---------- | ------------------------------------ |
|
|
25
|
+
| `^task` | Run `task` in all dependencies first |
|
|
26
|
+
| `task` | Run `task` in same package first |
|
|
27
|
+
| `pkg#task` | Run specific package's task first |
|
|
28
|
+
|
|
29
|
+
The `^` prefix is crucial - without it, you're referencing the same package.
|
|
30
|
+
|
|
31
|
+
### Transit Nodes for Parallel Tasks
|
|
32
|
+
|
|
33
|
+
For tasks like `lint` and `check-types` that can run in parallel but need dependency-aware caching:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"tasks": {
|
|
38
|
+
"transit": { "dependsOn": ["^transit"] },
|
|
39
|
+
"lint": { "dependsOn": ["transit"] },
|
|
40
|
+
"check-types": { "dependsOn": ["transit"] }
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**DO NOT use `dependsOn: ["^lint"]`** - this forces sequential execution.
|
|
46
|
+
**DO NOT use `dependsOn: []`** - this breaks cache invalidation.
|
|
47
|
+
|
|
48
|
+
The `transit` task creates dependency relationships without running anything (no matching script), so tasks run in parallel with correct caching.
|
|
49
|
+
|
|
50
|
+
## outputs
|
|
51
|
+
|
|
52
|
+
Glob patterns for files to cache. **If omitted, nothing is cached.**
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"tasks": {
|
|
57
|
+
"build": {
|
|
58
|
+
"outputs": ["dist/**", "build/**"]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Framework examples:**
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
// Next.js
|
|
68
|
+
"outputs": [".next/**", "!.next/cache/**"]
|
|
69
|
+
|
|
70
|
+
// Vite
|
|
71
|
+
"outputs": ["dist/**"]
|
|
72
|
+
|
|
73
|
+
// TypeScript (tsc)
|
|
74
|
+
"outputs": ["dist/**", "*.tsbuildinfo"]
|
|
75
|
+
|
|
76
|
+
// No file outputs (lint, typecheck)
|
|
77
|
+
"outputs": []
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Use `!` prefix to exclude patterns from caching.
|
|
81
|
+
|
|
82
|
+
## inputs
|
|
83
|
+
|
|
84
|
+
Files considered when calculating task hash. Defaults to all tracked files in package.
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"tasks": {
|
|
89
|
+
"test": {
|
|
90
|
+
"inputs": ["src/**", "tests/**", "vitest.config.ts"]
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Special values:**
|
|
97
|
+
|
|
98
|
+
| Value | Meaning |
|
|
99
|
+
| --------------------- | --------------------------------------- |
|
|
100
|
+
| `$TURBO_DEFAULT$` | Include default inputs, then add/remove |
|
|
101
|
+
| `$TURBO_ROOT$/<path>` | Reference files from repo root |
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"tasks": {
|
|
106
|
+
"build": {
|
|
107
|
+
"inputs": [
|
|
108
|
+
"$TURBO_DEFAULT$",
|
|
109
|
+
"!README.md",
|
|
110
|
+
"$TURBO_ROOT$/tsconfig.base.json"
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Interaction with `global.inputs`
|
|
118
|
+
|
|
119
|
+
When `futureFlags.globalConfiguration` is enabled, files listed in `global.inputs` are prepended to every task's `inputs`. The combined list is then used to compute the task hash.
|
|
120
|
+
|
|
121
|
+
This is different from `globalDependencies`, where files were hashed into the **global** hash and could not be influenced by task-level `inputs`.
|
|
122
|
+
|
|
123
|
+
**With `globalDependencies` (old behavior):**
|
|
124
|
+
|
|
125
|
+
- `globalDependencies` files contribute to the global hash
|
|
126
|
+
- Task `inputs` only control which **package** files are hashed
|
|
127
|
+
- There is no way for a task to "opt out" of a `globalDependencies` file
|
|
128
|
+
|
|
129
|
+
**With `global.inputs` (new behavior):**
|
|
130
|
+
|
|
131
|
+
- `global.inputs` files are merged into each task's `inputs` globs
|
|
132
|
+
- Task `inputs` and `global.inputs` are combined, then the full list is hashed into the **task** hash
|
|
133
|
+
- Tasks can exclude specific global files with negation globs
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"futureFlags": { "globalConfiguration": true },
|
|
138
|
+
"global": {
|
|
139
|
+
"inputs": ["tsconfig.json", ".env"]
|
|
140
|
+
},
|
|
141
|
+
"tasks": {
|
|
142
|
+
"build": {},
|
|
143
|
+
"lint": {
|
|
144
|
+
"inputs": ["$TURBO_DEFAULT$", "!$TURBO_ROOT$/.env"]
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
In this example:
|
|
151
|
+
|
|
152
|
+
- `build` hashes all package files + `tsconfig.json` + `.env` (from `global.inputs`)
|
|
153
|
+
- `lint` hashes all package files + `tsconfig.json`, but **excludes** `.env` because of the negation glob
|
|
154
|
+
|
|
155
|
+
Tasks with no explicit `inputs` key still hash all package files (the default behavior) plus the `global.inputs` files.
|
|
156
|
+
|
|
157
|
+
## env
|
|
158
|
+
|
|
159
|
+
Environment variables to include in task hash.
|
|
160
|
+
|
|
161
|
+
```json
|
|
162
|
+
{
|
|
163
|
+
"tasks": {
|
|
164
|
+
"build": {
|
|
165
|
+
"env": [
|
|
166
|
+
"API_URL",
|
|
167
|
+
"NEXT_PUBLIC_*", // Wildcard matching
|
|
168
|
+
"!DEBUG" // Exclude from hash
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Variables listed here affect cache hits - changing the value invalidates cache.
|
|
176
|
+
|
|
177
|
+
## cache
|
|
178
|
+
|
|
179
|
+
Enable/disable caching for a task. Default: `true`.
|
|
180
|
+
|
|
181
|
+
```json
|
|
182
|
+
{
|
|
183
|
+
"tasks": {
|
|
184
|
+
"dev": { "cache": false },
|
|
185
|
+
"deploy": { "cache": false }
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Disable for: dev servers, deploy commands, tasks with side effects.
|
|
191
|
+
|
|
192
|
+
## persistent
|
|
193
|
+
|
|
194
|
+
Mark long-running tasks that don't exit. Default: `false`.
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
{
|
|
198
|
+
"tasks": {
|
|
199
|
+
"dev": {
|
|
200
|
+
"cache": false,
|
|
201
|
+
"persistent": true
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Required for dev servers - without it, dependent tasks wait forever.
|
|
208
|
+
|
|
209
|
+
## interactive
|
|
210
|
+
|
|
211
|
+
Allow task to receive stdin input. Default: `false`.
|
|
212
|
+
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"tasks": {
|
|
216
|
+
"login": {
|
|
217
|
+
"cache": false,
|
|
218
|
+
"interactive": true
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## outputLogs
|
|
225
|
+
|
|
226
|
+
Control when logs are shown. Options: `full`, `hash-only`, `new-only`, `errors-only`, `none`.
|
|
227
|
+
|
|
228
|
+
```json
|
|
229
|
+
{
|
|
230
|
+
"tasks": {
|
|
231
|
+
"build": {
|
|
232
|
+
"outputLogs": "new-only" // Only show logs on cache miss
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## with
|
|
239
|
+
|
|
240
|
+
Run tasks alongside this task. For long-running tasks that need runtime dependencies.
|
|
241
|
+
|
|
242
|
+
```json
|
|
243
|
+
{
|
|
244
|
+
"tasks": {
|
|
245
|
+
"dev": {
|
|
246
|
+
"with": ["api#dev"],
|
|
247
|
+
"persistent": true,
|
|
248
|
+
"cache": false
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Unlike `dependsOn`, `with` runs tasks concurrently (not sequentially). Use for dev servers that need other services running.
|
|
255
|
+
|
|
256
|
+
## interruptible
|
|
257
|
+
|
|
258
|
+
Allow `turbo watch` to restart the task on changes. Default: `false`.
|
|
259
|
+
|
|
260
|
+
```json
|
|
261
|
+
{
|
|
262
|
+
"tasks": {
|
|
263
|
+
"dev": {
|
|
264
|
+
"persistent": true,
|
|
265
|
+
"interruptible": true,
|
|
266
|
+
"cache": false
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Use for dev servers that don't automatically detect dependency changes.
|
|
273
|
+
|
|
274
|
+
## description
|
|
275
|
+
|
|
276
|
+
Human-readable description of the task.
|
|
277
|
+
|
|
278
|
+
```json
|
|
279
|
+
{
|
|
280
|
+
"tasks": {
|
|
281
|
+
"build": {
|
|
282
|
+
"description": "Compiles the application for production deployment"
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
For documentation only - doesn't affect execution or caching.
|
|
289
|
+
|
|
290
|
+
## passThroughEnv
|
|
291
|
+
|
|
292
|
+
Environment variables available at runtime but NOT included in cache hash.
|
|
293
|
+
|
|
294
|
+
```json
|
|
295
|
+
{
|
|
296
|
+
"tasks": {
|
|
297
|
+
"build": {
|
|
298
|
+
"passThroughEnv": ["AWS_SECRET_KEY", "GITHUB_TOKEN"]
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**Warning**: Changes to these vars won't cause cache misses. Use `env` if changes should invalidate cache.
|
|
305
|
+
|
|
306
|
+
## extends (Package Configuration only)
|
|
307
|
+
|
|
308
|
+
Control task inheritance in Package Configurations.
|
|
309
|
+
|
|
310
|
+
```json
|
|
311
|
+
// packages/ui/turbo.json
|
|
312
|
+
{
|
|
313
|
+
"extends": ["//"],
|
|
314
|
+
"tasks": {
|
|
315
|
+
"lint": {
|
|
316
|
+
"extends": false // Exclude from this package
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
| Value | Behavior |
|
|
323
|
+
| ---------------- | -------------------------------------------------------------- |
|
|
324
|
+
| `true` (default) | Inherit from root turbo.json |
|
|
325
|
+
| `false` | Exclude task from package, or define fresh without inheritance |
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Environment Variables in Turborepo
|
|
2
|
+
|
|
3
|
+
Turborepo provides fine-grained control over which environment variables affect task hashing and runtime availability.
|
|
4
|
+
|
|
5
|
+
## Configuration Keys
|
|
6
|
+
|
|
7
|
+
### `env` - Task-Specific Variables
|
|
8
|
+
|
|
9
|
+
Variables that affect a specific task's hash. When these change, only that task rebuilds.
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"tasks": {
|
|
14
|
+
"build": {
|
|
15
|
+
"env": ["DATABASE_URL", "API_KEY"]
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### `globalEnv` - Variables Affecting All Tasks
|
|
22
|
+
|
|
23
|
+
Variables that affect EVERY task's hash. When these change, all tasks rebuild.
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"globalEnv": ["CI", "NODE_ENV"]
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### `passThroughEnv` - Runtime-Only Variables (Not Hashed)
|
|
32
|
+
|
|
33
|
+
Variables available at runtime but NOT included in hash. **Use with caution** - changes won't trigger rebuilds.
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"tasks": {
|
|
38
|
+
"deploy": {
|
|
39
|
+
"passThroughEnv": ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### `globalPassThroughEnv` - Global Runtime Variables
|
|
46
|
+
|
|
47
|
+
Same as `passThroughEnv` but for all tasks.
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"globalPassThroughEnv": ["GITHUB_TOKEN"]
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Wildcards and Negation
|
|
56
|
+
|
|
57
|
+
### Wildcards
|
|
58
|
+
|
|
59
|
+
Match multiple variables with `*`:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"env": ["MY_API_*", "FEATURE_FLAG_*"]
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
This matches `MY_API_URL`, `MY_API_KEY`, `FEATURE_FLAG_DARK_MODE`, etc.
|
|
68
|
+
|
|
69
|
+
### Negation
|
|
70
|
+
|
|
71
|
+
Exclude variables (useful with framework inference):
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"env": ["!NEXT_PUBLIC_ANALYTICS_ID"]
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## With `futureFlags.globalConfiguration`
|
|
80
|
+
|
|
81
|
+
When the `globalConfiguration` future flag is enabled, global environment keys move under the `global` key with cleaner names:
|
|
82
|
+
|
|
83
|
+
| Old (top-level) | New (`global.`) |
|
|
84
|
+
| ---------------------- | ---------------- |
|
|
85
|
+
| `globalEnv` | `env` |
|
|
86
|
+
| `globalPassThroughEnv` | `passThroughEnv` |
|
|
87
|
+
|
|
88
|
+
`global.env` and `global.passThroughEnv` behave identically to their top-level counterparts — they affect the global hash and all tasks, respectively. The rename is purely organizational.
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"futureFlags": { "globalConfiguration": true },
|
|
93
|
+
"global": {
|
|
94
|
+
"env": ["CI", "NODE_ENV"],
|
|
95
|
+
"passThroughEnv": ["GITHUB_TOKEN", "NPM_TOKEN"]
|
|
96
|
+
},
|
|
97
|
+
"tasks": {
|
|
98
|
+
"build": {
|
|
99
|
+
"env": ["DATABASE_URL", "API_*"],
|
|
100
|
+
"passThroughEnv": ["SENTRY_AUTH_TOKEN"]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Complete Example
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"$schema": "https://v2-9-15-canary-4.turborepo.dev/schema.json",
|
|
111
|
+
"globalEnv": ["CI", "NODE_ENV"],
|
|
112
|
+
"globalPassThroughEnv": ["GITHUB_TOKEN", "NPM_TOKEN"],
|
|
113
|
+
"tasks": {
|
|
114
|
+
"build": {
|
|
115
|
+
"env": ["DATABASE_URL", "API_*"],
|
|
116
|
+
"passThroughEnv": ["SENTRY_AUTH_TOKEN"]
|
|
117
|
+
},
|
|
118
|
+
"test": {
|
|
119
|
+
"env": ["TEST_DATABASE_URL"]
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
```
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Environment Variable Gotchas
|
|
2
|
+
|
|
3
|
+
Common mistakes and how to fix them.
|
|
4
|
+
|
|
5
|
+
## .env Files Must Be in `inputs`
|
|
6
|
+
|
|
7
|
+
Turbo does NOT read `.env` files. Your framework (Next.js, Vite, etc.) or `dotenv` loads them. But Turbo needs to know when they change.
|
|
8
|
+
|
|
9
|
+
**Wrong:**
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"tasks": {
|
|
14
|
+
"build": {
|
|
15
|
+
"env": ["DATABASE_URL"]
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Right:**
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"tasks": {
|
|
26
|
+
"build": {
|
|
27
|
+
"env": ["DATABASE_URL"],
|
|
28
|
+
"inputs": ["$TURBO_DEFAULT$", ".env", ".env.local", ".env.production"]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Strict Mode Filters CI Variables
|
|
35
|
+
|
|
36
|
+
In strict mode, CI provider variables (GITHUB_TOKEN, GITLAB_CI, etc.) are filtered unless explicitly listed.
|
|
37
|
+
|
|
38
|
+
**Symptom:** Task fails with "authentication required" or "permission denied" in CI.
|
|
39
|
+
|
|
40
|
+
**Solution:**
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"globalPassThroughEnv": ["GITHUB_TOKEN", "GITLAB_CI", "CI"]
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## passThroughEnv Doesn't Affect Hash
|
|
49
|
+
|
|
50
|
+
Variables in `passThroughEnv` are available at runtime but changes WON'T trigger rebuilds.
|
|
51
|
+
|
|
52
|
+
**Dangerous example:**
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"tasks": {
|
|
57
|
+
"build": {
|
|
58
|
+
"passThroughEnv": ["API_URL"]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
If `API_URL` changes from staging to production, Turbo may serve a cached build pointing to the wrong API.
|
|
65
|
+
|
|
66
|
+
**Use passThroughEnv only for:**
|
|
67
|
+
|
|
68
|
+
- Auth tokens that don't affect output (SENTRY_AUTH_TOKEN)
|
|
69
|
+
- CI metadata (GITHUB_RUN_ID)
|
|
70
|
+
- Variables consumed after build (deploy credentials)
|
|
71
|
+
|
|
72
|
+
## Runtime-Created Variables Are Invisible
|
|
73
|
+
|
|
74
|
+
Turbo captures env vars at startup. Variables created during execution aren't seen.
|
|
75
|
+
|
|
76
|
+
**Won't work:**
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# In package.json scripts
|
|
80
|
+
"build": "export API_URL=$COMPUTED_VALUE && next build"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Solution:** Set vars before invoking turbo:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
API_URL=$COMPUTED_VALUE turbo run build
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Different .env Files for Different Environments
|
|
90
|
+
|
|
91
|
+
If you use `.env.development` and `.env.production`, both should be in inputs.
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"tasks": {
|
|
96
|
+
"build": {
|
|
97
|
+
"inputs": [
|
|
98
|
+
"$TURBO_DEFAULT$",
|
|
99
|
+
".env",
|
|
100
|
+
".env.local",
|
|
101
|
+
".env.development",
|
|
102
|
+
".env.development.local",
|
|
103
|
+
".env.production",
|
|
104
|
+
".env.production.local"
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Complete Next.js Example
|
|
112
|
+
|
|
113
|
+
```json
|
|
114
|
+
{
|
|
115
|
+
"$schema": "https://v2-9-15-canary-4.turborepo.dev/schema.json",
|
|
116
|
+
"globalEnv": ["CI", "NODE_ENV", "VERCEL"],
|
|
117
|
+
"globalPassThroughEnv": ["GITHUB_TOKEN", "VERCEL_URL"],
|
|
118
|
+
"tasks": {
|
|
119
|
+
"build": {
|
|
120
|
+
"dependsOn": ["^build"],
|
|
121
|
+
"env": ["DATABASE_URL", "NEXT_PUBLIC_*", "!NEXT_PUBLIC_ANALYTICS_ID"],
|
|
122
|
+
"passThroughEnv": ["SENTRY_AUTH_TOKEN"],
|
|
123
|
+
"inputs": [
|
|
124
|
+
"$TURBO_DEFAULT$",
|
|
125
|
+
".env",
|
|
126
|
+
".env.local",
|
|
127
|
+
".env.production",
|
|
128
|
+
".env.production.local"
|
|
129
|
+
],
|
|
130
|
+
"outputs": [".next/**", "!.next/cache/**"]
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
This config:
|
|
137
|
+
|
|
138
|
+
- Hashes DATABASE*URL and NEXT_PUBLIC*\* vars (except analytics)
|
|
139
|
+
- Passes through SENTRY_AUTH_TOKEN without hashing
|
|
140
|
+
- Includes all .env file variants in the hash
|
|
141
|
+
- Makes CI tokens available globally
|
|
142
|
+
|
|
143
|
+
### With `futureFlags.globalConfiguration`
|
|
144
|
+
|
|
145
|
+
The same config using the `global` key. The `.env` files move to `global.inputs`, which means they get folded into each task's hash individually rather than the global hash. This lets tasks exclude specific `.env` files if needed.
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"$schema": "https://v2-9-15-canary-4.turborepo.dev/schema.json",
|
|
150
|
+
"futureFlags": { "globalConfiguration": true },
|
|
151
|
+
"global": {
|
|
152
|
+
"env": ["CI", "NODE_ENV", "VERCEL"],
|
|
153
|
+
"passThroughEnv": ["GITHUB_TOKEN", "VERCEL_URL"],
|
|
154
|
+
"inputs": [".env", ".env.local", ".env.production", ".env.production.local"]
|
|
155
|
+
},
|
|
156
|
+
"tasks": {
|
|
157
|
+
"build": {
|
|
158
|
+
"dependsOn": ["^build"],
|
|
159
|
+
"env": ["DATABASE_URL", "NEXT_PUBLIC_*", "!NEXT_PUBLIC_ANALYTICS_ID"],
|
|
160
|
+
"passThroughEnv": ["SENTRY_AUTH_TOKEN"],
|
|
161
|
+
"outputs": [".next/**", "!.next/cache/**"]
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
With this approach, a task that doesn't care about `.env.production` can exclude it:
|
|
168
|
+
|
|
169
|
+
```json
|
|
170
|
+
"lint": {
|
|
171
|
+
"inputs": ["$TURBO_DEFAULT$", "!$TURBO_ROOT$/.env.production"]
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
This wouldn't have been possible with `globalDependencies`, where `.env.production` would be baked into the global hash and affect every task unconditionally.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Environment Modes
|
|
2
|
+
|
|
3
|
+
Turborepo supports different modes for handling environment variables during task execution.
|
|
4
|
+
|
|
5
|
+
## Strict Mode (Default)
|
|
6
|
+
|
|
7
|
+
Only explicitly configured variables are available to tasks.
|
|
8
|
+
|
|
9
|
+
**Behavior:**
|
|
10
|
+
|
|
11
|
+
- Tasks only see vars listed in `env`, `globalEnv`, `passThroughEnv`, or `globalPassThroughEnv`
|
|
12
|
+
- Unlisted vars are filtered out
|
|
13
|
+
- Tasks fail if they require unlisted variables
|
|
14
|
+
|
|
15
|
+
**Benefits:**
|
|
16
|
+
|
|
17
|
+
- Guarantees cache correctness
|
|
18
|
+
- Prevents accidental dependencies on system vars
|
|
19
|
+
- Reproducible builds across machines
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Explicit (though it's the default)
|
|
23
|
+
turbo run build --env-mode=strict
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Loose Mode
|
|
27
|
+
|
|
28
|
+
All system environment variables are available to tasks.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
turbo run build --env-mode=loose
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Behavior:**
|
|
35
|
+
|
|
36
|
+
- Every system env var is passed through
|
|
37
|
+
- Only vars in `env`/`globalEnv` affect the hash
|
|
38
|
+
- Other vars are available but NOT hashed
|
|
39
|
+
|
|
40
|
+
**Risks:**
|
|
41
|
+
|
|
42
|
+
- Cache may restore incorrect results if unhashed vars changed
|
|
43
|
+
- "Works on my machine" bugs
|
|
44
|
+
- CI vs local environment mismatches
|
|
45
|
+
|
|
46
|
+
**Use case:** Migrating legacy projects or debugging strict mode issues.
|
|
47
|
+
|
|
48
|
+
## Framework Inference (Automatic)
|
|
49
|
+
|
|
50
|
+
Turborepo automatically detects frameworks and includes their conventional env vars.
|
|
51
|
+
|
|
52
|
+
### Inferred Variables by Framework
|
|
53
|
+
|
|
54
|
+
| Framework | Pattern |
|
|
55
|
+
| ---------------- | ------------------- |
|
|
56
|
+
| Next.js | `NEXT_PUBLIC_*` |
|
|
57
|
+
| Vite | `VITE_*` |
|
|
58
|
+
| Create React App | `REACT_APP_*` |
|
|
59
|
+
| Gatsby | `GATSBY_*` |
|
|
60
|
+
| Nuxt | `NUXT_*`, `NITRO_*` |
|
|
61
|
+
| Expo | `EXPO_PUBLIC_*` |
|
|
62
|
+
| Astro | `PUBLIC_*` |
|
|
63
|
+
| SvelteKit | `PUBLIC_*` |
|
|
64
|
+
| Remix | `REMIX_*` |
|
|
65
|
+
| Redwood | `REDWOOD_ENV_*` |
|
|
66
|
+
| Sanity | `SANITY_STUDIO_*` |
|
|
67
|
+
| Solid | `VITE_*` |
|
|
68
|
+
|
|
69
|
+
### Disabling Framework Inference
|
|
70
|
+
|
|
71
|
+
Globally via CLI:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
turbo run build --framework-inference=false
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Or exclude specific patterns in config:
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"tasks": {
|
|
82
|
+
"build": {
|
|
83
|
+
"env": ["!NEXT_PUBLIC_*"]
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Why Disable?
|
|
90
|
+
|
|
91
|
+
- You want explicit control over all env vars
|
|
92
|
+
- Framework vars shouldn't bust the cache (e.g., analytics IDs)
|
|
93
|
+
- Debugging unexpected cache misses
|
|
94
|
+
|
|
95
|
+
## Checking Environment Mode
|
|
96
|
+
|
|
97
|
+
Use `--dry` to see which vars affect each task:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
turbo run build --dry=json | jq '.tasks[].environmentVariables'
|
|
101
|
+
```
|