pm-info
Version:
A simple utility to get the package manager information which used in the project
110 lines (105 loc) • 3.03 kB
JavaScript
;
var path = require('path');
var fs = require('fs');
var loadYml = require('load-yml');
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);
});
};
}
var PACKAGE_LOCK_FILE = "package-lock.json";
var YARN_INTEGRITY_FILE = ".yarn-integrity";
var MODULES_YAML_FILE = ".modules.yaml";
var RECENTLY_UPDATES_FILE = ".recently_updates.txt";
function pmInfo() {
return _pmInfo.apply(this, arguments);
}
function _pmInfo() {
_pmInfo = _asyncToGenerator(function* () {
var cwd = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : process.cwd();
var NODE_MODULES_PATH = path.join(cwd, "node_modules");
if (fs.existsSync(path.join(NODE_MODULES_PATH, YARN_INTEGRITY_FILE)))
return {
name: "yarn"
};
if (fs.existsSync(path.join(NODE_MODULES_PATH, RECENTLY_UPDATES_FILE)))
return {
name: "cnpm"
};
try {
var modules = yield loadYml.loadYml(path.join(NODE_MODULES_PATH, MODULES_YAML_FILE));
return modules ? normalizePMSpec(modules.packageManager) : null;
} catch (err) {
if (err.code !== "ENOENT")
throw err;
}
if (fs.existsSync(NODE_MODULES_PATH) || fs.existsSync(path.join(cwd, PACKAGE_LOCK_FILE)))
return {
name: "npm"
};
return null;
});
return _pmInfo.apply(this, arguments);
}
function pmInfoSync() {
var cwd = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : process.cwd();
var NODE_MODULES_PATH = path.join(cwd, "node_modules");
if (fs.existsSync(path.join(NODE_MODULES_PATH, YARN_INTEGRITY_FILE)))
return {
name: "yarn"
};
if (fs.existsSync(path.join(NODE_MODULES_PATH, RECENTLY_UPDATES_FILE)))
return {
name: "cnpm"
};
try {
var modules = loadYml.loadYmlSync(path.join(NODE_MODULES_PATH, MODULES_YAML_FILE));
return modules ? normalizePMSpec(modules.packageManager) : null;
} catch (err) {
if (err.code !== "ENOENT")
throw err;
}
if (fs.existsSync(NODE_MODULES_PATH) || fs.existsSync(path.join(cwd, PACKAGE_LOCK_FILE)))
return {
name: "npm"
};
return null;
}
function normalizePMSpec(pm) {
if (pm[0] === "@") {
var woPrefix = pm.slice(1);
var _parts = woPrefix.split("@");
return {
name: "@".concat(_parts[0]),
version: _parts[1]
};
}
var parts = pm.split("@");
return {
name: parts[0],
version: parts[1]
};
}
exports.normalizePMSpec = normalizePMSpec;
exports.pmInfo = pmInfo;
exports.pmInfoSync = pmInfoSync;