1import { BasePackageManager } from './BasePackageManager'; 2import { findYarnOrNpmWorkspaceRoot, BUN_LOCK_FILE } from '../utils/nodeWorkspaces'; 3 4export class BunPackageManager extends BasePackageManager { 5 readonly name = 'bun'; 6 readonly bin = 'bun'; 7 readonly lockFile = BUN_LOCK_FILE; 8 9 workspaceRoot() { 10 const root = findYarnOrNpmWorkspaceRoot(this.ensureCwdDefined('workspaceRoot')); 11 if (root) { 12 return new BunPackageManager({ 13 ...this.options, 14 silent: this.silent, 15 log: this.log, 16 cwd: root, 17 }); 18 } 19 20 return null; 21 } 22 23 installAsync(namesOrFlags: string[] = []) { 24 return this.runAsync(['install', ...namesOrFlags]); 25 } 26 27 addAsync(namesOrFlags: string[] = []) { 28 if (!namesOrFlags.length) { 29 return this.installAsync(); 30 } 31 32 const res = this.runAsync(['add', ...namesOrFlags]); 33 console.log(res); 34 return res; 35 } 36 37 addDevAsync(namesOrFlags: string[] = []) { 38 if (!namesOrFlags.length) { 39 return this.installAsync(); 40 } 41 42 return this.runAsync(['add', '--dev', ...namesOrFlags]); 43 } 44 45 addGlobalAsync(namesOrFlags: string[] = []) { 46 if (!namesOrFlags.length) { 47 return this.installAsync(); 48 } 49 50 return this.runAsync(['add', '--global', ...namesOrFlags]); 51 } 52 53 removeAsync(namesOrFlags: string[]) { 54 return this.runAsync(['remove', ...namesOrFlags]); 55 } 56 57 removeDevAsync(namesOrFlags: string[]) { 58 return this.runAsync(['remove', ...namesOrFlags]); 59 } 60 61 removeGlobalAsync(namesOrFlags: string[]) { 62 return this.runAsync(['remove', '--global', ...namesOrFlags]); 63 } 64} 65