import fs from 'node:fs'; import path from 'node:path'; export function detectJsPackageManager(root) { if (fs.existsSync(path.join(root, 'pnpm-lock.yaml'))) return 'pnpm'; if (fs.existsSync(path.join(root, 'yarn.lock'))) return 'yarn'; if (fs.existsSync(path.join(root, 'bun.lockb')) || fs.existsSync(path.join(root, 'bun.lock'))) return 'bun'; return 'npm'; } export function installCommandFor(pm) { switch (pm) { case 'pnpm': return { command: 'pnpm', args: ['install'] }; case 'yarn': return { command: 'yarn', args: ['install'] }; case 'bun': return { command: 'bun', args: ['install'] }; case 'npm': default: return { command: 'npm', args: ['install'] }; } } export function runScriptCommandFor(pm, script, extraArgs = []) { switch (pm) { case 'pnpm': return { command: 'pnpm', args: ['run', script, ...extraArgs] }; case 'yarn': return { command: 'yarn', args: [script, ...extraArgs] }; case 'bun': return { command: 'bun', args: ['run', script, ...extraArgs] }; case 'npm': default: return { command: 'npm', args: ['run', script, ...(extraArgs.length ? ['--', ...extraArgs] : [])] }; } } export function addDependencyCommandFor(pm, packages, options) { if (options.remove) { switch (pm) { case 'pnpm': return { command: 'pnpm', args: ['remove', ...packages] }; case 'yarn': return { command: 'yarn', args: ['remove', ...packages] }; case 'bun': return { command: 'bun', args: ['remove', ...packages] }; case 'npm': default: return { command: 'npm', args: ['uninstall', ...packages] }; } } switch (pm) { case 'pnpm': return { command: 'pnpm', args: ['add', ...(options.dev ? ['-D'] : []), ...packages] }; case 'yarn': return { command: 'yarn', args: ['add', ...(options.dev ? ['-D'] : []), ...packages] }; case 'bun': return { command: 'bun', args: ['add', ...(options.dev ? ['-d'] : []), ...packages] }; case 'npm': default: return { command: 'npm', args: ['install', ...(options.dev ? ['-D'] : []), ...packages] }; } } export function readPackageJson(root) { const file = path.join(root, 'package.json'); if (!fs.existsSync(file)) return null; try { return JSON.parse(fs.readFileSync(file, 'utf8')); } catch { return null; } } export function hasDependency(pkg, name) { if (!pkg) return false; return Boolean(pkg.dependencies?.[name] || pkg.devDependencies?.[name]); } //# sourceMappingURL=packageManager.js.map