[英]How to notify NPM package version update to user?
我在 Node JS 中編寫了一個 CLI 工具並發布到NPM 。 每次在終端中運行時,我都需要通知用戶可用的新版本及其類型(補丁 | 次要 | 主要),以便他/她可以相應地更新它。 我該如何實施?
此外,是否可以詢問用戶是否希望 package 自行更新?
A new version of Rapid React is available. Would you like to update it now?(Y\n)
我建議使用update-notifier但奇怪的是它不起作用。 所以,我選擇自己來處理這項工作。
可以使用package-json輕松檢查最新版本,該 package-json 從 npm 注冊表中獲取 package 的元數據。 或者,也可以使用最新版本,它在后台使用package-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',
}));
}
};
每次工具運行時,如果有可用更新,用戶都會看到這樣的通知。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.