package.json 中的那些版本数字前面的符号是什么意思?

发布于:2025-04-22 ⋅ 阅读:(25) ⋅ 点赞:(0)

1. 语义化版本(SemVer)

语义化版本的格式是 MAJOR.MINOR.PATCH,其中:

  • MAJOR:主版本号,表示不兼容的 API 修改。
  • MINOR:次版本号,表示新增功能但保持向后兼容。
  • PATCH:修订号,表示修复错误但保持向后兼容。

2. 常见的版本范围符号

^(caret 符号)

  • 表示允许安装最新的次版本(MINOR)或修订版本(PATCH),但不包括主版本(MAJOR)的更新

  • 适用于大多数情况下,确保兼容性。

  • 示例

    "dependencies": {
      "lodash": "^4.17.21"
    }
    

    允许安装 4.x.x 版本,但不包括 5.x.x。

~(波浪号符号)

  • 表示允许安装最新的修订版本(PATCH),但不包括次版本(MINOR)或主版本(MAJOR)的更新。

  • 更严格,适用于对次版本更新比较敏感的场景

  • 示例

    "dependencies": {
      "express": "~4.17.1"
    }
    

    允许安装 4.17.x 版本,但不包括 4.18.x 或更高版本。

*(星号符号)

  • 表示允许安装任何版本。

  • 示例

    "dependencies": {
      "chalk": "*"
    }
    

    允许安装 chalk 的任何版本(不推荐,可能会引入不兼容的更新)。

> 和 <(大于或小于符号)

  • 用于指定版本范围。

  • 示例

    "dependencies": {
      "debug": ">2.6.9 <3.0.0"
    }
    

    允许安装 2.6.9 到 3.0.0 之间的版本。

>= 和 <=(大于等于或小于等于符号)

  • 用于指定版本范围。

  • 示例

    "dependencies": {
      "morgan": ">=1.10.0"
    }
    

    允许安装 1.10.0 或更高版本。

||(垂直线符号)

  • 用于指定多个版本范围。

  • 示例

    "dependencies": {
      "some-package": "1.0.0 || >=2.0.0 <3.0.0"
    }
    

    允许安装 1.0.0 或 2.x.x 版本。

    -(连字符符号)

  • 用于指定一个版本范围。

  • 示例

    "dependencies": {
     "another-package": "1.0.0 - 2.0.0"
    }
    

    允 许安装 1.0.0 到 2.0.0 之间的版本。

    x 或 X(字母符号)

  • 表示通配符,允许安装任何版本。

  • 示例

    "dependencies": {
      "test-package": "1.x.x"
    }
    

    允许安装 1.x.x 版本(如 1.0.0、1.1.0 等)。

版本范围的组合

可以组合使用这些符号来指定复杂的版本范围。例如:

"dependencies": {
  "example-package": ">=1.2.3 <2.0.0 || >=3.0.0"
}
  • 允许安装 1.2.3 到 2.0.0 之间的版本,或者 3.0.0 及更高版本。

总结

符号 含义
^ 允许最新的次版本或修订版本,但不包括主版本更新。
~ 允许最新的修订版本,但不包括次版本或主版本更新。
* 允许任何版本
> 或 < 指定大于或小于某个版本
>= 或 <= 指定大于等于或小于等于某个版本
- 或 X 指定一个版本范围。
x 或 X 通配符,允许任何版本

网站公告

今日签到

点亮在社区的每一天
去签到