apps/v4/content/docs/(root)/cli.mdx
Use the init command to initialize configuration and dependencies for a new project.
The init command installs dependencies, adds the cn util and configures CSS variables for the project.
npx shadcn@latest init
Options
Usage: shadcn init [options] [components...]
initialize your project and install dependencies
Arguments:
components name, url or local path to component
Options:
-t, --template <template> the template to use. (next, vite, start, react-router, laravel, astro)
-b, --base <base> the component library to use. (radix, base)
-p, --preset [name] use a preset configuration. (name, URL, or preset code)
-n, --name <name> the name for the new project.
-d, --defaults use default configuration. (default: false)
-y, --yes skip confirmation prompt. (default: true)
-f, --force force overwrite of existing configuration. (default: false)
-c, --cwd <cwd> the working directory. defaults to the current directory.
-s, --silent mute output. (default: false)
--monorepo scaffold a monorepo project.
--no-monorepo skip the monorepo prompt.
--reinstall re-install existing UI components.
--no-reinstall do not re-install existing UI components.
--rtl enable RTL support.
--no-rtl disable RTL support.
--css-variables use css variables for theming. (default: true)
--no-css-variables do not use css variables for theming.
-h, --help display help for command
The create command is an alias for init:
npx shadcn@latest create
Use the add command to add components and dependencies to your project.
npx shadcn@latest add [component]
Options
Usage: shadcn add [options] [components...]
add a component to your project
Arguments:
components name, url or local path to component
Options:
-y, --yes skip confirmation prompt. (default: false)
-o, --overwrite overwrite existing files. (default: false)
-c, --cwd <cwd> the working directory. defaults to the current directory.
-a, --all add all available components (default: false)
-p, --path <path> the path to add the component to.
-s, --silent mute output. (default: false)
--dry-run preview changes without writing files. (default: false)
--diff [path] show diff for a file.
--view [path] show file contents.
-h, --help display help for command
Use the view command to view items from the registry before installing them.
npx shadcn@latest view [item]
You can view multiple items at once:
npx shadcn@latest view button card dialog
Or view items from namespaced registries:
npx shadcn@latest view @acme/auth @v0/dashboard
Options
Usage: shadcn view [options] <items...>
view items from the registry
Arguments:
items the item names or URLs to view
Options:
-c, --cwd <cwd> the working directory. defaults to the current directory.
-h, --help display help for command
Use the search command to search for items from registries.
npx shadcn@latest search [registry]
You can search with a query:
npx shadcn@latest search @shadcn -q "button"
Or search multiple registries at once:
npx shadcn@latest search @shadcn @v0 @acme
The list command is an alias for search:
npx shadcn@latest list @acme
Options
Usage: shadcn search|list [options] <registries...>
search items from registries
Arguments:
registries the registry names or urls to search items from. Names
must be prefixed with @.
Options:
-c, --cwd <cwd> the working directory. defaults to the current directory.
-q, --query <query> query string
-l, --limit <number> maximum number of items to display per registry (default: "100")
-o, --offset <number> number of items to skip (default: "0")
-h, --help display help for command
Use the build command to generate the registry JSON files.
npx shadcn@latest build
This command reads the registry.json file and generates the registry JSON files in the public/r directory.
Options
Usage: shadcn build [options] [registry]
build components for a shadcn registry
Arguments:
registry path to registry.json file (default: "./registry.json")
Options:
-o, --output <path> destination directory for json files (default: "./public/r")
-c, --cwd <cwd> the working directory. defaults to the current directory.
-h, --help display help for command
To customize the output directory, use the --output option.
npx shadcn@latest build --output ./public/registry
Use the docs command to fetch documentation and API references for components.
npx shadcn@latest docs [component]
Options
Usage: shadcn docs [options] [component]
fetch documentation and API references for components
Arguments:
component the component to get docs for
Options:
-c, --cwd <cwd> the working directory. defaults to the current directory.
-b, --base <base> the base to use either 'base' or 'radix'. defaults to project base.
--json output as JSON. (default: false)
-h, --help display help for command
Use the info command to get information about your project.
npx shadcn@latest info
Options
Usage: shadcn info [options]
get information about your project
Options:
-c, --cwd <cwd> the working directory. defaults to the current directory.
--json output as JSON. (default: false)
-h, --help display help for command
Use the migrate command to run migrations on your project.
npx shadcn@latest migrate [migration]
Available Migrations
| Migration | Description |
|---|---|
icons | Migrate your UI components to a different icon library. |
radix | Migrate to radix-ui. |
rtl | Migrate your components to support RTL (right-to-left). |
Options
Usage: shadcn migrate [options] [migration] [path]
run a migration.
Arguments:
migration the migration to run.
path optional path or glob pattern to migrate.
Options:
-c, --cwd <cwd> the working directory. defaults to the current directory.
-l, --list list all migrations. (default: false)
-y, --yes skip confirmation prompt. (default: false)
-h, --help display help for command
The rtl migration transforms your components to support RTL (right-to-left) languages.
npx shadcn@latest migrate rtl
This will:
components.json to set rtl: trueml-4 → ms-4, text-left → text-start)rtl: variants where needed (e.g., space-x-4 → space-x-4 rtl:space-x-reverse)Migrate specific files
You can migrate specific files or use glob patterns:
# Migrate a specific file
npx shadcn@latest migrate rtl src/components/ui/button.tsx
# Migrate files matching a glob pattern
npx shadcn@latest migrate rtl "src/components/ui/**"
If no path is provided, the migration will transform all files in your ui directory (from components.json).
The radix migration updates your imports from individual @radix-ui/react-* packages to the unified radix-ui package.
npx shadcn@latest migrate radix
This will:
@radix-ui/react-* to radix-uiradix-ui package to your package.jsonBefore
import * as DialogPrimitive from "@radix-ui/react-dialog"
import * as SelectPrimitive from "@radix-ui/react-select"
After
import { Dialog as DialogPrimitive, Select as SelectPrimitive } from "radix-ui"
Migrate specific files
You can migrate specific files or use glob patterns:
# Migrate a specific file.
npx shadcn@latest migrate radix src/components/ui/dialog.tsx
# Migrate files matching a glob pattern.
npx shadcn@latest migrate radix "src/components/ui/**"
If no path is provided, the migration will transform all files in your ui directory (from components.json).
Once complete, you can remove any unused @radix-ui/react-* packages from your package.json.