Vuetify CLI
The Vuetify CLI scaffolds Vuetify and v0 projects, seeds working examples from the official docs registry (vuetify add), and helps you track a local component library over time.
Packages
| Package | Binary | Purpose |
|---|---|---|
| @vuetify/cli↗︎ | vuetify | Full CLI with all commands |
| create-vuetify0↗︎ | create-vuetify0 | Scaffold v0 projects |
Registry commands (add <feature>, list, generate, diff, refresh, registry build) require a recent @vuetify/cli that includes the docs registry consumer. The seed itself is live at 0.vuetifyjs.com/registry↗︎.
Installation
Install the CLI globally to access all commands:
pnpm add -g @vuetify/clinpm install -g @vuetify/cliyarn global add @vuetify/clibun add -g @vuetify/cliOr run commands without installing using dlx/npx:
pnpm dlx @vuetify/cli <command>npx @vuetify/cli <command>yarn dlx @vuetify/cli <command>bunx @vuetify/cli <command>Quick Start
Create a new v0 project with the interactive wizard:
vuetify initOr use the standalone scaffolding package without installing the CLI:
pnpm create vuetify0npm create vuetify0yarn create vuetify0bun create vuetify0Commands
| Command | Description |
|---|---|
vuetify init | Initialize a new project |
vuetify add <name> | Seed a component, composable, or plugin from the docs registry |
vuetify add eslint | Add ESLint with Vuetify config |
vuetify list | List components tracked in vuetify.json |
vuetify status | Check tracked files still exist on disk |
vuetify generate <name> | Scaffold a local component (no registry origin) |
vuetify diff <name> | Compare a tracked component to its registry origin |
vuetify refresh <name> | Re-fetch a tracked component from its origin |
vuetify registry build | Emit a static registry from your inventory |
vuetify mcp | Configure Vuetify MCP for your IDE |
vuetify update | Update Vuetify packages |
vuetify docs | Open version-specific documentation |
vuetify release-notes | Print release notes for a package |
vuetify analyze | Scan codebase for usage patterns |
vuetify upgrade | Self-upgrade the CLI |
init
Initialize a new project (wrapper around create-vuetify0):
pnpm dlx @vuetify/cli init my-appnpx @vuetify/cli init my-appyarn dlx @vuetify/cli init my-appbunx @vuetify/cli init my-appadd
v0 is headless: installing @vuetify/v0 and importing a primitive does not yield a rendered UI. vuetify add seeds a working, styled example from the official docs registry into your project so you own a real file you can edit, theme, and ship.
The registry is published at 0.vuetifyjs.com/registry↗︎ — the same curated examples that appear on component and composable docs pages.
Seed a feature
# Interactive picker when you omit the name
pnpm dlx @vuetify/cli add
# Component example (writes under src/components/…)
pnpm dlx @vuetify/cli add dialog
# Plugin (install-first — wires createThemePlugin into the app)
pnpm dlx @vuetify/cli add use-theme
# Pick a specific example when a feature ships more than one
pnpm dlx @vuetify/cli add create-data-table --example features
# Non-interactive (CI / scripts)
pnpm dlx @vuetify/cli add dialog --yesnpx @vuetify/cli add
npx @vuetify/cli add dialog
npx @vuetify/cli add use-theme
npx @vuetify/cli add create-data-table --example features
npx @vuetify/cli add dialog --yesyarn dlx @vuetify/cli add
yarn dlx @vuetify/cli add dialog
yarn dlx @vuetify/cli add use-theme
yarn dlx @vuetify/cli add create-data-table --example features
yarn dlx @vuetify/cli add dialog --yesbunx @vuetify/cli add
bunx @vuetify/cli add dialog
bunx @vuetify/cli add use-theme
bunx @vuetify/cli add create-data-table --example features
bunx @vuetify/cli add dialog --yes| Option | Description |
|---|---|
--example <id> | Example within the feature (basic, gallery, …) |
--dir <path> | Write destination (defaults to vuetify.json aliases or src/components) |
--registry <url|alias> | Registry origin (default https://0.vuetifyjs.com) |
--overwrite | Replace existing files without prompting |
--yes | Accept prompts with defaults (skips optional plugin demos) |
What it does:
Resolves the name against the registry index (fuzzy match when needed).
Installs missing npm dependencies declared by the example (with confirm, or immediately with
--yes).Writes example files into your project and maps semantic colors if UnoCSS/Tailwind is present.
Records the install in
vuetify.json(path, files, and upstream origin for later diff/refresh).
Plugins
Plugin pages (for example useTheme) are install-first: the CLI wires createThemePlugin (or the matching factory) into src/plugins/ and your app entry. A usage example is optional — confirm interactively, or pass --example to force one. With --yes, only the plugin module is installed.
vuetify add use-theme
vuetify add use-locale --yesIntegrations
add still installs project tooling integrations:
vuetify add eslintConfigure the MCP server with vuetify mcp install (not add mcp — that path is deprecated).
list and status
Track what add (and generate) put on disk:
# Inventory from vuetify.json
vuetify list
vuetify list --json
# Healthy vs missing files
vuetify statusgenerate
Scaffold a local component with no registry origin — useful when you are building your own library and only need a tracked file:
vuetify generate MyCard
vuetify generate my-button --dir src/components/ui--dir is one-shot for that file. It does not change the project components alias used by later add / refresh calls.
diff and refresh
When a feature came from the registry, compare or re-pull it:
# Show which files match, changed, or only exist locally / upstream
vuetify diff dialog
# Re-fetch from the recorded origin (overwrites local files)
vuetify refresh dialog
vuetify refresh use-themeGit remains the source of truth for your edits. Diff/refresh only compare against the registry seed you originally installed.
registry build
Publish your inventory as a static registry in the same shape as the official seed, so other projects can point vuetify add --registry at it:
vuetify registry build
# → ./registry/index.json, tokens.json, {type}/{name}.jsonHost the parent of the output directory so URLs resolve as {origin}/registry/index.json (the CLI always fetches under /registry/).
# After hosting at https://design.example.com/registry/…
vuetify add dialog --registry https://design.example.comMulti-registry
vuetify.json can map short aliases to origins:
{
"version": 1,
"aliases": { "components": "src/components" },
"registries": {
"@vuetify": "https://0.vuetifyjs.com",
"@acme": "https://design.example.com"
},
"components": {}
}vuetify add @acme/button
vuetify add dialog --registry @acmeupdate
Update all Vuetify packages to their latest versions:
# Update to latest stable
pnpm dlx @vuetify/cli update
# Update to nightly builds
pnpm dlx @vuetify/cli update --nightlynpx @vuetify/cli update
npx @vuetify/cli update --nightlyyarn dlx @vuetify/cli update
yarn dlx @vuetify/cli update --nightlybunx @vuetify/cli update
bunx @vuetify/cli update --nightlyThe update command auto-detects and updates:
vuetify@vuetify/*packagesvuetify-nuxt-module@nuxtjs/vuetifyvite-plugin-vuetifyeslint-plugin-vuetifyeslint-config-vuetify
docs
Open version-specific Vuetify documentation:
pnpm dlx @vuetify/cli docsnpx @vuetify/cli docsyarn dlx @vuetify/cli docsbunx @vuetify/cli docsThe CLI auto-detects your installed Vuetify version and opens the correct documentation site.
release-notes
Print the release notes for a Vuetify package without leaving the terminal:
# Latest v0 release
pnpm dlx @vuetify/cli release-notes v0
# A specific version
pnpm dlx @vuetify/cli release-notes v0 --version 1.0.0npx @vuetify/cli release-notes v0
npx @vuetify/cli release-notes v0 --version 1.0.0yarn dlx @vuetify/cli release-notes v0
yarn dlx @vuetify/cli release-notes v0 --version 1.0.0bunx @vuetify/cli release-notes v0
bunx @vuetify/cli release-notes v0 --version 1.0.0The command prints the release name, tag, publish date, and full notes, along with links to the documentation and the GitHub release.
| Argument | Default | Description |
|---|---|---|
package | vuetify | Package to fetch — vuetify or v0 (aliases: vuetify0, 0) |
--version, -v | latest | Release version; latest resolves to the newest core release |
Pass v0 to read the Vuetify0 release notes. Omitting --version shows the latest release.
analyze
Scan your codebase for Vuetify usage patterns:
# Console output
pnpm dlx @vuetify/cli analyze
# JSON output for tooling
pnpm dlx @vuetify/cli analyze --reporter jsonnpx @vuetify/cli analyze
npx @vuetify/cli analyze --reporter jsonyarn dlx @vuetify/cli analyze
yarn dlx @vuetify/cli analyze --reporter jsonbunx @vuetify/cli analyze
bunx @vuetify/cli analyze --reporter jsonThe analyzer scans your project and detects all imports from @vuetify/v0:
Components —
Dialog,Tabs,Avatar, etc.Composables —
useBreakpoints,useTheme,createFilter, etc.Plugins —
createThemePlugin,createBreakpointsPlugin, etc.Utilities and constants
Custom Documentation URL
After analyzing your project, the CLI generates a personalized documentation URL:
https://0.vuetifyjs.com/?features=Dialog,Avatar,useBreakpoints,...This URL filters the v0 documentation to show only the features you’re actually using, giving you a focused, clutter-free reference tailored to your project. Share this URL with your team to onboard developers faster.
JSON Output
Use --reporter json to integrate with CI/CD pipelines or custom tooling:
vuetify analyze --reporter json --output report.jsonupgrade
Self-upgrade the CLI to the latest version:
pnpm dlx @vuetify/cli upgradenpx @vuetify/cli upgradeyarn dlx @vuetify/cli upgradebunx @vuetify/cli upgradeScaffolding Options
The interactive wizard guides you through project configuration:
| Step | Options |
|---|---|
| Project Name | Your project directory name |
| Platform | Vue↗︎ + Vite↗︎, Nuxt↗︎ |
| CSS Framework | UnoCSS↗︎, Tailwind↗︎, None |
| TypeScript | Yes, No |
| Router (Vue only) | Vue Router↗︎, File-based, None |
| Features | ESLint, Pinia↗︎, i18n↗︎, MCP |
Platforms
CSS Frameworks
| Framework | Description |
|---|---|
| UnoCSS↗︎ | Instant atomic CSS engine |
| Tailwind↗︎ | Utility-first CSS |
| None | No CSS framework |
Router Options (Vue only)
| Option | Description |
|---|---|
| Vue Router↗︎ | Standard routing |
| File-based | Auto-generated routes from file structure |
| None | No routing |
Features
| Feature | Description |
|---|---|
| ESLint | Vuetify ESLint config↗︎ |
| Pinia↗︎ | State management |
| i18n↗︎ | Internationalization |
| MCP | Vuetify MCP server config |
Non-Interactive Mode
For CI/CD pipelines and automation, pass arguments directly:
pnpm create vuetify0 my-app \
--platform=vue \
--css=unocss \
--router=router \
--features=eslint,pinia \
--installnpm create vuetify0 my-app -- \
--platform=vue \
--css=unocss \
--router=router \
--features=eslint,pinia \
--installyarn create vuetify0 my-app \
--platform=vue \
--css=unocss \
--router=router \
--features=eslint,pinia \
--installbun create vuetify0 my-app \
--platform=vue \
--css=unocss \
--router=router \
--features=eslint,pinia \
--installAll Arguments
| Argument | Values | Description |
|---|---|---|
--platform | vue, nuxt | Target platform |
--css | unocss, tailwindcss, none | CSS framework |
--no-typescript | flag | Use JavaScript instead of TypeScript |
--router | router, file-router, none | Router type (Vue only) |
--features | eslint, pinia, i18n, mcp | Features to include (comma-separated) |
--install | flag | Auto-install dependencies |
--force | flag | Overwrite existing directory |
The --force flag will overwrite existing files without confirmation.