diff --git a/.changeset/lovely-otters-rescue.md b/.changeset/lovely-otters-rescue.md new file mode 100644 index 0000000000..6eba3a5c8c --- /dev/null +++ b/.changeset/lovely-otters-rescue.md @@ -0,0 +1,5 @@ +--- +"shadcn-ui": patch +--- + +fix(cli): use bun add when bun detected diff --git a/packages/cli/src/utils/get-package-manager.ts b/packages/cli/src/utils/get-package-manager.ts index f28d30b5b4..91efb416ee 100644 --- a/packages/cli/src/utils/get-package-manager.ts +++ b/packages/cli/src/utils/get-package-manager.ts @@ -2,12 +2,12 @@ import { detect } from "@antfu/ni" export async function getPackageManager( targetDir: string -): Promise<"yarn" | "pnpm" | "npm"> { +): Promise<"yarn" | "pnpm" | "bun" | "npm"> { const packageManager = await detect({ programmatic: true, cwd: targetDir }) if (packageManager === "yarn@berry") return "yarn" if (packageManager === "pnpm@6") return "pnpm" - if (packageManager === "bun") return "npm" + if (packageManager === "bun") return "bun" return packageManager ?? "npm" } diff --git a/packages/cli/test/fixtures/project-bun/bun.lockb b/packages/cli/test/fixtures/project-bun/bun.lockb new file mode 100644 index 0000000000..fea2ca25b5 Binary files /dev/null and b/packages/cli/test/fixtures/project-bun/bun.lockb differ diff --git a/packages/cli/test/fixtures/project-bun/package.json b/packages/cli/test/fixtures/project-bun/package.json new file mode 100644 index 0000000000..b8cfd201f6 --- /dev/null +++ b/packages/cli/test/fixtures/project-bun/package.json @@ -0,0 +1,7 @@ +{ + "name": "test-cli-project-bun", + "version": "1.0.0", + "main": "index.js", + "author": "shadcn", + "license": "MIT" +} diff --git a/packages/cli/test/utils/get-package-manager.test.ts b/packages/cli/test/utils/get-package-manager.test.ts index ad1077c651..3858f68384 100644 --- a/packages/cli/test/utils/get-package-manager.test.ts +++ b/packages/cli/test/utils/get-package-manager.test.ts @@ -16,6 +16,10 @@ test("get package manager", async () => { await getPackageManager(path.resolve(__dirname, "../fixtures/project-pnpm")) ).toBe("pnpm") + expect( + await getPackageManager(path.resolve(__dirname, "../fixtures/project-bun")) + ).toBe("bun") + expect( await getPackageManager(path.resolve(__dirname, "../fixtures/next")) ).toBe("pnpm")