what-pm
Version:
Detects what package manager was used for installation
170 lines (164 loc) • 4.04 kB
JavaScript
;
var path = require('path');
var fs = require('fs');
var findUp = require('find-up');
var pmInfo = require('pm-info');
var workspaceRoot = require('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 (!path.isAbsolute(pkgPath))
pkgPath = path.join(cwd, pkgPath);
var isWorkspace = !!(yield workspaceRoot.workspaceRoot(pkgPath));
if (fs.existsSync(path.join(pkgPath, "package-lock.json"))) {
return {
name: "npm",
version: ">=5",
isWorkspace
};
}
if (fs.existsSync(path.join(pkgPath, "yarn.lock"))) {
return {
name: "yarn",
version: "*",
isWorkspace
};
}
if (fs.existsSync(path.join(pkgPath, "pnpm-lock.yaml"))) {
return {
name: "pnpm",
version: ">=3",
isWorkspace
};
}
if (fs.existsSync(path.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 (fs.existsSync(path.join(pkgPath, "bun.lockb"))) {
return {
name: "bun",
version: "*",
isWorkspace
};
}
var pm = yield pmInfo.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 (!path.isAbsolute(pkgPath))
pkgPath = path.join(cwd, pkgPath);
var isWorkspace = !!workspaceRoot.workspaceRootSync(pkgPath);
if (fs.existsSync(path.join(pkgPath, "package-lock.json"))) {
return {
name: "npm",
version: ">=5",
isWorkspace
};
}
if (fs.existsSync(path.join(pkgPath, "yarn.lock"))) {
return {
name: "yarn",
version: "*",
isWorkspace
};
}
if (fs.existsSync(path.join(pkgPath, "pnpm-lock.yaml"))) {
return {
name: "pnpm",
version: ">=3",
isWorkspace
};
}
if (fs.existsSync(path.join(pkgPath, "shrinkwrap.yaml"))) {
return {
name: "pnpm",
version: "1 || 2",
isWorkspace
};
}
if (fs.existsSync(path.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 = pmInfo.pmInfoSync(pkgPath);
return pm && {
name: pm.name,
version: pm.version || "*",
isWorkspace
};
}
exports.whatPM = whatPM;
exports.whatPMSync = whatPMSync;