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

2021/07/06

背景

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

解决办法

    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
   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 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