likes
comments
collection
share

NPM包版本号说明和理解

作者站长头像
站长
· 阅读数 18

前言

在前端开发中,包版本控制是至关重要的。对于我们前端开发者来说,NPM是用于安装和管理软件包的主要工具。每个NPM包都有一个独特的版本号,它对于理解包的变更历史,兼容性以及功能更新是非常关键的。有时候工作当中所产生的一些未知BUG或多或少都和版本号管理有关。

NPM包版本号说明和理解

版本号说明

一个完整的NPM包版本号由三部分组成:主版本号(Major),次版本号(Minor)和修订版本号(Patch)。这三部分通常以点 . 分隔,例如:1.2.5。每个部分都有特定它自己特殊的含义。

  1. 主版本号(Major):当项目(包)做了重大的更新,与旧的版本存在一定的不兼容性等问题时,主版本号就需要增加。这通常表示有一些重大更新或者重构,可能引入了新的功能或者移除了某些功能。
  2. 次版本号(Minor):当项目(包)做了少量的变更或向下做了兼容时,次版本号会增加。这可能表示添加了一些新功能或者修复了一些严重的问题,但仍然与旧版本保持一定的兼容性。
  3. 修订版本号(Patch):当修复上一个版本的bug或向下做兼容时,修订版本号会增加。这通常表示对现有功能的改进或者对bug的修复。

而版本号变更的一般规则都是:版本号只升不降,不得在数字前面加0。例如,不能是 1.01.0,应该是 1.0.0。一般第一个正式版本应为 1.0.0

以下是一个 dependencies 包管理的配置

"dependencies": {
    "@flypeng/tool": "^5.3.2",
    "@logicflow/core": "^1.2.15",
    "@logicflow/extension": "^1.2.16",
    "@pansy/vue-watermark": "^1.2.0",
    "@vueuse/core": "^9.13.0",
    "@wangeditor/editor": "^5.1.23",
    "@wangeditor/editor-for-vue": "^5.1.12",
    "animate.css": "^4.1.1",
    "axios": "^1.5.1",
    "colord": "^2.9.3",
    "dayjs": "^1.11.10",
    "driver.js": "^0.9.8",
    "echarts": "^5.4.3",
    "fuse.js": "^6.6.2",
    "mitt": "^3.0.1",
    "mockjs": "^1.1.0",
    "modern-screenshot": "^4.4.32",
    "naive-ui": "^2.35.0",
    "nprogress": "^0.2.0",
    "pinia": "^2.1.7",
    "swiper": "^10.3.1",
    "v-clipboard": "3.0.0-next.1",
    "vditor": "^3.9.6",
    "vue": "^3.3.4",
    "vue-i18n": "^9.5.0",
    "vue-router": "^4.2.5",
    "vue3-photo-preview": "^0.3.0",
    "vuedraggable": "^4.1.0",
    "xgplayer": "^2.32.5",
    "xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz"
}

版本标识符

包版本格式为:Major.Minor.Patch-Identifier.1。其中 Identifier 就是标识符

版本号后面的标签或扩展通常用于表示包的发布状态或功能特性。例如,一个包可能有预发布版本(如 0.1.0-beta),测试版本(如 0.2.0-test),或者稳定版本(如 1.0.0)。这些标签可以帮助开发者了解包的发布情况,选择合适的功能特性或者稳定度。

关于版本标签主要有以下这几种,多得就不介绍了。

  1. 预发布版本(Prerelease、Next):这种标签用于标识一个包还未正式发布,但已经准备就绪,可以进行测试或者预览。常见的预发布版本标签包括 alphabetaRC(Release Candidate)。例如,一个包可能是 3.2.3-beta-3,这表示它是3.2.3版本的预发布版本,已经进行了三次测试。
  2. 测试版本(Test):这种标签用于标识一个包正在进行测试阶段。通常,这种标签会与特定的测试版本号一起使用,例如 @next 或者 @testing
  3. 稳定版本(Stable):这种标签用于标识一个包已经稳定并且准备好进行生产使用。通常,这种标签会与特定的主版本号一起使用,例如@1.0.0。

版本运算符

版本运算符应该算的上是NPM包版本管理的重点了。有时候在开发项目时我们只会使用某个包的特定版本,如果是更新版本或降低版本就会导致包不可用的情况。这种情况就需要我们了解到版本运算符的相关概念的知识了。

这里主要解释两个主要的运算符符号 ^~

~ 版本号锁住主版本号或者次版本号,只修订版本号。也就是说安装时不改变大版本号和次要版本号,只改变修订版本号。

  • ~1.3.2: 表示安装的是1.3.x的最新版本(不低于1.3.2),但是不安装 1.4.0

^ 版本号匹配第一个非0版本号,锁住主版本号,只修改次版本号和修订版本号。

  • ^1.3.2: 表示安装的是1.x.x的最新版本(不低于1.3.2),但是不安装 2.0.0

NPM 在安装和更新包时,默认使用 ^ 来匹配包版本。

相关命令

  1. npm list:查看当前目录下已安装的node包。该命令会列出当前项目中所有已安装的包及其版本信息。
  2. npm list <package-name>:查看指定包及其依赖项的安装情况。该命令会列出指定包的版本信息以及其依赖项的版本信息。
  3. npm install <package-name>:安装指定包及其依赖项。该命令会下载并安装指定包及其依赖项,并将它们添加到项目的node_modules目录中。
  4. npm update <package-name>:更新指定包及其依赖项。该命令会下载并安装指定包的最新版本及其依赖项,并更新项目的node_modules目录。
  5. npm uninstall <package-name>:卸载指定包及其依赖项。该命令会删除指定包及其依赖项,并从项目的node_modules目录中移除它们。
  6. npm config list:查看配置信息。该命令会列出当前NPM的配置信息,包括代理、镜像源等。
  7. npm --help:查看NPM帮助命令。该命令会显示NPM的帮助文档,包括所有可用的命令和选项。
  8. npm root:查看当前包的安装路径。该命令会返回当前项目中所有已安装包的根目录路径。
  9. npm root -g:查看全局的包的安装路径。该命令会返回全局环境中所有已安装包的根目录路径。
  10. npm ls <package-name>:查看本地安装的指定包及版本信息,没有显示empty。该命令会列出指定包的详细信息,包括版本号、依赖项等。
  11. npm config set registry <registry-url>:修改包下载源,此例修改为淘宝镜像。该命令可以更改NPM的默认源为其他镜像源,例如淘宝镜像。
  12. npm info <package-name>:查看远程npm上指定包的所有版本信息。该命令会返回指定包的详细信息,包括版本号、发布时间等。