如何合理的更新vue2项目过期依赖?

安装依赖的时候,提示警告,有 38 个依赖过期了。

pnpm add axios@latest                 
 WARN  deprecated babel-eslint@7.2.3: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.
 WARN  deprecated @babel/polyfill@7.12.1: 🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.
 WARN  deprecated vue@2.6.10: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.
 WARN  38 deprecated subdependencies found: @babel/plugin-proposal-async-generator-functions@7.20.7, @babel/plugin-proposal-class-properties@7.18.6, @babel/plugin-proposal-json-strings@7.18.6, @babel/plugin-proposal-object-rest-spread@7.20.7, @babel/plugin-proposal-optional-catch-binding@7.18.6, @babel/plugin-proposal-unicode-property-regex@7.18.6, @hapi/address@2.1.4, @hapi/bourne@1.3.2, @hapi/hoek@8.5.1, @hapi/joi@15.1.1, @hapi/topo@3.1.6, acorn-dynamic-import@2.0.2, autoprefixer-loader@3.2.0, babel-eslint@10.1.0, browserslist@1.7.7, chokidar@2.1.8, circular-json@0.3.3, consolidate@0.14.5, consolidate@0.15.1, core-js@2.6.12, eslint-loader@2.2.1, extract-text-webpack-plugin@3.0.2, figgy-pudding@3.5.2, flatten@1.0.3, fsevents@1.2.13, har-validator@5.1.5, html-webpack-plugin@3.2.0, request-promise-native@1.0.9, request@2.88.2, resolve-url@0.2.1, source-map-resolve@0.5.3, source-map-url@0.4.1, stable@0.1.8, svgo@0.7.2, svgo@1.3.2, urix@0.1.0, uuid@3.4.0, webpack-chain@4.12.1
 WARN  Issues with peer dependencies found

这些依赖不确定新版本是否兼容当前项目,有些 babel 的插件废弃了,有些查看很久没有更新。有没有好的办法解决依赖过期的问题呢。

阅读 2.5k
avatarAI BotBETA

更新 Vue 2 项目的过期依赖需要谨慎处理,因为一些依赖项可能已经不再维护或与新版本不兼容。以下是一些建议来解决依赖过期的问题:

  1. 了解每个依赖项的影响

    • 查看每个过期依赖的文档或更新日志,了解它们为什么被废弃,以及是否有推荐的替代方案。
    • 注意检查依赖项之间的依赖关系,确保更新一个依赖项不会破坏其他依赖项的功能。
  2. 逐步更新

    • 不要一次性更新所有依赖项,而是应该逐个更新并测试每个依赖项。这样,你可以更容易地跟踪和解决任何出现的问题。
  3. 使用依赖管理工具

    • 如果你正在使用 pnpm,确保你正在使用最新版本的 pnpm,因为较新的版本可能能更好地处理依赖项解析和冲突。
    • 使用 pnpm outdated 命令来查看哪些依赖项可以更新。
  4. 测试更新

    • 在更新每个依赖项之后,确保运行项目的测试套件(如果有的话)来验证更新是否破坏了现有功能。
    • 在本地开发环境中进行充分的测试,以确保所有功能都按预期工作。
  5. 查看文档和社区

    • 查找 Vue 2 相关的文档和社区讨论,了解其他开发者是如何处理这些过期依赖的。
    • 如果某些依赖项不再维护,可能会有替代方案或建议的替代方法。
  6. 考虑升级 Vue 版本

    • 如果可能的话,考虑将 Vue 2 项目升级到 Vue 3。Vue 3 带来了许多改进和新特性,同时也有更好的维护支持。
    • 升级 Vue 版本可能需要更多的工作,因为它可能涉及到代码重构和更新,但长远来看,这通常是值得的。
  7. 寻求帮助

    • 如果在更新依赖项时遇到问题,不要犹豫在 Stack Overflow 或 Vue 社区中提问。其他开发者可能已经遇到了相同的问题,并愿意分享他们的解决方案。

最后,记得在更新依赖项之前备份项目,以防万一出现不可逆转的问题。更新依赖项是一个持续的过程,需要定期检查和更新以保持项目的健康和兼容性。

3 个回答

看你是否有大的升级计划。一般来说 x.y.z 的版本更新中,只要不更新大版本 x 就不会有问题。

一般很少会在已经部署到生产环境的项目去做升级,最多更新一下修订版本。除非有一些依赖项有严重的BUG才会考虑手动升级或者切换到新的替换包。
很多情况下我们的 package.json 中的各依赖版本也都会有 ^ 通配符,会 install 时会安装最大兼容版本。

npm版本号及更新规则


比如说OP你的这种情况出现了3个提示:

  1. babel-eslint 以及 @babel/polyfill 废弃告警,提示需要变更到新替代包的。可以 remove 旧包之后 install 新包来手动切换,但是需要注意配置的规则是不是变更。如果没有重大BUG或者你并没有使用新特性需求的话,你也可以不管。
  2. Vue@2x 版本进入已经到达终止支持 (EOL) 时间,如果你不准备升级到Vue3,那么就不需要官。

我的话会时不时使用 npm-check-updates 来查看更新的依赖列表,手动来选择需要更新的包。
在这个项目的README中,也有关于如何确定依赖项更新的解释 👉 #How dependency updates are determined

  1. 没有很好的办法,依赖管理大部分是体力活,所以建议做在平时。每周都升级一次,跟随正常的迭代做回归测试和发版,避免长时间不更新之后引发连锁反应。
  2. 现在建议单独立个项,花几天的时间把所有依赖都升级到最新版,并且解决期间发生的问题。
  3. 有些依赖不更新了,有些依赖没什么用了(比如合并到其它依赖或者框架),就直接干掉好了
新手上路,请多包涵

楼上其实都说得差不多了,但我更好奇一点,是遇到什么问题或者需求,需要这样子升级?

毕竟企业级的项目都是保稳为第一的,项目没出什么你不升级就解决不了的问题,一般依赖都不动了;或者说,你升级后对你或者项目本身提升了效率和稳定性有关,那在合适的人工天时下是没问题的。当然个人项目随便搞

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