NPM 是什么?

Node 软件包管理器(NPM)提供了各种功能来帮助你安装和维护项目的依赖关系。

由于错误修复、新功能和其他更新,依赖关系可能会随着时间的推移而变得过时。你的项目依赖越多,就越难跟上这些更新。

老旧的软件包会对安全构成威胁,并会对性能产生负面影响。最新的软件包可以防止出现漏洞。这意味着定期检查和更新依赖是很重要的。

如何保持依赖是最新的

现在,你可以逐一查看 package.json 中的每一个单独的包,改变版本,然后运行 npm install <package>@latest 来获得最新版本。但这并不是最有效的方法。

想象一下,如果你有 20 个或更多的包,可以使用版本升级。相反,你应该制定一个工作流程,在过期的依赖关系数量增加和升级变得越来越难之前,定期检查新版本。

下面是一个我保持更新的工作流程:首先,发现哪些软件包需要更新,以及版本落后的程度。接下来,选择单独或一起批量更新软件包。始终对更新进行测试,以确保没有发生破坏性变化。

我更喜欢单独执行主要版本的更新。对于主要的更新,你很可能会遇到破坏性的变化。与许多包相比,撤销或处理与一个包有关的代码变化要容易得多。

在这篇文章中,我将详细介绍检查和升级依赖关系的方法。

怎样使用 npm outdated 命令

npm outdated

该命令将检查每个已安装的依赖关系,并将当前版本与 npm registry 中的最新版本进行比较。它在终端打印出一个表格,概述了可用的版本。

它是内置在 NPM 中的,所以不需要下载额外的软件包。npm outdated 是一个很好的开始,可以了解所需的依赖性更新的数量。

  • Current 是当前安装的版本。
  • Wanted 是根据semver 范围内的软件包的最大版本。
  • Latest 是在 npm registry 中被标记为最新的软件包版本。

使用这种方法,要安装每个软件包的更新,你只需要运行:

npm update

请记住,使用 npm update 它永远不会更新到一个主要的(major),具有破坏性变化的版本。它更新 package.jsonpackage-lock.json 中的依赖关系。它将使用想要的版本。

为了获得 "最新 "的版本,在单个安装中附加 @latest,例如 npm install react@latest

怎样使用 npm-check-updates

对于高级和可定制的升级体验,我推荐 npm-check-updates。这个包可以做所有 npm oudatednpm upgrade 能做的事情,并增加了一些自定义选项。不过,它确实需要安装一个包。

点击打开文档

要开始使用,请在全局安装 npm-check-updates 软件包:

npm install -g npm-check-updates

然后,运行 ncu 来显示要升级的软件包。与 npm outdated 类似,它不会产生任何变化。

ncu
Checking package.json
[====================] 12/12 100% @testing-library/user-event ^13.5.0 → ^14.2.1
@types/jest ^27.5.2 → ^28.1.4
@types/node ^16.11.42 → ^18.0.1 Run ncu -u to upgrade package.json

要升级依赖性,你只需要运行:

ncu --upgrade

// or
ncu -u

资料:npm-check-updates

  • Red (显示红色) = major (主版本,或者说是大版本)
  • Cyan (显示青色) = minor(次要版本)
  • Green(显示绿色) = patch (补丁版本)

这个方法只更新 package.json 文件中的依赖关系,并且会选择最新的版本,即使它包括一个破坏性的变化。使用这种方法,npm install 不会自动运行,所以一定要在之后运行它来更新 package-lock.json

要选择你喜欢的版本类型,运行 ncu --target [patch, minor, latest, newest, greatest]

如何使用 npm-check-updates 互动模式

ncu --interactive

// or
ncu -i

互动模式允许你选择特定的软件包进行更新。默认情况下,所有软件包都被选中。

向下浏览每一个软件包,用空格来取消选择,当你准备好升级所有选择的软件包时,回车键(enter)确定。

资料: npm-check-updates

有几种方法可以提升交互式 npm-check-updates 的体验。

ncu --interactive --format group

这个命令将软件包分组并组织成 主版本(major)、次要(minor)和补丁(patch)版本。

资料: npm-check-updates

npm-check-updates 提供了其他有用的工具,如 doctor mode,它可以安装升级并运行测试以检查破坏性变化。

总结

养成定期更新你的依赖关系的习惯,将有助于你的应用程序的安全性和性能。

npm oudatednpm-check-updates 都是有用的工具,可以检查那些可以使用版本升级的软件包。

https://www.freecodecamp.org/chinese/news/how-to-update-npm-dependencies/

