what-pm
Version:
Detects what package manager was used for installation
167 lines (162 loc) • 3.9 kB
JavaScript
import { isAbsolute, join } from 'path';
import { existsSync } from 'fs';
import findUp from 'find-up';
import { pmInfoSync, pmInfo } from 'pm-info';
import { workspaceRootSync, workspaceRoot } from 'workspace-root';
function asyncGeneratorStep(n, t, e, r, o, a, c) {
try {
var i = n[a](c),
u = i.value;
} catch (n) {
return void e(n);
}
i.done ? t(u) : Promise.resolve(u).then(r, o);
}
function _asyncToGenerator(n) {
return function () {
var t = this,
e = arguments;
return new Promise(function (r, o) {
var a = n.apply(t, e);
function _next(n) {
asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
}
function _throw(n) {
asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
}
_next(void 0);
});
};
}
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
var cwd = process.cwd();
function whatPM(_x) {
return _whatPM.apply(this, arguments);
}
function _whatPM() {
_whatPM = _asyncToGenerator(function* (pkgPath) {
if (typeof pkgPath !== "string") {
throw new TypeError("pkgPath should be a string, got ".concat(_typeof(pkgPath)));
}
if (!isAbsolute(pkgPath))
pkgPath = join(cwd, pkgPath);
var isWorkspace = !!(yield workspaceRoot(pkgPath));
if (existsSync(join(pkgPath, "package-lock.json"))) {
return {
name: "npm",
version: ">=5",
isWorkspace
};
}
if (existsSync(join(pkgPath, "yarn.lock"))) {
return {
name: "yarn",
version: "*",
isWorkspace
};
}
if (existsSync(join(pkgPath, "pnpm-lock.yaml"))) {
return {
name: "pnpm",
version: ">=3",
isWorkspace
};
}
if (existsSync(join(pkgPath, "shrinkwrap.yaml"))) {
return {
name: "pnpm",
version: "1 || 2",
isWorkspace
};
}
if (yield findUp("pnpm-lock.yaml", {
cwd: pkgPath
})) {
return {
name: "pnpm",
version: ">=3",
isWorkspace
};
}
if (existsSync(join(pkgPath, "bun.lockb"))) {
return {
name: "bun",
version: "*",
isWorkspace
};
}
var pm = yield pmInfo(pkgPath);
return pm && {
name: pm.name,
version: pm.version || "*",
isWorkspace
};
});
return _whatPM.apply(this, arguments);
}
function whatPMSync(pkgPath) {
if (typeof pkgPath !== "string") {
throw new TypeError("pkgPath should be a string, got ".concat(_typeof(pkgPath)));
}
if (!isAbsolute(pkgPath))
pkgPath = join(cwd, pkgPath);
var isWorkspace = !!workspaceRootSync(pkgPath);
if (existsSync(join(pkgPath, "package-lock.json"))) {
return {
name: "npm",
version: ">=5",
isWorkspace
};
}
if (existsSync(join(pkgPath, "yarn.lock"))) {
return {
name: "yarn",
version: "*",
isWorkspace
};
}
if (existsSync(join(pkgPath, "pnpm-lock.yaml"))) {
return {
name: "pnpm",
version: ">=3",
isWorkspace
};
}
if (existsSync(join(pkgPath, "shrinkwrap.yaml"))) {
return {
name: "pnpm",
version: "1 || 2",
isWorkspace
};
}
if (existsSync(join(pkgPath, "bun.lockb"))) {
return {
name: "bun",
version: "*",
isWorkspace
};
}
if (findUp.sync("pnpm-lock.yaml", {
cwd: pkgPath
})) {
return {
name: "pnpm",
version: ">=3",
isWorkspace
};
}
var pm = pmInfoSync(pkgPath);
return pm && {
name: pm.name,
version: pm.version || "*",
isWorkspace
};
}
export { whatPM, whatPMSync };