npm 如何更新项目最新依赖包
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.json
和 package-lock.json
中的依赖关系。它将使用想要的版本。
为了获得 "最新 "的版本,在单个安装中附加 @latest
,例如 npm install react@latest
。
怎样使用 npm-check-updates
对于高级和可定制的升级体验,我推荐 npm-check-updates
。这个包可以做所有 npm oudated
和 npm 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
- 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 的体验。
ncu --interactive --format group
这个命令将软件包分组并组织成 主版本(major)、次要(minor)和补丁(patch)版本。
npm-check-updates 提供了其他有用的工具,如 doctor mode,它可以安装升级并运行测试以检查破坏性变化。
总结
养成定期更新你的依赖关系的习惯,将有助于你的应用程序的安全性和性能。
npm oudated
和 npm-check-updates
都是有用的工具,可以检查那些可以使用版本升级的软件包。
https://www.freecodecamp.org/chinese/news/how-to-update-npm-dependencies/
npm 如何更新项目最新依赖包的更多相关文章
- git克隆项目到本地&&全局安装依赖项目&&安装依赖包&&启动服务
一.安装本地开发环境 1.安装本项目 在需要保存到本地的项目的文件夹,进入到文件夹里点击右键,bash here,出现下图: 2.安装依赖项目 3.安装依赖包(进入到命令行) # 安装依赖包 $ ...
- 项目的依赖包(node_modules)删除
快速删除依赖包一共分为三部 1.打开命令行(管理员身份),执行 npm i -g npkill 2.cd 进入到想删除的项目中,执行 npkill 3.执行完成会进入到npkill页面,等待搜索完成, ...
- 使用pipenv隔离不同项目的依赖包
pipenv可以为不同的路径创建python环境和依赖包,结合pyenv可以达到为不同项目使用不同python版本,不同依赖包的目的. pip install pipenv #安装pipenv 使用p ...
- Linux下离线安装python项目的依赖包
第一步新建一个site-packages文件夹,把python项目有需要的依赖包名称导出到site-packages下的requirements.txt中 $ pip3 freeze > req ...
- Django项目 生成依赖包
生成依赖包文件 requirements.txt,最好用 pip3, 如果有 python2 的话会默认使用 py2 的 pip pip3 -r freeze > requirements.tx ...
- 【npm start 启动失败】ubuntu 将node和npm同时更新到最新的稳定版本
https://blog.csdn.net/u010277553/article/details/80938829 npm start 启动失败,报错如下 错误提示 make sure you hav ...
- 更新python的依赖包,亲测!
输入pip install --upgrade pandas 无需卸载,让它自己更新就好 pandas可以改成别的包
- Composer项目安装依赖包
说明:一般用Composer的项目中,目录下都有一个composer.json文件,安装这些依赖,只需要输入命令即可 步骤: cmd进入项目目录,运行命令即可 composer install 文章参 ...
- android studio中为项目添加依赖包的方法
右键项目,Open Module Settings 打开后选择Dependencies选项卡,点最右边的加号: 选择Libriay dependencies,从下拉列表里面选择就可以了.
- IDEA 用了maven后的 智能提示 不出现问题,项目的依赖包没有加载依赖库中的问题。
随机推荐
- CentOS7 安装git 配置秘钥公钥克隆代码
建议购买阿里云香港服务器可以免备案,系统镜像选择CentOS7测试 第一步:安装git客户端,默认安装在/usr/libexec/git-core目录 yum -y install git #查看版本 ...
- Qt编写的项目作品20-百度地图综合应用(在线+离线+区域+下载)
一.功能特点 (一).省市区域地图封装类功能特点 同时支持闪烁点图.迁徙图.区域地图.世界地图.仪表盘等. 可以设置标题.提示信息.背景颜色.文字颜色.线条颜色.区域颜色等各种颜色. 可设置城市的名称 ...
- VS2010/MFC 获取当前程序路径的方法
第一种方法 DWORD GetCurrentDirectory( DWORD nBufferLength, // size, in characters, of directory buffer LP ...
- 长连接网关技术专题(五):喜马拉雅自研亿级API网关技术实践
本文由喜马拉雅技术团队原创分享,原题<喜马拉雅自研网关架构实践>,有改动. 1.引言 网关是一个比较成熟的产品,基本上各大互联网公司都会有网关这个中间件,来解决一些公有业务的上浮,而且能快 ...
- SQL优化的这15招,真香!
前言 sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到. 如果某天你负责的某个线上接口,出现了性能问题,需要做优化.那么你首先想到的很有可能是优化sql语句,因为它 ...
- Omnivore 替代品 Readeck 安装与使用教程
前段时间 Omnivore 宣布服务关停,作为一个长期使用 Omnivore 的用户,我需要寻找替代方案. 我对替代品的核心需求是: 浏览器插件:支持一键剪藏当前网页. RSS 支持:能够输入 RSS ...
- CDS标准视图:维护包数据 I_MaintenancePackageData
视图名称:维护包数据 I_MaintenancePackageData 视图类型:基础 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'IMAINTPCKGDATA' ...
- FTP、SFTP、TFTP,文件传输协议怎么选?
转载:FTP.SFTP.TFTP,文件传输协议怎么选? FTP FTP(File Transfer Protocol,文件传输协议)是用于在计算机网络中传输文件的标准协议.FTP是一种客户端/服务器协 ...
- Collection的子接口之一:List 接口
List 接口概述: 鉴于Java中数组用来存储数据的局限性,我们通常使用List替代数组 List集合类中 元素有序.且可重复,集合中的每个元素都有其对应的顺序索引. List容器中的元素都对 ...
- nginx basic验证
打开个生成htpasswd的网站 输入信息生成结果 将结果保存到nginx一个文件里面 修改nginx的conf文件 auth_basic "webA"; #这个"&qu ...