发布于 2026-01-06 7 阅读
0

轻松更新 npm 包,无需担心破坏应用程序。

轻松更新 npm 包,无需担心破坏应用程序。

在本文中,我们将探讨如何轻松更新应用程序中使用的 npm 包,而无需担心破坏应用程序的功能。

那么,我们开始吧。

语义版本控制

语义化版本控制非常重要,无论你是Node、React还是Angular开发者,都需要了解它。

这也是面试中经常被问到的问题之一。

它定义了如何管理我们安装的 npm 包的依赖项。

那么,让我们来了解一些基本概念。

当我们从头开始创建一个新的Node或React项目时,我们会执行以下命令:

npm init -y

OR 

yarn init -y
Enter fullscreen mode Exit fullscreen mode

这将创建一个基本package.json文件,我们可以在其中管理软件包的依赖关系。

通常情况下,它package.json看起来会像这样。

image_1.png

如您所见,package.json它具有指定的版本属性,新项目的版本号从 1.0.0 开始。

假设我们express使用以下命令安装特定版本的软件包:

npm install express@4.17.1
Enter fullscreen mode Exit fullscreen mode

它将被添加到依赖项部分,如下所示package.json

"dependencies": {
  "express": "^4.17.1"
}
Enter fullscreen mode Exit fullscreen mode

此外,您还会看到系统package-lock.json会创建一个新文件。这是一个非常重要的文件,其中包含已安装的主软件包及其依赖软件包的确切版本和下载 URL。

您绝不应该编辑或删除该文件package-lock.json。它会在安装或卸载软件包时自动更新。

理解语义版本控制

如您所见,package.json文件中提到的依赖项是一个包含键值对的对象。

该值由三个数字组成,数字之间用点号分隔。例如,假设版本号为 abc。

  • 第一个值(aa.b.c)指定软件包的主版本——这意味着此版本有重大代码更改,并且可能包含破坏性的 API 更改。
  • 第二个值(bin a.b.c)指定次版本,其中包含一些小的变化,但不会包含破坏性的 API 变化。
  • 第三个值(cin a.b.c)指定补丁版本,通常包含错误修复。

如果您要创建自己的 npm 包,也应该遵循这些版本规则。

如果软件包有重大更改,则package.json在将软件包发布到 npm 存储库时,将版本属性的第一位数字加 1。

对于细微的改动,将第二个数字加一;对于错误修复,将第三个数字的值加一。

您还可以注意到版本号前面有一个插入符号(^)。

"express": "^3.17.1"
Enter fullscreen mode Exit fullscreen mode

有两个最常用的符号,它们都有特定的含义。让我们来了解一下它们。

  • ^:此符号表示当我们想要更新所有列出的软件包时package.json,使用npm update该命令只会更新补丁版本和次要版本。因此,如果您的当前版本是 3.16.1,并且发布了次要版本,则该软件包将更新到 3.17.1。如果只发布了补丁版本,则会将其更新到最新的可用补丁版本,例如 3.16.3。

请注意,如果版本号前有 ^ 符号,则运行npm update命令时,软件包永远不会更新到主版本。

如果您想安装当前可用的主要版本,可以使用以下命令指定该版本:

npm install express@4.17.1
Enter fullscreen mode Exit fullscreen mode

如果要安装该软件包的最新版本,请执行:

npm install express@latest
Enter fullscreen mode Exit fullscreen mode
  • ~:此符号表示软件包将仅更新为补丁版本,即仅更新最后一个数字,例如从 4.16.1 更新到 4.16.2 或 4.16.3,但不会更新到 4.17.1 或 5.16.1。

您只能安装该 npm 包(在本例中为 express 包)提供的版本。

image_2.png

如果您访问 express 包的 npm 仓库(点击此处),点击264 Versions相应的标签页,即可查看该包的所有版本。截至目前,共有 264 个版本。

image_3.png

一些有用的命令

  • 如果您想查看所有软件包的当前版本和最新版本package.json,可以执行npm outdated以下命令

image_4.png

  • 要获取所有全局安装的软件包列表,请执行以下命令:
npm list -g --depth=0
Enter fullscreen mode Exit fullscreen mode

image_5.png

  • 要获取项目中所有存在漏洞的软件包的报告以及修复说明,请执行以下npm audit命令。如果您使用的是 Mac,可能需要在命令前添加 sudo,例如:
sudo npm audit
Enter fullscreen mode Exit fullscreen mode

此命令将列出所有易受攻击的软件包,并链接到有关漏洞的更多信息,包括其严重性(低、中或高)以及修复漏洞需要执行的命令。

您应该时不时地为您的项目运行该npm audit命令,以查看最近是否报告了任何漏洞,并在需要时修复它们,以保持软件包的最新状态,从而确保您的应用程序安全。

感谢阅读!

欢迎了解我最近发布的Redux 精通课程。

在本课程中,你将学习:

  • Redux 基础与进阶
  • 如何管理数组和对象的复杂状态
  • 如何使用多个 reducer 来管理复杂的 Redux 状态
  • 如何调试 Redux 应用程序
  • 如何在 React 中使用 Redux 和 react-redux 库使你的应用程序具有响应式特性。
  • 如何使用 redux-thunk 库处理异步 API 调用等等

最后,我们将从零开始构建一个完整的食品订购应用程序,集成 Stripe 以接受付款,并将其部署到生产环境中。

想及时获取有关 JavaScript、React 和 Node.js 的最新内容吗?请在 LinkedIn 上关注我

文章来源:https://dev.to/myogeshchavan97/easily-update-npm-packages-without-the-fear-of-writing-the-application-3670