如何优雅的提示用户需要升级npm依赖包版本?

背景

某次更新@ckpack/vue-color时引入了严重bug,影响的版本是>=1.0.0,<=1.1.3,并在1.1.4中修复了该问题,问题来了,如何优雅的提示安装该包的人需要升级1.1.4版本呢?

解决办法

  • 首先想到的是百度、谷歌没有,但是找到🤷‍♂️
  • 哪就看看npm有哪些命令吧npm help
    access, adduser, audit, bin, bugs, cache, ci, completion,
    config, dedupe, deprecate, diff, dist-tag, docs, doctor,
    edit, exec, explain, explore, find-dupes, fund, get, help,
    hook, init, install, install-ci-test, install-test, link,
    ll, login, logout, ls, org, outdated, owner, pack, ping,
    pkg, prefix, profile, prune, publish, rebuild, repo,
    restart, root, run-script, search, set, set-script,
    shrinkwrap, star, stars, start, stop, team, test, token,
    uninstall, unpublish, unstar, update, version, view, whoami
  • 直觉告诉我用unpublishnpm help unpublish 试试, 帮助信息中有一句
   Warning
       Consider using the npm help deprecate command instead, if your intent is to encourage users to upgrade, or if you no longer want to maintain a package.

很明显直觉是不对的,这里npm告诉我们鼓励用户升级的话用deprecate命令

  • 看看deprecate是干什么的,npm help deprecate
Deprecate a version of a package

中文意思弃用包版本,用起来很简单npm deprecate my-thing@"< 0.2.3" "critical bug fixed in v0.2.3" 其中的版本只要是https://github.com/npm/node-semver#versions支持的均可以,

  • 声明弃用版本
npm deprecate @ckpack/vue-color@">=1.0.0 <=1.1.3" "Critical bug fixed in v1.1.4

声明弃用版本后npm做了什么

官网的变化

打开npm对应地址https://www.npmjs.com/package/@ckpack/vue-color

截屏2021-10-21 下午7.09.29.png 我们可以发现被声明弃用的版本被隐藏掉了,点击show deprecated versions后才会显示出来

如果我们安装弃用的版本呢?

{
  "dependencies": {
    "@ckpack/vue-color": "^1.1.3",
  },
}

yarn install没有任何变化,命令行也没有任何提醒??不是吧 那我声明弃用版本有什么用呢?别急,我们打开node_modules 对应的包看看,果然package.json中对应的版本是"version": "1.1.4",这是由于"@ckpack/vue-color": "^1.1.3", 其中^version是与版本兼容的意思,我们试试

{
  "dependencies": {
    "@ckpack/vue-color": "1.1.3",
  },
}

果然命令行中出现了警告warning @ckpack/vue-color@1.1.3: Critical bug fixed in v1.1.4 此时npm自动不会升级版本,我们安装的版本就是1.1.3