From f8bb4b843fe228918d5d81eac68e6a5ec0b7893c Mon Sep 17 00:00:00 2001 From: Dharya Gangwar <72541016+Dharya-dev@users.noreply.github.com> Date: Mon, 18 May 2026 02:34:19 +0530 Subject: [PATCH] fix(cli): inject pnpm.onlyBuiltDependencies to fix Vite init with pnpm --- .../shadcn/src/templates/create-template.ts | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/shadcn/src/templates/create-template.ts b/packages/shadcn/src/templates/create-template.ts index 602c20d96d6..0783e3938aa 100644 --- a/packages/shadcn/src/templates/create-template.ts +++ b/packages/shadcn/src/templates/create-template.ts @@ -270,25 +270,35 @@ function defaultScaffold({ // Adapt workspace config and lockfiles for the target package manager. await adaptWorkspaceConfig(projectPath, packageManager) - // Run install. - const installArgs = getInstallArgs(packageManager) - const args = ["install", ...installArgs] - await execa(packageManager, args, { - cwd: projectPath, - }) - - // Write project name to the package.json. + // Write project name to the package.json and inject pnpm configuration. const packageJsonPath = path.join(projectPath, "package.json") if (fs.existsSync(packageJsonPath)) { const packageJsonContent = await fs.readFile(packageJsonPath, "utf8") const packageJson = JSON.parse(packageJsonContent) packageJson.name = path.basename(projectPath) + + if (packageManager === "pnpm") { + packageJson.pnpm = packageJson.pnpm || {} + packageJson.pnpm.onlyBuiltDependencies = + packageJson.pnpm.onlyBuiltDependencies || [] + if (!packageJson.pnpm.onlyBuiltDependencies.includes("esbuild")) { + packageJson.pnpm.onlyBuiltDependencies.push("esbuild") + } + } + await fs.writeFile( packageJsonPath, JSON.stringify(packageJson, null, 2) + "\n" ) } + // Run install. + const installArgs = getInstallArgs(packageManager) + const args = ["install", ...installArgs] + await execa(packageManager, args, { + cwd: projectPath, + }) + createSpinner?.succeed(`Creating a new ${title} project.`) } catch (error) { createSpinner?.fail(