sharechat-setup
Version:
A generic cli to setup mundane node tasks
29 lines (26 loc) • 843 B
text/typescript
export enum PackageManager {
npm ="npm",
yarn = "yarn",
pnpm = "pnpm"
}
export const InstallationDependenciesMap: Record<PackageManager,(arg:string)=>string>= {
npm:(command:string)=>`npm i -D ${command}`,
yarn:(command:string)=>`yarn add -D ${command}`,
pnpm:(command:string)=>`pnpm i -D ${command}`
} as const
export const getUserPkgManager: () => PackageManager = () => {
// This environment variable is set by npm and yarn but pnpm seems less consistent
const userAgent = process.env.npm_config_user_agent;
if (userAgent) {
if (userAgent.startsWith("yarn")) {
return PackageManager.yarn
} else if (userAgent.startsWith("pnpm")) {
return PackageManager.pnpm
} else {
return PackageManager.npm
}
} else {
// If no user agent is set, assume npm
return PackageManager.npm
}
};