1*8a424bebSJames Ideimport { BasePackageManager } from './BasePackageManager'; 28d3f3824SCedric van Puttenimport env from '../utils/env'; 38d3f3824SCedric van Puttenimport { findPnpmWorkspaceRoot, PNPM_LOCK_FILE } from '../utils/nodeWorkspaces'; 48d3f3824SCedric van Putten 58d3f3824SCedric van Puttenexport class PnpmPackageManager extends BasePackageManager { 68d3f3824SCedric van Putten readonly name = 'pnpm'; 78d3f3824SCedric van Putten readonly bin = 'pnpm'; 88d3f3824SCedric van Putten readonly lockFile = PNPM_LOCK_FILE; 98d3f3824SCedric van Putten 108d3f3824SCedric van Putten workspaceRoot() { 118d3f3824SCedric van Putten const root = findPnpmWorkspaceRoot(this.ensureCwdDefined('workspaceRoot')); 128d3f3824SCedric van Putten if (root) { 138d3f3824SCedric van Putten return new PnpmPackageManager({ 148d3f3824SCedric van Putten ...this.options, 158d3f3824SCedric van Putten silent: this.silent, 168d3f3824SCedric van Putten log: this.log, 178d3f3824SCedric van Putten cwd: root, 188d3f3824SCedric van Putten }); 198d3f3824SCedric van Putten } 208d3f3824SCedric van Putten 218d3f3824SCedric van Putten return null; 228d3f3824SCedric van Putten } 238d3f3824SCedric van Putten 248d3f3824SCedric van Putten installAsync(namesOrFlags: string[] = []) { 258d3f3824SCedric van Putten if (env.CI && !namesOrFlags.join(' ').includes('frozen-lockfile')) { 268d3f3824SCedric van Putten namesOrFlags.unshift('--no-frozen-lockfile'); 278d3f3824SCedric van Putten } 288d3f3824SCedric van Putten 298d3f3824SCedric van Putten return this.runAsync(['install', ...namesOrFlags]); 308d3f3824SCedric van Putten } 318d3f3824SCedric van Putten 328d3f3824SCedric van Putten addAsync(namesOrFlags: string[] = []) { 338d3f3824SCedric van Putten if (!namesOrFlags.length) { 348d3f3824SCedric van Putten return this.installAsync(); 358d3f3824SCedric van Putten } 368d3f3824SCedric van Putten 378d3f3824SCedric van Putten return this.runAsync(['add', ...namesOrFlags]); 388d3f3824SCedric van Putten } 398d3f3824SCedric van Putten 408d3f3824SCedric van Putten addDevAsync(namesOrFlags: string[] = []) { 418d3f3824SCedric van Putten if (!namesOrFlags.length) { 428d3f3824SCedric van Putten return this.installAsync(); 438d3f3824SCedric van Putten } 448d3f3824SCedric van Putten 458d3f3824SCedric van Putten return this.runAsync(['add', '--save-dev', ...namesOrFlags]); 468d3f3824SCedric van Putten } 478d3f3824SCedric van Putten 488d3f3824SCedric van Putten addGlobalAsync(namesOrFlags: string[] = []) { 498d3f3824SCedric van Putten if (!namesOrFlags.length) { 508d3f3824SCedric van Putten return this.installAsync(); 518d3f3824SCedric van Putten } 528d3f3824SCedric van Putten 538d3f3824SCedric van Putten return this.runAsync(['add', '--global', ...namesOrFlags]); 548d3f3824SCedric van Putten } 558d3f3824SCedric van Putten 568d3f3824SCedric van Putten removeAsync(namesOrFlags: string[]) { 578d3f3824SCedric van Putten return this.runAsync(['remove', ...namesOrFlags]); 588d3f3824SCedric van Putten } 598d3f3824SCedric van Putten 608d3f3824SCedric van Putten removeDevAsync(namesOrFlags: string[]) { 618d3f3824SCedric van Putten return this.runAsync(['remove', '--save-dev', ...namesOrFlags]); 628d3f3824SCedric van Putten } 638d3f3824SCedric van Putten 648d3f3824SCedric van Putten removeGlobalAsync(namesOrFlags: string[]) { 658d3f3824SCedric van Putten return this.runAsync(['remove', '--global', ...namesOrFlags]); 668d3f3824SCedric van Putten } 678d3f3824SCedric van Putten} 68