npm 如何更新项目最新依赖包的更多相关文章

  1. git克隆项目到本地&&全局安装依赖项目&&安装依赖包&&启动服务

     一.安装本地开发环境 1.安装本项目 在需要保存到本地的项目的文件夹,进入到文件夹里点击右键,bash here,出现下图: 2.安装依赖项目  3.安装依赖包(进入到命令行) # 安装依赖包 $ ...

  2. 项目的依赖包(node_modules)删除

    快速删除依赖包一共分为三部 1.打开命令行(管理员身份),执行 npm i -g npkill 2.cd 进入到想删除的项目中,执行 npkill 3.执行完成会进入到npkill页面,等待搜索完成, ...

  3. 使用pipenv隔离不同项目的依赖包

    pipenv可以为不同的路径创建python环境和依赖包,结合pyenv可以达到为不同项目使用不同python版本,不同依赖包的目的. pip install pipenv #安装pipenv 使用p ...

  4. Linux下离线安装python项目的依赖包

    第一步新建一个site-packages文件夹,把python项目有需要的依赖包名称导出到site-packages下的requirements.txt中 $ pip3 freeze > req ...

  5. Django项目 生成依赖包

    生成依赖包文件 requirements.txt,最好用 pip3, 如果有 python2 的话会默认使用 py2 的 pip pip3 -r freeze > requirements.tx ...

  6. 【npm start 启动失败】ubuntu 将node和npm同时更新到最新的稳定版本

    https://blog.csdn.net/u010277553/article/details/80938829 npm start 启动失败,报错如下 错误提示 make sure you hav ...

  7. 更新python的依赖包,亲测!

    输入pip install --upgrade pandas 无需卸载,让它自己更新就好 pandas可以改成别的包

  8. Composer项目安装依赖包

    说明:一般用Composer的项目中,目录下都有一个composer.json文件,安装这些依赖,只需要输入命令即可 步骤: cmd进入项目目录,运行命令即可 composer install 文章参 ...

  9. android studio中为项目添加依赖包的方法

    右键项目,Open Module Settings 打开后选择Dependencies选项卡,点最右边的加号: 选择Libriay dependencies,从下拉列表里面选择就可以了.

  10. IDEA 用了maven后的 智能提示 不出现问题,项目的依赖包没有加载依赖库中的问题。

随机推荐

  1. Qt编写地图综合应用15-添加删除清空重置点

    一.前言 在地图应用的相关项目中,在地图上标识一些设备点,并对点进行交互这个功能用的最多的,于是需要一套机制可以动态的添加.删除.清空.重置,重置的意思是将地图中的所有点的经纬度重新设置,其实就是先清 ...

  2. Eclipse中如何将web应用部署到tomcat

    第1种方法: 将workspace下的复制到tomcat的webapp下(我看度还是算了,看着都觉得麻烦). 第2种方法:总体思路就是:(1)先为web应用创建Tomcat Server:(2)再将w ...

  3. 关于JetbrainsIDE升级到2024.2版本之后jetbra/ja-netfaliter激活失效不断弹窗的解决方案

    1. 原因: jetbra/ja-netfaliter激活的原理是拦截并重定向与Jetbrains账号验证服务器的数据. 2024.2后jetbrains新的安装程序自带了三个区域语言包,其中若选择中 ...

  4. Appium_WebDriverAgent设置

            在使用真机调试的时候犯了一个错误,我把WebDriverAgent 下载到本地的A目录下,然后进行build安装,这样在模拟器上执行是无法发现问题的,但是使用appium 在真机上执行 ...

  5. Vue + Axios 请求接口方法与传参详解

    使用Vue的脚手架搭建的前端项目,通常都使用Axios封装的接口请求,项目中引入的方式不做多介绍,本文主要介绍接口调用与不同形式的传参方法. 一.Get请求: Get请求比较简单,通常就是将参数拼接到 ...

  6. Solution Set - Codeforces Global Round 1~8

    目录 Codeforces Global Round 1 A. Parity B. Tape C. Meaningless Operations D. Jongmah E. Magic Stones ...

  7. 彻底讲透Spring Bean生命周期,源码深度剖析!

    前言本篇文章主要是要介绍如何在Spring IoC 容器中 如何管理Spring Bean生命周期. 在应用开发中,常常需要执行一些特定的初始化工作,这些工作都是相对比较固定的,比如建立数据库连接,打 ...

  8. weixueyuan-Nginx集群9

    https://www.weixueyuan.net/nginx/colony/ LVS(Linux虚拟服务器)简介 LVS(Linux Virtual Server)是一个开源的负载均衡项目,是国内 ...

  9. Linux系统设置用户密码规则(复杂密码策略)方法

    Linux系统下的用户密码的有效期 可以修改密码可以通过login.defs文件控制.设置密码过期期限(默认情况下,用户的密码永不过期.) 编辑 /etc/login.defs 文件,可以设置当前密码 ...

  10. C语言这种单细胞编程语言和指针的一些理解

    转行做嵌入式也有一段时间了,原来做c#以及一些其它的上层语言, 本想的是也就是仅仅是语法上有点不一样.但是实际使用的切身体会真的是只有自己才知道.很多方面刷新了我对c语言以及计算机结构体系的认知 ,绝 ...