--- title: May 2026 - Package Imports and Target Aliases description: Configure shadcn/ui with package.json imports and portable registry target aliases. date: 2026-05-05 --- We've added support for package imports and aliases in `files.target` in `shadcn@4.7.0`. ## Package imports The `shadcn` CLI now supports `package.json#imports` for installing components, rewriting imports, and resolving third-party registries. You can use private `#...` import aliases from your `package.json` instead of relying only on `compilerOptions.paths` in `tsconfig.json`. ```json title="package.json" showLineNumbers { "imports": { "#components/*": "./src/components/*.tsx", "#lib/*": "./src/lib/*.ts", "#hooks/*": "./src/hooks/*.ts" } } ``` Then use the same roots in `components.json`: ```json title="components.json" showLineNumbers { "aliases": { "components": "#components", "ui": "#components/ui", "lib": "#lib", "hooks": "#hooks", "utils": "#lib/utils" } } ``` This also works in monorepos where app-local files use package imports and shared UI files are imported from workspace package exports. See the [package imports guide](/docs/package-imports) for setup details. ## Target aliases Registry items can now use target aliases in `files[].target` to install files under the user's configured shadcn directories. For example, the following registry item will install the `prompt-input.tsx` file under the `ui/ai` directory. ```json title="example.json" showLineNumbers { "files": [ { "path": "registry/default/ai/prompt-input.tsx", "type": "registry:ui", "target": "@ui/ai/prompt-input.tsx" } ] } ``` See the [registry examples](/docs/registry/examples#target-placeholders) for more details.