UNPKG

@gdjiami/cli

Version:

CLI for build front end project.

89 lines (88 loc) 3.55 kB
"use strict"; 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;