@gdjiami/cli
Version:
CLI for build front end project.
89 lines (88 loc) • 3.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getLocalVersion = exports.getNpmGlobalInstallPackages = exports.getYarnGlobalInstallPackages = exports.getUpgradableVersion = exports.getMaxSatisfying = void 0;
var tslib_1 = require("tslib");
/**
* upgrade services
*/
var child_process_1 = require("child_process");
var fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
var semver_1 = tslib_1.__importDefault(require("semver"));
var chalk_1 = tslib_1.__importDefault(require("chalk"));
var path_1 = tslib_1.__importDefault(require("path"));
function getMaxSatisfying(packageName, range) {
var version = JSON.parse(child_process_1.execSync("npm view \"" + packageName + "@" + range + "\" version --json").toString());
if (Array.isArray(version)) {
version = version.sort(semver_1.default.compare)[version.length - 1];
}
return version;
}
exports.getMaxSatisfying = getMaxSatisfying;
/**
*
* @param packageName
* @param verison sepecific version
* @param semverLevel
*/
function getUpgradableVersion(packageName, verison, semverLevel) {
var newRange;
var upgradable;
var newMaxVersion;
if (semverLevel === 'patch') {
newRange = "~" + verison;
newMaxVersion = getMaxSatisfying(packageName, newRange);
newRange = "~" + newMaxVersion;
}
else if (semverLevel === 'minor') {
newRange = "^" + verison;
newMaxVersion = getMaxSatisfying(packageName, newRange);
newRange = "^" + newMaxVersion;
}
else {
newMaxVersion = getMaxSatisfying(packageName, 'latest');
newRange = "^" + newMaxVersion;
}
upgradable = newMaxVersion !== verison;
return [newRange, upgradable, newMaxVersion];
}
exports.getUpgradableVersion = getUpgradableVersion;
function getYarnGlobalInstallPackages() {
var list = {};
child_process_1.execSync('yarn global list -s --json --no-progress')
.toString()
.split('\n')
.map(function (info) { return (info.trim() === '' ? {} : JSON.parse(info)); })
.filter(function (i) { return i.type === 'info'; })
.forEach(function (i) {
var matched = i.data.match(/^"(.*)@(.*)"/);
if (matched) {
list[matched[1]] = matched[2];
}
});
return list;
}
exports.getYarnGlobalInstallPackages = getYarnGlobalInstallPackages;
function getNpmGlobalInstallPackages() {
var list = {};
var data = JSON.parse(child_process_1.execSync('npm list -g --depth=0 --json').toString());
Object.keys(data.dependencies).forEach(function (key) {
list[key] = data.dependencies[key].version;
});
return list;
}
exports.getNpmGlobalInstallPackages = getNpmGlobalInstallPackages;
function getLocalVersion(name) {
var packagePath = path_1.default.join(process.cwd(), 'package.json');
if (!fs_extra_1.default.existsSync(packagePath)) {
throw new Error('package.json not existed in current directory.');
}
else {
var pkg = fs_extra_1.default.readJsonSync(packagePath);
if (pkg.devDependencies == null || !(name in pkg.devDependencies)) {
throw new Error(chalk_1.default.cyan(name) + " not installded on local project");
}
var ownPkgPath = path_1.default.join(process.cwd(), 'node_modules', name, 'package.json');
return fs_extra_1.default.readJSONSync(ownPkgPath).version;
}
}
exports.getLocalVersion = getLocalVersion;