const packageManagerList = ['pnpm', 'yarn', 'npm'] as const; export type PackageManager = typeof packageManagerList[number]; /** * Detects which package manager was used to invoke create-nx-{plugin|workspace} command * based on the main Module process that invokes the command * - npx returns 'npm' * - pnpx returns 'pnpm' * - yarn create returns 'yarn' * * Default to 'npm' */ export function detectInvokedPackageManager(): PackageManager { let detectedPackageManager: PackageManager = 'npm'; // mainModule is deprecated since Node 14, fallback for older versions const invoker = require.main || process['mainModule']; // default to `npm` if (!invoker) { return detectedPackageManager; } for (const pkgManager of packageManagerList) { if (invoker.path.includes(pkgManager)) { detectedPackageManager = pkgManager; break; } } return detectedPackageManager; }