轻松更新 npm 包,无需担心破坏应用程序。
在本文中,我们将探讨如何轻松更新应用程序中使用的 npm 包,而无需担心破坏应用程序的功能。
那么,我们开始吧。
语义版本控制
语义化版本控制非常重要,无论你是Node、React还是Angular开发者,都需要了解它。
这也是面试中经常被问到的问题之一。
它定义了如何管理我们安装的 npm 包的依赖项。
那么,让我们来了解一些基本概念。
当我们从头开始创建一个新的Node或React项目时,我们会执行以下命令:
npm init -y
OR
yarn init -y
这将创建一个基本package.json文件,我们可以在其中管理软件包的依赖关系。
通常情况下,它package.json看起来会像这样。
如您所见,package.json它具有指定的版本属性,新项目的版本号从 1.0.0 开始。
假设我们express使用以下命令安装特定版本的软件包:
npm install express@4.17.1
它将被添加到依赖项部分,如下所示package.json:
"dependencies": {
"express": "^4.17.1"
}
此外,您还会看到系统package-lock.json会创建一个新文件。这是一个非常重要的文件,其中包含已安装的主软件包及其依赖软件包的确切版本和下载 URL。
您绝不应该编辑或删除该文件package-lock.json。它会在安装或卸载软件包时自动更新。
理解语义版本控制
如您所见,package.json文件中提到的依赖项是一个包含键值对的对象。
该值由三个数字组成,数字之间用点号分隔。例如,假设版本号为 abc。
- 第一个值(
a在a.b.c)指定软件包的主版本——这意味着此版本有重大代码更改,并且可能包含破坏性的 API 更改。 - 第二个值(
bina.b.c)指定次版本,其中包含一些小的变化,但不会包含破坏性的 API 变化。 - 第三个值(
cina.b.c)指定补丁版本,通常包含错误修复。
如果您要创建自己的 npm 包,也应该遵循这些版本规则。
如果软件包有重大更改,则package.json在将软件包发布到 npm 存储库时,将版本属性的第一位数字加 1。
对于细微的改动,将第二个数字加一;对于错误修复,将第三个数字的值加一。
您还可以注意到版本号前面有一个插入符号(^)。
"express": "^3.17.1"
有两个最常用的符号,它们都有特定的含义。让我们来了解一下它们。
- ^:此符号表示当我们想要更新所有列出的软件包时
package.json,使用npm update该命令只会更新补丁版本和次要版本。因此,如果您的当前版本是 3.16.1,并且发布了次要版本,则该软件包将更新到 3.17.1。如果只发布了补丁版本,则会将其更新到最新的可用补丁版本,例如 3.16.3。
请注意,如果版本号前有 ^ 符号,则运行npm update命令时,软件包永远不会更新到主版本。
如果您想安装当前可用的主要版本,可以使用以下命令指定该版本:
npm install express@4.17.1
如果要安装该软件包的最新版本,请执行:
npm install express@latest
- ~:此符号表示软件包将仅更新为补丁版本,即仅更新最后一个数字,例如从 4.16.1 更新到 4.16.2 或 4.16.3,但不会更新到 4.17.1 或 5.16.1。
您只能安装该 npm 包(在本例中为 express 包)提供的版本。
如果您访问 express 包的 npm 仓库(点击此处),点击264 Versions相应的标签页,即可查看该包的所有版本。截至目前,共有 264 个版本。
一些有用的命令
- 如果您想查看所有软件包的当前版本和最新版本
package.json,可以执行npm outdated以下命令
- 要获取所有全局安装的软件包列表,请执行以下命令:
npm list -g --depth=0
- 要获取项目中所有存在漏洞的软件包的报告以及修复说明,请执行以下
npm audit命令。如果您使用的是 Mac,可能需要在命令前添加 sudo,例如:
sudo npm audit
此命令将列出所有易受攻击的软件包,并链接到有关漏洞的更多信息,包括其严重性(低、中或高)以及修复漏洞需要执行的命令。
您应该时不时地为您的项目运行该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






