libyear
Version:
A simple measure of software dependency freshness
29 lines (28 loc) • 911 B
JavaScript
import * as path from "node:path";
import { execaCommand } from "execa";
import { default as semver } from "semver";
const { satisfies } = semver;
export const getParsedPackageManager = (packageManager) => {
switch (packageManager) {
case "berry":
case "npm":
case "pnpm":
case "yarn":
return packageManager;
default:
return "npm";
}
};
export const getInferredPackageManager = async () => {
const packageManager = path.basename(process.env.npm_execpath || "npm");
if (packageManager.startsWith("yarn")) {
const { stdout } = await execaCommand("yarn --version");
return satisfies(stdout, "^0 || ^1") ? "yarn" : "berry";
}
else if (packageManager.startsWith("pnpm")) {
return Promise.resolve("pnpm");
}
else {
return Promise.resolve(getParsedPackageManager(packageManager));
}
};