package.json版本前缀
前言
执行 npm i 下载依赖后,element-plus出现bug(单页面多个date-picker同时开启),这是 v2.9.0+ 的问题,但是项目 package.json 中版本如下:
"element-plus": "^2.7.6",
乍一看并不是版本问题,但是 package-lock.json 中版本却是 2.9.7

版本前缀
版本号主要分为三个部分:
如 2.7.6,其中 2 为主版本(major)、7 为次要版本(minor)、6 为补丁版本(patch)。
上述的问题在于版本前缀 ^,执行 npm i 默认会自动拼接该前缀,它允许次要版本 (minor) 和补丁版本 (patch) 更新,但不会更新到新的主版本 (major)。
除此之外还有 ~,它允许补丁版本 (patch) 更新,但不会更新到新的次要版本 (minor) 或主版本 (major)。
所以将 package.json 中的 ^ 改为 ~,或者删除版本前缀即可解决前言的问题。
^ vs ~ 的区别
| 符号 | 允许的更新范围 | 示例 |
|---|---|---|
^3.2.0 | 3.2.x 和 3.3.x,但不包括 4.0.0 | 3.2.1, 3.3.0, 不包含 4.0.0 |
~3.2.0 | 只允许 3.2.x,但不包括 3.3.0 | 3.2.1, 3.2.5, 不包含 3.3.0 |
