nhb-scripts
Version:
A collection of Node.js scripts to use in TypeScript & JavaScript projects
41 lines (36 loc) • 1.33 kB
JavaScript
// @ts-check
import { execa } from 'execa';
import path from 'path';
import { detectPackageManager } from './detect-package-manager.mjs';
import { isValidArray } from 'nhb-toolbox';
/**
* * Install dependencies with the chosen package manager
* @param {string[]} deps
* @param {string[]} devDeps
*/
export async function installDeps(deps, devDeps) {
const pkgMgr = detectPackageManager();
/** @type {import('execa').Options} */
const options = { cwd: process.cwd(), stdout: 'inherit', stderr: 'inherit' };
switch (pkgMgr) {
case 'pnpm':
isValidArray(deps) && (await execa('pnpm', ['add', ...deps], options));
isValidArray(devDeps) && (await execa('pnpm', ['add', '-D', ...devDeps], options));
break;
case 'npm':
isValidArray(deps) &&
(await execa('npm', ['install', '--progress', ...deps], options));
isValidArray(devDeps) &&
(await execa('npm', ['install', '--progress', '-D', ...devDeps], options));
break;
case 'yarn':
isValidArray(deps) && (await execa('yarn', ['add', ...deps], options));
isValidArray(devDeps) &&
(await execa('yarn', ['add', '--dev', ...devDeps], options));
break;
case 'bun':
isValidArray(deps) && (await execa('bun', ['add', ...deps], options));
isValidArray(devDeps) && (await execa('bun', ['add', '-d', ...devDeps], options));
break;
}
}