我用 Node JS 编写了一个 CLI 工具并发布到NPM https://www.npmjs.com/package/rapid-react。每次在终端中运行时,我都需要通知用户可用的新版本及其类型(补丁|次要|主要),以便他/她可以相应地更新它。我怎样才能实现这个?
此外,是否可以询问用户是否愿意自行更新软件包?
A new version of Rapid React is available. Would you like to update it now?(Y\n)
版本更新检查:
我建议使用更新通知程序 https://www.npmjs.com/package/update-notifier但奇怪的是它不起作用。所以,我选择自己来承担这项工作。
可以使用以下命令轻松检查最新版本包-json https://www.npmjs.com/package/package-json它从 npm 注册表中获取包的元数据。或者最新版本 https://www.npmjs.com/package/latest-version也可以使用它使用包-json在引擎盖下。
import boxen from 'boxen';
import chalk from 'chalk';
import semver from 'semver';
import pkgJson from 'package-json';
import semverDiff from 'semver-diff';
import { capitalizeFirstLetter } from '../utils';
import { name, version } from '../../package.json';
const checkUpdate = async () => {
const { version: latestVersion } = await pkgJson(name);
// check if local package version is less than the remote version
const updateAvailable = semver.lt(version, latestVersion as string);
if (updateAvailable) {
let updateType = '';
// check the type of version difference which is usually patch, minor, major etc.
let verDiff = semverDiff(version, latestVersion as string);
if (verDiff) {
updateType = capitalizeFirstLetter(verDiff);
}
const msg = {
updateAvailable: `${updateType} update available ${chalk.dim(version)} → ${chalk.green(latestVersion)}`,
runUpdate: `Run ${chalk.cyan(`npm i -g ${name}`)} to update`,
};
// notify the user about the available udpate
console.log(boxen(`${msg.updateAvailable}\n${msg.runUpdate}`, {
margin: 1,
padding: 1,
align: 'center',
}));
}
};
更新通知:
每次该工具运行时,如果有可用更新,用户都会看到这样的通知。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)