@nuofe/ndk-publish-tool
Version:
Publish tool for Nuo FE.
164 lines (118 loc) • 4.04 kB
JavaScript
;
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;