devskill 2.0.2
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 +123 -0
- package/README.vn.md +104 -0
- package/SKILL_GUIDE.vn.md +252 -0
- package/bin/devskill.js +11 -0
- package/meta.ts +123 -0
- package/package.json +21 -0
- package/publish.sh +50 -0
- package/scripts/cli.ts +556 -0
- package/skills/builderx_api-contexts/SKILL.md +63 -0
- package/skills/builderx_api-contexts/references/core-multi-outbox.md +57 -0
- package/skills/builderx_api-controllers/SKILL.md +49 -0
- package/skills/builderx_api-controllers/references/core-fallback.md +62 -0
- package/skills/builderx_api-schemas/SKILL.md +76 -0
- package/skills/builderx_api-schemas/references/core-schema.md +78 -0
- package/skills/builderx_spa-api/SKILL.md +67 -0
- package/skills/builderx_spa-api/references/base-api.md +97 -0
- package/skills/builderx_spa-api/references/fetch.md +70 -0
- package/skills/builderx_spa-design/SKILL.md +82 -0
- package/skills/builderx_spa-design/references/core-text-design.md +64 -0
- package/skills/builderx_spa-design/references/features-feedback-actions.md +76 -0
- package/skills/builderx_spa-design/references/features-forms.md +91 -0
- package/skills/builderx_spa-design/references/features-layout-navigation.md +121 -0
- package/skills/builderx_spa-permission/SKILL.md +38 -0
- package/skills/builderx_spa-permission/references/has-permission.md +34 -0
- package/skills/composition-patterns/AGENTS.md +946 -0
- package/skills/composition-patterns/README.md +60 -0
- package/skills/composition-patterns/SKILL.md +89 -0
- package/skills/composition-patterns/SYNC.md +5 -0
- package/skills/composition-patterns/metadata.json +11 -0
- package/skills/composition-patterns/rules/_sections.md +29 -0
- package/skills/composition-patterns/rules/_template.md +24 -0
- package/skills/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/skills/composition-patterns/rules/architecture-compound-components.md +112 -0
- package/skills/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/skills/composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/skills/composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/skills/composition-patterns/rules/state-context-interface.md +191 -0
- package/skills/composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/skills/composition-patterns/rules/state-lift-state.md +125 -0
- package/skills/deploy-to-vercel/Archive.zip +0 -0
- package/skills/deploy-to-vercel/SKILL.md +296 -0
- package/skills/deploy-to-vercel/SYNC.md +5 -0
- package/skills/deploy-to-vercel/resources/deploy-codex.sh +301 -0
- package/skills/deploy-to-vercel/resources/deploy.sh +301 -0
- package/skills/pinia/SKILL.md +105 -0
- package/skills/pinia/references/api-in-composables.md +139 -0
- package/skills/pinia/references/setup-stores.md +105 -0
- package/skills/pinia/references/using-in-components.md +91 -0
- package/skills/pinia-options/SKILL.md +72 -0
- package/skills/pinia-options/references/core-option-stores.md +149 -0
- package/skills/pinia-options/references/using-in-options-api.md +105 -0
- package/skills/react-best-practices/AGENTS.md +3373 -0
- package/skills/react-best-practices/README.md +123 -0
- package/skills/react-best-practices/SKILL.md +143 -0
- package/skills/react-best-practices/SYNC.md +5 -0
- package/skills/react-best-practices/metadata.json +15 -0
- package/skills/react-best-practices/rules/_sections.md +46 -0
- package/skills/react-best-practices/rules/_template.md +28 -0
- package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/react-best-practices/rules/server-hoist-static-io.md +142 -0
- package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/react-native-skills/AGENTS.md +2897 -0
- package/skills/react-native-skills/README.md +165 -0
- package/skills/react-native-skills/SKILL.md +121 -0
- package/skills/react-native-skills/SYNC.md +5 -0
- package/skills/react-native-skills/metadata.json +16 -0
- package/skills/react-native-skills/rules/_sections.md +86 -0
- package/skills/react-native-skills/rules/_template.md +28 -0
- package/skills/react-native-skills/rules/animation-derived-value.md +53 -0
- package/skills/react-native-skills/rules/animation-gesture-detector-press.md +95 -0
- package/skills/react-native-skills/rules/animation-gpu-properties.md +65 -0
- package/skills/react-native-skills/rules/design-system-compound-components.md +66 -0
- package/skills/react-native-skills/rules/fonts-config-plugin.md +71 -0
- package/skills/react-native-skills/rules/imports-design-system-folder.md +68 -0
- package/skills/react-native-skills/rules/js-hoist-intl.md +61 -0
- package/skills/react-native-skills/rules/list-performance-callbacks.md +44 -0
- package/skills/react-native-skills/rules/list-performance-function-references.md +132 -0
- package/skills/react-native-skills/rules/list-performance-images.md +53 -0
- package/skills/react-native-skills/rules/list-performance-inline-objects.md +97 -0
- package/skills/react-native-skills/rules/list-performance-item-expensive.md +94 -0
- package/skills/react-native-skills/rules/list-performance-item-memo.md +82 -0
- package/skills/react-native-skills/rules/list-performance-item-types.md +104 -0
- package/skills/react-native-skills/rules/list-performance-virtualize.md +67 -0
- package/skills/react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
- package/skills/react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
- package/skills/react-native-skills/rules/navigation-native-navigators.md +188 -0
- package/skills/react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
- package/skills/react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
- package/skills/react-native-skills/rules/react-state-dispatcher.md +91 -0
- package/skills/react-native-skills/rules/react-state-fallback.md +56 -0
- package/skills/react-native-skills/rules/react-state-minimize.md +65 -0
- package/skills/react-native-skills/rules/rendering-no-falsy-and.md +74 -0
- package/skills/react-native-skills/rules/rendering-text-in-text-component.md +36 -0
- package/skills/react-native-skills/rules/scroll-position-no-state.md +82 -0
- package/skills/react-native-skills/rules/state-ground-truth.md +80 -0
- package/skills/react-native-skills/rules/ui-expo-image.md +66 -0
- package/skills/react-native-skills/rules/ui-image-gallery.md +104 -0
- package/skills/react-native-skills/rules/ui-measure-views.md +78 -0
- package/skills/react-native-skills/rules/ui-menus.md +174 -0
- package/skills/react-native-skills/rules/ui-native-modals.md +77 -0
- package/skills/react-native-skills/rules/ui-pressable.md +61 -0
- package/skills/react-native-skills/rules/ui-safe-area-scroll.md +65 -0
- package/skills/react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
- package/skills/react-native-skills/rules/ui-styling.md +87 -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-frontmatter-merging.md +49 -0
- package/skills/slidev/references/syntax-importing-slides.md +60 -0
- package/skills/slidev/references/syntax-mdc.md +51 -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 +407 -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 +178 -0
- package/skills/tsdown/references/guide-introduction.md +42 -0
- package/skills/tsdown/references/guide-migrate-from-tsup.md +189 -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 +281 -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 +270 -0
- package/skills/tsdown/references/option-output-format.md +181 -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 +46 -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/vercel-cli-with-tokens/SKILL.md +328 -0
- package/skills/vercel-cli-with-tokens/SYNC.md +5 -0
- package/skills/vue/SKILL.md +90 -0
- package/skills/vue/references/composables.md +54 -0
- package/skills/vue/references/lifecycle.md +31 -0
- package/skills/vue/references/props-emits.md +62 -0
- package/skills/vue/references/provide-inject.md +47 -0
- package/skills/vue/references/state.md +65 -0
- package/skills/vue-antdv-tailwind/SKILL.md +33 -0
- package/skills/vue-antdv-tailwind/references/styling-rules.md +61 -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-jsx-best-practices/LICENSE.md +21 -0
- package/skills/vue-jsx-best-practices/SKILL.md +12 -0
- package/skills/vue-jsx-best-practices/SYNC.md +5 -0
- package/skills/vue-jsx-best-practices/reference/render-function-jsx-vue-vs-react.md +141 -0
- package/skills/vue-options/SKILL.md +98 -0
- package/skills/vue-options/references/lifecycle.md +107 -0
- package/skills/vue-options/references/mixins.md +96 -0
- package/skills/vue-options/references/props-emits.md +106 -0
- package/skills/vue-options/references/provide-inject.md +92 -0
- package/skills/vue-options/references/state.md +115 -0
- package/skills/vue-options-api-best-practices/LICENSE.md +21 -0
- package/skills/vue-options-api-best-practices/SKILL.md +23 -0
- package/skills/vue-options-api-best-practices/SYNC.md +5 -0
- package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-lifecycle-hooks.md +95 -0
- package/skills/vue-options-api-best-practices/reference/no-arrow-functions-in-methods.md +68 -0
- package/skills/vue-options-api-best-practices/reference/stateful-methods-lifecycle.md +61 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-arrow-functions-validators.md +141 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-computed-return-types.md +192 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-proptype-complex-types.md +212 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-provide-inject-limitations.md +135 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-type-event-handlers.md +202 -0
- package/skills/vue-options-api-best-practices/reference/ts-options-api-use-definecomponent.md +172 -0
- package/skills/vue-options-api-best-practices/reference/ts-strict-mode-options-api.md +197 -0
- package/skills/vue-pinia-best-practices/LICENSE.md +21 -0
- package/skills/vue-pinia-best-practices/SKILL.md +21 -0
- package/skills/vue-pinia-best-practices/SYNC.md +5 -0
- package/skills/vue-pinia-best-practices/reference/pinia-no-active-pinia-error.md +248 -0
- package/skills/vue-pinia-best-practices/reference/pinia-setup-store-return-all-state.md +227 -0
- package/skills/vue-pinia-best-practices/reference/pinia-store-destructuring-breaks-reactivity.md +193 -0
- package/skills/vue-pinia-best-practices/reference/state-url-for-ephemeral-filters.md +238 -0
- package/skills/vue-pinia-best-practices/reference/state-use-pinia-for-large-apps.md +262 -0
- package/skills/vue-pinia-best-practices/reference/store-method-binding-parentheses.md +191 -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 +215 -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 +357 -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 +221 -0
- package/skills/vueuse-functions/references/onElementRemoval.md +88 -0
- package/skills/vueuse-functions/references/onKeyStroke.md +211 -0
- package/skills/vueuse-functions/references/onLongPress.md +227 -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 +44 -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 +75 -0
- package/skills/vueuse-functions/references/toRefs.md +81 -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 +85 -0
- package/skills/vueuse-functions/references/useAnimate.md +181 -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 +78 -0
- package/skills/vueuse-functions/references/useBluetooth.md +175 -0
- package/skills/vueuse-functions/references/useBreakpoints.md +172 -0
- package/skills/vueuse-functions/references/useBroadcastChannel.md +74 -0
- package/skills/vueuse-functions/references/useBrowserLocation.md +83 -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 +123 -0
- package/skills/vueuse-functions/references/useClipboardItems.md +94 -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 +35 -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 +144 -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 +86 -0
- package/skills/vueuse-functions/references/useDeviceOrientation.md +62 -0
- package/skills/vueuse-functions/references/useDevicePixelRatio.md +44 -0
- package/skills/vueuse-functions/references/useDevicesList.md +90 -0
- package/skills/vueuse-functions/references/useDisplayMedia.md +71 -0
- package/skills/vueuse-functions/references/useDocumentVisibility.md +45 -0
- package/skills/vueuse-functions/references/useDraggable.md +317 -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 +48 -0
- package/skills/vueuse-functions/references/useElementHover.md +79 -0
- package/skills/vueuse-functions/references/useElementSize.md +78 -0
- package/skills/vueuse-functions/references/useElementVisibility.md +123 -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 +71 -0
- package/skills/vueuse-functions/references/useFavicon.md +67 -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 +162 -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 +75 -0
- package/skills/vueuse-functions/references/useFuse.md +107 -0
- package/skills/vueuse-functions/references/useGamepad.md +222 -0
- package/skills/vueuse-functions/references/useGeolocation.md +85 -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 +86 -0
- package/skills/vueuse-functions/references/useInfiniteScroll.md +157 -0
- package/skills/vueuse-functions/references/useIntersectionObserver.md +118 -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 +571 -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 +71 -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 +123 -0
- package/skills/vueuse-functions/references/useMousePressed.md +112 -0
- package/skills/vueuse-functions/references/useMutationObserver.md +61 -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 +79 -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 +42 -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 +79 -0
- package/skills/vueuse-functions/references/usePointer.md +89 -0
- package/skills/vueuse-functions/references/usePointerLock.md +60 -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 +109 -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 +96 -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 +68 -0
- package/skills/vueuse-functions/references/useSortable.md +235 -0
- package/skills/vueuse-functions/references/useSorted.md +90 -0
- package/skills/vueuse-functions/references/useSpeechRecognition.md +94 -0
- package/skills/vueuse-functions/references/useSpeechSynthesis.md +105 -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 +40 -0
- package/skills/vueuse-functions/references/useTextareaAutosize.md +97 -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 +89 -0
- package/skills/vueuse-functions/references/useTitle.md +113 -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 +1138 -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 +87 -0
- package/skills/vueuse-functions/references/useVirtualList.md +182 -0
- package/skills/vueuse-functions/references/useWakeLock.md +50 -0
- package/skills/vueuse-functions/references/useWebNotification.md +176 -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 +61 -0
- package/skills/vueuse-functions/references/useWindowSize.md +76 -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 +55 -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 +100 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/web-design-guidelines/SYNC.md +5 -0
- package/tsconfig.json +17 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Turborepo Filter Syntax Reference
|
|
2
|
+
|
|
3
|
+
## Running Only Changed Packages: `--affected`
|
|
4
|
+
|
|
5
|
+
**The primary way to run only changed packages is `--affected`:**
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Run build/test/lint only in changed packages and their dependents
|
|
9
|
+
turbo run build test lint --affected
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
This compares your current branch to the default branch (usually `main` or `master`) and runs tasks in:
|
|
13
|
+
|
|
14
|
+
1. Packages with file changes
|
|
15
|
+
2. Packages that depend on changed packages (dependents)
|
|
16
|
+
|
|
17
|
+
### Why Include Dependents?
|
|
18
|
+
|
|
19
|
+
If you change `@repo/ui`, packages that import `@repo/ui` (like `apps/web`) need to re-run their tasks to verify they still work with the changes.
|
|
20
|
+
|
|
21
|
+
### Customizing --affected
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Use a different base branch
|
|
25
|
+
turbo run build --affected --affected-base=origin/develop
|
|
26
|
+
|
|
27
|
+
# Use a different head (current state)
|
|
28
|
+
turbo run build --affected --affected-head=HEAD~5
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Common CI Pattern
|
|
32
|
+
|
|
33
|
+
```yaml
|
|
34
|
+
# .github/workflows/ci.yml
|
|
35
|
+
- run: turbo run build test lint --affected
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
This is the most efficient CI setup - only run tasks for what actually changed.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Manual Git Comparison with --filter
|
|
43
|
+
|
|
44
|
+
For more control, use `--filter` with git comparison syntax:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Changed packages + dependents (same as --affected)
|
|
48
|
+
turbo run build --filter=...[origin/main]
|
|
49
|
+
|
|
50
|
+
# Only changed packages (no dependents)
|
|
51
|
+
turbo run build --filter=[origin/main]
|
|
52
|
+
|
|
53
|
+
# Changed packages + dependencies (packages they import)
|
|
54
|
+
turbo run build --filter=[origin/main]...
|
|
55
|
+
|
|
56
|
+
# Changed since last commit
|
|
57
|
+
turbo run build --filter=...[HEAD^1]
|
|
58
|
+
|
|
59
|
+
# Changed between two commits
|
|
60
|
+
turbo run build --filter=[a1b2c3d...e4f5g6h]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Comparison Syntax
|
|
64
|
+
|
|
65
|
+
| Syntax | Meaning |
|
|
66
|
+
| ------------- | ------------------------------------- |
|
|
67
|
+
| `[ref]` | Packages changed since `ref` |
|
|
68
|
+
| `...[ref]` | Changed packages + their dependents |
|
|
69
|
+
| `[ref]...` | Changed packages + their dependencies |
|
|
70
|
+
| `...[ref]...` | Dependencies, changed, AND dependents |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Other Filter Types
|
|
75
|
+
|
|
76
|
+
Filters select which packages to include in a `turbo run` invocation.
|
|
77
|
+
|
|
78
|
+
### Basic Syntax
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
turbo run build --filter=<package-name>
|
|
82
|
+
turbo run build -F <package-name>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Multiple filters combine as a union (packages matching ANY filter run).
|
|
86
|
+
|
|
87
|
+
### By Package Name
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
--filter=web # exact match
|
|
91
|
+
--filter=@acme/* # scope glob
|
|
92
|
+
--filter=*-app # name glob
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### By Directory
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
--filter=./apps/* # all packages in apps/
|
|
99
|
+
--filter=./packages/ui # specific directory
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### By Dependencies/Dependents
|
|
103
|
+
|
|
104
|
+
| Syntax | Meaning |
|
|
105
|
+
| ----------- | -------------------------------------- |
|
|
106
|
+
| `pkg...` | Package AND all its dependencies |
|
|
107
|
+
| `...pkg` | Package AND all its dependents |
|
|
108
|
+
| `...pkg...` | Dependencies, package, AND dependents |
|
|
109
|
+
| `^pkg...` | Only dependencies (exclude pkg itself) |
|
|
110
|
+
| `...^pkg` | Only dependents (exclude pkg itself) |
|
|
111
|
+
|
|
112
|
+
### Negation
|
|
113
|
+
|
|
114
|
+
Exclude packages with `!`:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
--filter=!web # exclude web
|
|
118
|
+
--filter=./apps/* --filter=!admin # apps except admin
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Task Identifiers
|
|
122
|
+
|
|
123
|
+
Run a specific task in a specific package:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
turbo run web#build # only web's build task
|
|
127
|
+
turbo run web#build api#test # web build + api test
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Combining Filters
|
|
131
|
+
|
|
132
|
+
Multiple `--filter` flags create a union:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
turbo run build --filter=web --filter=api # runs in both
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Quick Reference: Changed Packages
|
|
141
|
+
|
|
142
|
+
| Goal | Command |
|
|
143
|
+
| ---------------------------------- | ----------------------------------------------------------- |
|
|
144
|
+
| Changed + dependents (recommended) | `turbo run build --affected` |
|
|
145
|
+
| Custom base branch | `turbo run build --affected --affected-base=origin/develop` |
|
|
146
|
+
| Only changed (no dependents) | `turbo run build --filter=[origin/main]` |
|
|
147
|
+
| Changed + dependencies | `turbo run build --filter=[origin/main]...` |
|
|
148
|
+
| Since last commit | `turbo run build --filter=...[HEAD^1]` |
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Common Filter Patterns
|
|
2
|
+
|
|
3
|
+
Practical examples for typical monorepo scenarios.
|
|
4
|
+
|
|
5
|
+
## Single Package
|
|
6
|
+
|
|
7
|
+
Run task in one package:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
turbo run build --filter=web
|
|
11
|
+
turbo run test --filter=@acme/api
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Package with Dependencies
|
|
15
|
+
|
|
16
|
+
Build a package and everything it depends on:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
turbo run build --filter=web...
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Useful for: ensuring all dependencies are built before the target.
|
|
23
|
+
|
|
24
|
+
## Package Dependents
|
|
25
|
+
|
|
26
|
+
Run in all packages that depend on a library:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
turbo run test --filter=...ui
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Useful for: testing consumers after changing a shared package.
|
|
33
|
+
|
|
34
|
+
## Dependents Only (Exclude Target)
|
|
35
|
+
|
|
36
|
+
Test packages that depend on ui, but not ui itself:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
turbo run test --filter=...^ui
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Changed Packages
|
|
43
|
+
|
|
44
|
+
Run only in packages with file changes since last commit:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
turbo run lint --filter=[HEAD^1]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Since a specific branch point:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
turbo run lint --filter=[main...HEAD]
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Changed + Dependents (PR Builds)
|
|
57
|
+
|
|
58
|
+
Run in changed packages AND packages that depend on them:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
turbo run build test --filter=...[HEAD^1]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Or use the shortcut:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
turbo run build test --affected
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Directory-Based
|
|
71
|
+
|
|
72
|
+
Run in all apps:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
turbo run build --filter=./apps/*
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Run in specific directories:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
turbo run build --filter=./apps/web --filter=./apps/api
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Scope-Based
|
|
85
|
+
|
|
86
|
+
Run in all packages under a scope:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
turbo run build --filter=@acme/*
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Exclusions
|
|
93
|
+
|
|
94
|
+
Run in all apps except admin:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
turbo run build --filter=./apps/* --filter=!admin
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Run everywhere except specific packages:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
turbo run lint --filter=!legacy-app --filter=!deprecated-pkg
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Complex Combinations
|
|
107
|
+
|
|
108
|
+
Apps that changed, plus their dependents:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
turbo run build --filter=...[HEAD^1] --filter=./apps/*
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
All packages except docs, but only if changed:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
turbo run build --filter=[main...HEAD] --filter=!docs
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Debugging Filters
|
|
121
|
+
|
|
122
|
+
Use `--dry` to see what would run without executing:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
turbo run build --filter=web... --dry
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Use `--dry=json` for machine-readable output:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
turbo run build --filter=...[HEAD^1] --dry=json
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## CI/CD Patterns
|
|
135
|
+
|
|
136
|
+
PR validation (most common):
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
turbo run build test lint --affected
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Deploy only changed apps:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
turbo run deploy --filter=./apps/* --filter=[main...HEAD]
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Full rebuild of specific app and deps:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
turbo run build --filter=production-app...
|
|
152
|
+
```
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# turbo watch
|
|
2
|
+
|
|
3
|
+
Full docs: https://turborepo.dev/docs/reference/watch
|
|
4
|
+
|
|
5
|
+
Re-run tasks automatically when code changes. Dependency-aware.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
turbo watch [tasks]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic Usage
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Watch and re-run build task when code changes
|
|
15
|
+
turbo watch build
|
|
16
|
+
|
|
17
|
+
# Watch multiple tasks
|
|
18
|
+
turbo watch build test lint
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Tasks re-run in order configured in `turbo.json` when source files change.
|
|
22
|
+
|
|
23
|
+
## With Persistent Tasks
|
|
24
|
+
|
|
25
|
+
Persistent tasks (`"persistent": true`) won't exit, so they can't be depended on. They work the same in `turbo watch` as `turbo run`.
|
|
26
|
+
|
|
27
|
+
### Dependency-Aware Persistent Tasks
|
|
28
|
+
|
|
29
|
+
If your tool has built-in watching (like `next dev`), use its watcher:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"tasks": {
|
|
34
|
+
"dev": {
|
|
35
|
+
"persistent": true,
|
|
36
|
+
"cache": false
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Non-Dependency-Aware Tools
|
|
43
|
+
|
|
44
|
+
For tools that don't detect dependency changes, use `interruptible`:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"tasks": {
|
|
49
|
+
"dev": {
|
|
50
|
+
"persistent": true,
|
|
51
|
+
"interruptible": true,
|
|
52
|
+
"cache": false
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`turbo watch` will restart interruptible tasks when dependencies change.
|
|
59
|
+
|
|
60
|
+
## Limitations
|
|
61
|
+
|
|
62
|
+
### Caching
|
|
63
|
+
|
|
64
|
+
Caching is experimental with watch mode:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
turbo watch your-tasks --experimental-write-cache
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Task Outputs in Source Control
|
|
71
|
+
|
|
72
|
+
If tasks write files tracked by git, watch mode may loop infinitely. Watch mode uses file hashes to prevent this but it's not foolproof.
|
|
73
|
+
|
|
74
|
+
**Recommendation**: Remove task outputs from git.
|
|
75
|
+
|
|
76
|
+
## vs turbo run
|
|
77
|
+
|
|
78
|
+
| Feature | `turbo run` | `turbo watch` |
|
|
79
|
+
| ----------------- | ----------- | ------------- |
|
|
80
|
+
| Runs once | Yes | No |
|
|
81
|
+
| Re-runs on change | No | Yes |
|
|
82
|
+
| Caching | Full | Experimental |
|
|
83
|
+
| Use case | CI, one-off | Development |
|
|
84
|
+
|
|
85
|
+
## Common Patterns
|
|
86
|
+
|
|
87
|
+
### Development Workflow
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Run dev servers and watch for build changes
|
|
91
|
+
turbo watch dev build
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Type Checking During Development
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Watch and re-run type checks
|
|
98
|
+
turbo watch check-types
|
|
99
|
+
```
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vercel-cli-with-tokens
|
|
3
|
+
description: Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. "deploy to vercel", "set up vercel", "add environment variables to vercel".
|
|
4
|
+
metadata:
|
|
5
|
+
author: vercel
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Vercel CLI with Tokens
|
|
10
|
+
|
|
11
|
+
Deploy and manage projects on Vercel using the CLI with token-based authentication, without relying on `vercel login`.
|
|
12
|
+
|
|
13
|
+
## Step 1: Locate the Vercel Token
|
|
14
|
+
|
|
15
|
+
Before running any Vercel CLI commands, identify where the token is coming from. Work through these scenarios in order:
|
|
16
|
+
|
|
17
|
+
### A) `VERCEL_TOKEN` is already set in the environment
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
printenv VERCEL_TOKEN
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
If this returns a value, you're ready. Skip to Step 2.
|
|
24
|
+
|
|
25
|
+
### B) Token is in a `.env` file under `VERCEL_TOKEN`
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
grep '^VERCEL_TOKEN=' .env 2>/dev/null
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
If found, export it:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
export VERCEL_TOKEN=$(grep '^VERCEL_TOKEN=' .env | cut -d= -f2-)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### C) Token is in a `.env` file under a different name
|
|
38
|
+
|
|
39
|
+
Look for any variable that looks like a Vercel token (Vercel tokens typically start with `vca_`):
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
grep -i 'vercel' .env 2>/dev/null
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Inspect the output to identify which variable holds the token, then export it as `VERCEL_TOKEN`:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
export VERCEL_TOKEN=$(grep '^<VARIABLE_NAME>=' .env | cut -d= -f2-)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### D) No token found — ask the user
|
|
52
|
+
|
|
53
|
+
If none of the above yield a token, ask the user to provide one. They can create a Vercel access token at vercel.com/account/tokens.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
**Important:** Once `VERCEL_TOKEN` is exported as an environment variable, the Vercel CLI reads it natively — **do not pass it as a `--token` flag**. Putting secrets in command-line arguments exposes them in shell history and process listings.
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Bad — token visible in shell history and process listings
|
|
61
|
+
vercel deploy --token "vca_abc123"
|
|
62
|
+
|
|
63
|
+
# Good — CLI reads VERCEL_TOKEN from the environment
|
|
64
|
+
export VERCEL_TOKEN="vca_abc123"
|
|
65
|
+
vercel deploy
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Step 2: Locate the Project and Team
|
|
69
|
+
|
|
70
|
+
Similarly, check for the project ID and team scope. These let the CLI target the right project without needing `vercel link`.
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Check environment
|
|
74
|
+
printenv VERCEL_PROJECT_ID
|
|
75
|
+
printenv VERCEL_ORG_ID
|
|
76
|
+
|
|
77
|
+
# Or check .env
|
|
78
|
+
grep -i 'vercel' .env 2>/dev/null
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**If you have a project URL** (e.g. `https://vercel.com/my-team/my-project`), extract the team slug:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# e.g. "my-team" from "https://vercel.com/my-team/my-project"
|
|
85
|
+
echo "$PROJECT_URL" | sed 's|https://vercel.com/||' | cut -d/ -f1
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**If you have both `VERCEL_ORG_ID` and `VERCEL_PROJECT_ID` in your environment**, export them — the CLI will use these automatically and skip any `.vercel/` directory:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
export VERCEL_ORG_ID="<org-id>"
|
|
92
|
+
export VERCEL_PROJECT_ID="<project-id>"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Note: `VERCEL_ORG_ID` and `VERCEL_PROJECT_ID` must be set together — setting only one causes an error.
|
|
96
|
+
|
|
97
|
+
## CLI Setup
|
|
98
|
+
|
|
99
|
+
Ensure the Vercel CLI is installed:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
npm install -g vercel
|
|
103
|
+
vercel --version
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Deploying a Project
|
|
107
|
+
|
|
108
|
+
Always deploy as **preview** unless the user explicitly requests production. Choose a method based on what you have available.
|
|
109
|
+
|
|
110
|
+
### Quick Deploy (have project ID — no linking needed)
|
|
111
|
+
|
|
112
|
+
When `VERCEL_TOKEN` and `VERCEL_PROJECT_ID` are set in the environment, deploy directly:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
vercel deploy -y --no-wait
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
With a team scope (either via `VERCEL_ORG_ID` or `--scope`):
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
vercel deploy --scope <team-slug> -y --no-wait
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Production (only when explicitly requested):
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
vercel deploy --prod --scope <team-slug> -y --no-wait
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Check status:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
vercel inspect <deployment-url>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Full Deploy Flow (no project ID — need to link)
|
|
137
|
+
|
|
138
|
+
Use this when you have a token and team but no pre-existing project ID.
|
|
139
|
+
|
|
140
|
+
#### Check project state first
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Does the project have a git remote?
|
|
144
|
+
git remote get-url origin 2>/dev/null
|
|
145
|
+
|
|
146
|
+
# Is it already linked to a Vercel project?
|
|
147
|
+
cat .vercel/project.json 2>/dev/null || cat .vercel/repo.json 2>/dev/null
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
#### Link the project
|
|
151
|
+
|
|
152
|
+
**With git remote (preferred):**
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
vercel link --repo --scope <team-slug> -y
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Reads the git remote and connects to the matching Vercel project. Creates `.vercel/repo.json`. More reliable than plain `vercel link`, which matches by directory name.
|
|
159
|
+
|
|
160
|
+
**Without git remote:**
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
vercel link --scope <team-slug> -y
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Creates `.vercel/project.json`.
|
|
167
|
+
|
|
168
|
+
**Link to a specific project by name:**
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
vercel link --project <project-name> --scope <team-slug> -y
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
If the project is already linked, check `orgId` in `.vercel/project.json` or `.vercel/repo.json` to verify it matches the intended team.
|
|
175
|
+
|
|
176
|
+
#### Deploy after linking
|
|
177
|
+
|
|
178
|
+
**A) Git Push Deploy — has git remote (preferred)**
|
|
179
|
+
|
|
180
|
+
Git pushes trigger automatic Vercel deployments.
|
|
181
|
+
|
|
182
|
+
1. **Ask the user before pushing.** Never push without explicit approval.
|
|
183
|
+
2. Commit and push:
|
|
184
|
+
```bash
|
|
185
|
+
git add .
|
|
186
|
+
git commit -m "deploy: <description of changes>"
|
|
187
|
+
git push
|
|
188
|
+
```
|
|
189
|
+
3. Vercel builds automatically. Non-production branches get preview deployments.
|
|
190
|
+
4. Retrieve the deployment URL:
|
|
191
|
+
```bash
|
|
192
|
+
sleep 5
|
|
193
|
+
vercel ls --format json --scope <team-slug>
|
|
194
|
+
```
|
|
195
|
+
Find the latest entry in the `deployments` array.
|
|
196
|
+
|
|
197
|
+
**B) CLI Deploy — no git remote**
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
vercel deploy --scope <team-slug> -y --no-wait
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Check status:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
vercel inspect <deployment-url>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Deploying from a Remote Repository (code not cloned locally)
|
|
210
|
+
|
|
211
|
+
1. Clone the repository:
|
|
212
|
+
```bash
|
|
213
|
+
git clone <repo-url>
|
|
214
|
+
cd <repo-name>
|
|
215
|
+
```
|
|
216
|
+
2. Link to Vercel:
|
|
217
|
+
```bash
|
|
218
|
+
vercel link --repo --scope <team-slug> -y
|
|
219
|
+
```
|
|
220
|
+
3. Deploy via git push (if you have push access) or CLI deploy.
|
|
221
|
+
|
|
222
|
+
### About `.vercel/` Directory
|
|
223
|
+
|
|
224
|
+
A linked project has either:
|
|
225
|
+
- `.vercel/project.json` — from `vercel link`. Contains `projectId` and `orgId`.
|
|
226
|
+
- `.vercel/repo.json` — from `vercel link --repo`. Contains `orgId`, `remoteName`, and a `projects` map.
|
|
227
|
+
|
|
228
|
+
Not needed when `VERCEL_ORG_ID` + `VERCEL_PROJECT_ID` are both set in the environment.
|
|
229
|
+
|
|
230
|
+
**Do NOT** run `vercel ls`, `vercel project inspect`, or `vercel link` in an unlinked directory to detect state — they will interactively prompt or silently link as a side-effect. Only `vercel whoami` is safe to run anywhere.
|
|
231
|
+
|
|
232
|
+
## Managing Environment Variables
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Set for all environments
|
|
236
|
+
echo "value" | vercel env add VAR_NAME --scope <team-slug>
|
|
237
|
+
|
|
238
|
+
# Set for a specific environment (production, preview, development)
|
|
239
|
+
echo "value" | vercel env add VAR_NAME production --scope <team-slug>
|
|
240
|
+
|
|
241
|
+
# List environment variables
|
|
242
|
+
vercel env ls --scope <team-slug>
|
|
243
|
+
|
|
244
|
+
# Pull env vars to local .env file
|
|
245
|
+
vercel env pull --scope <team-slug>
|
|
246
|
+
|
|
247
|
+
# Remove a variable
|
|
248
|
+
vercel env rm VAR_NAME --scope <team-slug> -y
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
## Inspecting Deployments
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# List recent deployments
|
|
255
|
+
vercel ls --format json --scope <team-slug>
|
|
256
|
+
|
|
257
|
+
# Inspect a specific deployment
|
|
258
|
+
vercel inspect <deployment-url>
|
|
259
|
+
|
|
260
|
+
# View build logs
|
|
261
|
+
vercel logs <deployment-url>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Managing Domains
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# List domains
|
|
268
|
+
vercel domains ls --scope <team-slug>
|
|
269
|
+
|
|
270
|
+
# Add a domain to the project
|
|
271
|
+
vercel domains add <domain> --scope <team-slug>
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Working Agreement
|
|
275
|
+
|
|
276
|
+
- **Never pass `VERCEL_TOKEN` as a `--token` flag.** Export it as an environment variable and let the CLI read it natively.
|
|
277
|
+
- **Check the environment for tokens before asking the user.** Look in the current env and `.env` files first.
|
|
278
|
+
- **Default to preview deployments.** Only deploy to production when explicitly asked.
|
|
279
|
+
- **Ask before pushing to git.** Never push commits without the user's approval.
|
|
280
|
+
- **Do not read or modify `.vercel/` files directly.** The CLI manages this directory.
|
|
281
|
+
- **Do not curl/fetch deployed URLs to verify.** Just return the link to the user.
|
|
282
|
+
- **Use `--format json`** when structured output will help with follow-up steps.
|
|
283
|
+
- **Use `-y`** on commands that prompt for confirmation to avoid interactive blocking.
|
|
284
|
+
|
|
285
|
+
## Troubleshooting
|
|
286
|
+
|
|
287
|
+
### Token not found
|
|
288
|
+
|
|
289
|
+
Check the environment and any `.env` files present:
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
printenv | grep -i vercel
|
|
293
|
+
grep -i vercel .env 2>/dev/null
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Authentication error
|
|
297
|
+
|
|
298
|
+
If the CLI fails with `Authentication required`:
|
|
299
|
+
- The token may be expired or invalid.
|
|
300
|
+
- Verify: `vercel whoami` (uses `VERCEL_TOKEN` from environment).
|
|
301
|
+
- Ask the user for a fresh token.
|
|
302
|
+
|
|
303
|
+
### Wrong team
|
|
304
|
+
|
|
305
|
+
Verify the scope is correct:
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
vercel whoami --scope <team-slug>
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### Build failure
|
|
312
|
+
|
|
313
|
+
Check the build logs:
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
vercel logs <deployment-url>
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Common causes:
|
|
320
|
+
- Missing dependencies — ensure `package.json` is complete and committed.
|
|
321
|
+
- Missing environment variables — add with `vercel env add`.
|
|
322
|
+
- Framework misconfiguration — check `vercel.json`. Vercel auto-detects frameworks (Next.js, Remix, Vite, etc.) from `package.json`; override with `vercel.json` if detection is wrong.
|
|
323
|
+
|
|
324
|
+
### CLI not installed
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
npm install -g vercel
|
|
328
|
+
```
|