48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.detectPackageManagerFromUserAgent = detectPackageManagerFromUserAgent;
|
|
exports.detectPackageManager = detectPackageManager;
|
|
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
function detectPackageManagerFromUserAgent() {
|
|
if ('npm_config_user_agent' in process.env) {
|
|
const ua = process.env['npm_config_user_agent'] ?? '';
|
|
if (ua.includes('pnpm'))
|
|
return 'pnpm';
|
|
if (ua.includes('yarn'))
|
|
return 'yarn';
|
|
if (ua.includes('npm'))
|
|
return 'npm';
|
|
}
|
|
return null;
|
|
}
|
|
async function detectPackageManagerFromLockFiles() {
|
|
const lockFiles = {
|
|
npm: 'package-lock.json',
|
|
yarn: 'yarn.lock',
|
|
pnpm: 'pnpm-lock.yaml',
|
|
};
|
|
for (const [pm, lockFile] of Object.entries(lockFiles)) {
|
|
try {
|
|
const stats = await promises_1.default.stat(lockFile);
|
|
if (stats.isFile()) {
|
|
return pm;
|
|
}
|
|
}
|
|
catch (e) {
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
async function detectPackageManager() {
|
|
const fromUserAgent = detectPackageManagerFromUserAgent();
|
|
if (fromUserAgent)
|
|
return fromUserAgent;
|
|
const fromLockFiles = await detectPackageManagerFromLockFiles();
|
|
if (fromLockFiles)
|
|
return fromLockFiles;
|
|
return null;
|
|
}
|
|
//# sourceMappingURL=package-manager.js.map
|