* 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
33 lines
913 B
TypeScript
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;
|
|
}
|