(
packageToInstall: string[],
options: {
packageManager?: PackageManager
silent?: boolean
dev?: boolean
} = {}
)
| 78 | } |
| 79 | |
| 80 | export function installPackages( |
| 81 | packageToInstall: string[], |
| 82 | options: { |
| 83 | packageManager?: PackageManager |
| 84 | silent?: boolean |
| 85 | dev?: boolean |
| 86 | } = {} |
| 87 | ) { |
| 88 | if (packageToInstall.length === 0) return |
| 89 | |
| 90 | const { |
| 91 | packageManager = getPkgManager(process.cwd()), |
| 92 | silent = false, |
| 93 | dev = false, |
| 94 | } = options |
| 95 | |
| 96 | if (!packageManager) throw new Error('Failed to find package manager') |
| 97 | |
| 98 | const addCmd = ADD_CMD_FLAG[packageManager] |
| 99 | const devDepFlag = dev ? DEV_DEP_FLAG[packageManager] : undefined |
| 100 | |
| 101 | const installFlags = [addCmd] |
| 102 | if (devDepFlag) { |
| 103 | installFlags.push(devDepFlag) |
| 104 | } |
| 105 | try { |
| 106 | execa.sync(packageManager, [...installFlags, ...packageToInstall], { |
| 107 | // Keeping stderr since it'll likely be relevant later when it fails. |
| 108 | stdio: silent ? ['ignore', 'ignore', 'inherit'] : 'inherit', |
| 109 | shell: true, |
| 110 | }) |
| 111 | } catch (error) { |
| 112 | throw new Error( |
| 113 | `Failed to install "${packageToInstall}". Please install it manually.`, |
| 114 | { cause: error } |
| 115 | ) |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | export function runInstallation( |
| 120 | packageManager: PackageManager, |
no test coverage detected