之前一直使用package.json
下载包,但是突然遇到一个小问题,就记录下来了
问题引发是这样的:我是要使用一个自己写的库,然后用到一半的时候,发现有需要优化的地方,所以就将自己写的那个库更新了一版,从原来的v0.0.2
变成v0.0.3
,然而我现在导入是直接导入的:
...
"module": "0.0.2"
...
那我代码就必须改成0.0.3
,但是这样的话,我的库每更新一次就得改代码一次,肯定不可能,那就是还有自己不知道的问题,然后查了一下,发现npm
可以更新制定版本的包以及最新版本的包
npm更新制定版本或最新版本包
npm install module@latest // 或者可以写为@版本号
P.S:module
为你想要更新的包,latest
代表最新版本,如果是版本号则直接写版本号即可
但是这样只是手动去更新自己知道更新了的包,很明显问题没有解决,然后我就发现诶,引入antd
的写法是"antd":"^3.10.2"
,那这个^
是个啥子意思,之前好像还见过~
package.json版本号^和~区别
说到这个版本号的区别,那先看看版本号吧,版本号主要由三部分组成:
MAJOR:版本号变化表示有了一个不可以和上个版本兼容的大更改;
MINOR:版本号变化表示有了增加了新的功能,并且可以向后兼容;
PATCH:版本号变化表示修复了bug,并且可以向后兼容;
即:v0.0.3
中三个数字从左往右代表的意义,第一个数字0
代表版本的大更改,第二个数字0
代表功能迭代,第三个数字3
代表的是bug
修复或优化
PS:看到这个才发现自己的版本号不标准,首先第一版应该是1.0.0
,而不是0.0.1
。
了解了版本号之后再来看看^
和~
:
~:主要是匹配MINOR
中的最新版本,即如果你是1.1.2
,那~
匹配的是[1.1.2 , 1.2.0)
之间的版本,它会自动把当前库更新到当前minor
的版本
^:主要是匹配MAJOR
中的最新版本,即如果你是1.1.2
,那^
匹配的是[1.1.2 , 2.0.0)
之间的版本,它会自动把当前库更新到当前major
的版本
注意:这两个都不会自动更新到后面界限的版本,即1.2.0
和2.0.0
,这种需要手动改package.json
中的包,应该是为了防止改动太大前后版本不兼容叭