UNPKG

@nuofe/ndk-publish-tool

Version:
164 lines (118 loc) 4.04 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ndkCommitTool = _interopRequireDefault(require("@nuofe/ndk-commit-tool")); var _ndkLogger = _interopRequireDefault(require("@nuofe/ndk-logger")); var _ndkPackage = _interopRequireDefault(require("@nuofe/ndk-package")); var _inquirer = _interopRequireDefault(require("inquirer")); var _latestVersion = _interopRequireDefault(require("latest-version")); var _semver = _interopRequireDefault(require("semver")); const { prompt } = _inquirer.default; const debug = _ndkLogger.default.debug('ndk-publish-tool:version:check'); const createVersion = async () => { const { version } = await prompt({ type: 'input', name: 'version', message: '请输入待发布的版本号:', default: '0.1.0', validate: value => !_semver.default.valid(value) ? '版本号不符合要求,请重新输入!' : true }); return version; }; const updateVersion = async version => { if (!_semver.default.valid(version)) { throw new Error(`${version} is not valid version.`); } const versionMap = { z: 'patch', y: 'minor', x: 'major' }; const { updateType } = await prompt({ type: 'list', name: 'updateType', message: '请选择版本号升级方式:', choices: Object.keys(versionMap).map(item => ({ name: `升级版本号 ${item} 位`, value: item })) }); return _semver.default.inc(version, versionMap[updateType]) || 'invalid'; }; var _default = async options => { const { package: pkg, spinner } = options; const { name, version } = pkg; const npmVersion = await (0, _latestVersion.default)(name).catch(error => { debug('error: %o', error); if (!['PackageNotFoundError', 'VersionNotFoundError'].includes(error.name)) { spinner.stop(); console.error(error); _ndkLogger.default.logEmpty(); _ndkLogger.default.logError('[i] 获取最新版本失败,请检查网络或稍后再试。'); _ndkLogger.default.logEmpty(); process.exit(1); } return ''; }); let newVersion; debug('npmVersion: %s', npmVersion); spinner.stop(); if (npmVersion) { _ndkLogger.default.logTip('最新版本:'); _ndkLogger.default.logText(npmVersion); _ndkLogger.default.logEmpty(); _ndkLogger.default.logTip('当前版本:'); _ndkLogger.default.logText(version); _ndkLogger.default.logEmpty(); if (_semver.default.valid(version) && _semver.default.gt(version, npmVersion)) { newVersion = version; } else { _ndkLogger.default.logWarning('[i] 当前版本需要大于最新版本。'); _ndkLogger.default.logEmpty(); _ndkLogger.default.logHint('> Generate New Version...'); newVersion = await updateVersion(npmVersion); _ndkLogger.default.logTip(newVersion); _ndkLogger.default.logEmpty(); } } else { _ndkLogger.default.logTip('最新版本:'); _ndkLogger.default.logText(`${name} 包尚未发布`); _ndkLogger.default.logEmpty(); _ndkLogger.default.logTip('当前版本:'); _ndkLogger.default.logText(version); _ndkLogger.default.logEmpty(); if (_semver.default.valid(version)) { newVersion = version; } else { _ndkLogger.default.logWarning('[i] 当前版本不符合版本号要求。'); _ndkLogger.default.logEmpty(); _ndkLogger.default.logHint('> Generate New Version...'); newVersion = await createVersion(); _ndkLogger.default.logTip(newVersion); _ndkLogger.default.logEmpty(); } } debug('newVersion: %s', newVersion); spinner.start(); if (newVersion !== version) { pkg.version = newVersion; await _ndkPackage.default.update(options, false); await _ndkCommitTool.default.commit(options, `chore: update version to ${newVersion}.`); } }; exports.default = _default;