两者联系
自npm5.0版本发布以来,npm i 的规则发生了三次变化。
- npm 5.0版本,不管package.json怎么变,npm i都会根据package-lock.json下载。
- npm 5.1.0版本后,npm i会无视lock文件去下载最新的包
- npm5.4.2版本后:
如果package.json和package-lock.json文件版本不同,会根据package.json中的版本号以及语义去下载包,并更新lock文件;
如果两者版本号相同则会根据package-lock.json中的版本号去下载。
package.json中你的版本号规则
1.波浪号〜匹配最新补丁版本号,也就是版本号的第三个数字。比如~1.2.3将匹配所有1.2.x版本,但将在1.3.0上停止。
2.插入符号^ 更宽松。 它匹配的是最新次要版本号,也就是第二个数字。比如:^ 1.2.3将匹配任何1.x.x版本,包括1.3.0,但将在2.0.0上停止。
3.版本号前面是星号*,那意思就是匹配任何版本。
4.版本号的值是latest,那意思安装的永远是最新发布的版本。