nx/packages/create-nx-plugin/bin/detect-invoked-package-manager.ts
Linbudu 8945604c87
chore(core): use extrapolated ts type in create-nx-workspace & create… (#8452)
* chore(core): use extrapolated ts type in create-nx-workspace & create-nx-plugin

* chore(core): use extrapolated ts type in create-nx-workspace & create-nx-plugin

* fix(core): adjust package manager list order
2022-01-12 15:10:41 -05:00

33 lines
913 B
TypeScript

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;
}