版本号

版本控制常用分段

MAJOR(大版本):有与上个版本不兼容的更改,无法正常向向后兼容。

MINOR(主要版本):新增加功能,可正常向向后兼容。

PATCH(小版本):修复了某些bug,可以正常向后兼容。

指定某个特定版本的依赖

{
  ...
  "dependencies":{
    ...
    "vite": "3.0.4",
    ...
  }
  ...
}

指定最新版本的依赖

所有版本最新

很少使用,新版本可能出现各种不稳定的情况

{
  ...
  "dependencies":{
    ...
    "vite": "latest",
    ...
  }
  ...
}

大版本最新

指保持大版本维持在最新状态,如下所示,会让vite依赖保持在3.x.x的最新版本,假设vite最新版本为4.9.1,那仍然会自动匹配3.x.x的最新版本并使用,而不会更新到4.x.x版本

{
  ...
  "dependencies":{
    ...
    "vite": "^3.0.4",
    ...
  }
  ...
}

主要版本最新

指主要版本保持最新版,如下所示,假设vite最新版本为3.9.1,那仍然会自动匹配3.0.x的最新版本并使用

注意,如果大版本号(MAJOR)为0,则与~的行为保持一致,因为处于开发阶段,因此仅保持主要版本最新

{
  ...
  "dependencies":{
    ...
    "vite": "~3.0.4",
    ...
  }
  ...
}

版本锁定

通过package-lock进行版本锁定

package-lock.json是用于控制项目版本的一种版本锁,对于package.json而言,它只记录主模块的依赖版本号,而对于依赖的依赖并不关心;而package-lock会记录所有依赖的版本并锁定,之后再执行npm i也不会更新依赖库的版本(因为很多项目都仅要求了最低版本,而不是最低版本到最高版本的区间)

每次执行npm i后都会创建或更新package-lock.json文件,如果出现依赖库版本冲突,可以根据package-lock文件进行对比检查