package如何管理安装包版本

141 阅读2分钟

语义版本控制

版本号的定义

版本号由三部分组成:major.minor.patch,主版本号.次版本号.修补版本号。

例如:1.2.3,主要版本1,次要版本2,补丁3。

  • 补丁中的更改表示不会破坏任何内容的错误修复。
  • 次要版本的更改表示不会破坏任何内容的新功能。
  • 主要版本的更改代表了一个破坏兼容性的大变化。 如果用户不适应主要版本更改,则内容将无法正常工作。

安装依赖包的版本如何指定

~ 会匹配最近的小版本依赖包,比如 ~1.2.3 会匹配所有 1.2.x 版本,但是不包括 1.3.0

^ 会匹配最新的大版本依赖包,比如 ^1.2.3 会匹配所有 1.x.x 的包,包括 1.3.0,但是不包括 2.0.0

* 安装最新版本的依赖包,比如 *1.2.3 会匹配 x.x.x, 1.2.3 只能安装1.2.4

多人开发时依赖包安装的问题

举个例子:

小明: 使用 npm install vue -save, 此时package.json version是 vue: ^2.5.17, 提交远程

小红:拉取远程代码 npm install, 此时package.json version是 vue: ^2.6.0, 这样vue版本就可能不一样,从理论上讲(大家都遵循语义版本控制的话) 是兼容的,但也许会影响我们正在使用的功能。

package-lock.json

[官方文档]:package-lock.json 它会在 npm 更改 node_modules 目录树 或者 package.json 时自动生成的

使用 npm install, 会自动生成一个 package-lock.json文件, 和package.json在同一级目录下, 当下次再npm install 时, 会根据packge-lock.json 文件而不是package.json文件来 安装依赖

注意,使用cnpm install时候,并不会生成 package-lock.json 文件,也不会根据 package-lock.json 来安装依赖包,还是会使用 package.json 来安装。

npm i 和 npm ci

npm i 根据package.json安装依赖,同时对比 package-lock.json, 如果不同,则安装后更新 package-lock.json文件 npm ci 根据package-lock.json安装依赖, 同时对比package.json, 如果不同,则停止安装并报错,如果安装成功,也不会更新package-lock.json文件

npm scripts

将node_modules/.bin添加到环境变量 PATH中,命令结束后恢复默认环境变量PATH

bin

vue-cli的npm包

"bin": { "vue": "./bin/index.js" }

1、全局安装vue-cli,就可以直接通过 vue执行相应的mingl

2、非全局安装, 类似 npm scripts

workspaces

`workspaces解决了一个顶层root package管理多个package的问题`

 workspaces声明目录下package会软链到顶层root package的 node_modules中