NPM包版本号说明和理解

前言

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

版本号说明

一个完整的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 包管理的配置

json 复制代码
"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上指定包的所有版本信息。该命令会返回指定包的详细信息,包括版本号、发布时间等。
相关推荐
不吃鱼的羊15 分钟前
DaVinci配置NVM模块
前端·javascript·网络
小葛要努力19 分钟前
安装nvm 管理node.js版本实现vue2和vue3项目共存
node.js·vue·nvm
excel25 分钟前
为什么需要构建工具(Webpack / Vite 的本质)
前端
lang2015092825 分钟前
Java SAX 流式解析全解:从原理到 EasyExcel 实战
java·前端·javascript
Rain50933 分钟前
2.4. PostgreSQL 数据库连接与实战指南
前端·数据库·人工智能·后端·postgresql·数据分析
console.log('npc')33 分钟前
Codex 桌面端接入 Headroom 压缩代理完整教程
前端·vscode
独泪了无痕1 小时前
Vue集成uuid生成唯一标识实践指南
前端·vue.js
yuanyxh9 小时前
Mac 软件推荐
前端·javascript·程序员
万少9 小时前
AtomCode开发微信小程序《谁去呀》 全流程
前端·javascript·后端
某人辛木9 小时前
Web自动化测试
前端·python·pycharm·pytest