#!/usr/bin/env node /** * Package Manager Setup Script * * Interactive script to configure preferred package manager. * Can be run directly or via the /setup-pm command. * * Usage: * node scripts/setup-package-manager.js [pm-name] * node scripts/setup-package-manager.js --detect * node scripts/setup-package-manager.js --global pnpm * node scripts/setup-package-manager.js --project bun */ const { PACKAGE_MANAGERS, getPackageManager, setPreferredPackageManager, setProjectPackageManager, getAvailablePackageManagers, detectFromLockFile, detectFromPackageJson, getSelectionPrompt } = require('./lib/package-manager'); const { log } = require('./lib/utils'); function showHelp() { console.log(` Package Manager Setup for Claude Code Usage: node scripts/setup-package-manager.js [options] [package-manager] Options: --detect Detect and show current package manager --global Set global preference (saves to ~/.claude/package-manager.json) --project Set project preference (saves to .claude/package-manager.json) --list List available package managers --help Show this help message Package Managers: npm Node Package Manager (default with Node.js) pnpm Fast, disk space efficient package manager yarn Classic Yarn package manager bun All-in-one JavaScript runtime & toolkit Examples: # Detect current package manager node scripts/setup-package-manager.js --detect # Set pnpm as global preference node scripts/setup-package-manager.js --global pnpm # Set bun for current project node scripts/setup-package-manager.js --project bun # List available package managers node scripts/setup-package-manager.js --list `); } function detectAndShow() { const pm = getPackageManager(); const available = getAvailablePackageManagers(); const fromLock = detectFromLockFile(); const fromPkg = detectFromPackageJson(); console.log('\n=== Package Manager Detection ===\n'); console.log('Current selection:'); console.log(` Package Manager: ${pm.name}`); console.log(` Source: ${pm.source}`); console.log(''); console.log('Detection results:'); console.log(` From package.json: ${fromPkg || 'not specified'}`); console.log(` From lock file: ${fromLock || 'not found'}`); console.log(` Environment var: ${process.env.CLAUDE_PACKAGE_MANAGER || 'not set'}`); console.log(''); console.log('Available package managers:'); for (const pmName of Object.keys(PACKAGE_MANAGERS)) { const installed = available.includes(pmName); const indicator = installed ? 'āœ“' : 'āœ—'; const current = pmName === pm.name ? ' (current)' : ''; console.log(` ${indicator} ${pmName}${current}`); } console.log(''); console.log('Commands:'); console.log(` Install: ${pm.config.installCmd}`); console.log(` Run script: ${pm.config.runCmd}