UNPKG

@wdio/cli

Version:
40 lines (39 loc) 1.29 kB
import { execa } from 'execa'; // @ts-expect-error // @ts-expect-error https://github.com/egoist/detect-package-manager/pull/6 import { detect } from 'detect-package-manager'; const installCommand = { npm: 'install', pnpm: 'add', yarn: 'add', bun: 'install' }; const devFlag = { npm: '--save-dev', pnpm: '--save-dev', yarn: '--dev', bun: '--dev' }; export async function installPackages(cwd, packages, dev) { const pm = await detect({ cwd }); const devParam = dev ? devFlag[pm] : ''; console.log('\n'); const p = execa(pm, [installCommand[pm], ...packages, devParam], { cwd, stdout: process.stdout, stderr: process.stderr }); const { stdout, stderr, exitCode } = await p; if (exitCode !== 0) { const cmd = getInstallCommand(pm, packages, dev); const customError = ('⚠️ An unknown error happened! Please retry ' + `installing dependencies via "${cmd}"\n\n` + `Error: ${stderr || stdout || 'unknown'}`); console.error(customError); return false; } return true; } export function getInstallCommand(pm, packages, dev) { const devParam = dev ? devFlag[pm] : ''; return `${pm} ${installCommand[pm]} ${packages.join(' ')} ${devParam}`; }