Skip to content

Commit 7640ef7

Browse files
authored
feat: add support for adding devDependencies in the cli (#2419)
* feat(cli): add support for install devDependencies * chore: add changeset
1 parent 8f3b28f commit 7640ef7

File tree

5 files changed

+25
-1
lines changed

5 files changed

+25
-1
lines changed

.changeset/violet-roses-live.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"shadcn-ui": minor
3+
---
4+
5+
add support for devDependencies

apps/www/registry/registry.ts

+1
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ const ui: Registry = [
6060
files: ["ui/carousel.tsx"],
6161
registryDependencies: ["button"],
6262
dependencies: ["embla-carousel-react"],
63+
devDependencies: ["embla-carousel"],
6364
},
6465
{
6566
name: "checkbox",

apps/www/registry/schema.ts

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export const registrySchema = z.array(
44
z.object({
55
name: z.string(),
66
dependencies: z.array(z.string()).optional(),
7+
devDependencies: z.array(z.string()).optional(),
78
registryDependencies: z.array(z.string()).optional(),
89
files: z.array(z.string()),
910
type: z.enum([

packages/cli/src/commands/add.ts

+17-1
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,10 @@ export const add = new Command()
180180
await fs.writeFile(filePath, content)
181181
}
182182

183+
const packageManager = await getPackageManager(cwd)
184+
183185
// Install dependencies.
184186
if (item.dependencies?.length) {
185-
const packageManager = await getPackageManager(cwd)
186187
await execa(
187188
packageManager,
188189
[
@@ -194,6 +195,21 @@ export const add = new Command()
194195
}
195196
)
196197
}
198+
199+
// Install devDependencies.
200+
if (item.devDependencies?.length) {
201+
await execa(
202+
packageManager,
203+
[
204+
packageManager === "npm" ? "install" : "add",
205+
"-D",
206+
...item.devDependencies,
207+
],
208+
{
209+
cwd,
210+
}
211+
)
212+
}
197213
}
198214
spinner.succeed(`Done.`)
199215
} catch (error) {

packages/cli/src/utils/registry/schema.ts

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import * as z from "zod"
44
export const registryItemSchema = z.object({
55
name: z.string(),
66
dependencies: z.array(z.string()).optional(),
7+
devDependencies: z.array(z.string()).optional(),
78
registryDependencies: z.array(z.string()).optional(),
89
files: z.array(z.string()),
910
type: z.enum(["components:ui", "components:component", "components:example"]),

0 commit comments

Comments
 (0)