关于package-lock

描述

package-lock 主要的作用是为了锁安装模块的版本号

当你npm install 的时候安装的依赖是最新的不一定是package内设置的版本,这样就有可能导致产生一些问题 (因为某些包只有特定的版本才能正常运行)(npm install ‘插件’@1.1.1;安装特定版本插件)

解决的问题

在npm 5.x 之前 可以运行 npm shrinkwrap
此时会生成一个 npm-shrinkwrap.json 文件, 此文件会锁定所有的依赖来源, 后期再执行 cnpm install 或者 npm install 都不会出错,包的版本会和 package.json 中定义的一样。 注意: 如果之后安装了其他包, npm-shrinkwrap.json 文件 不会自动更新,所以需要再次执行 npm shrinkwrap

在npm 5.x 之后会自动生成 package-lock.json 来解决这个问题

另外还可以解决依赖重复安装问题和冲突问题
因为从npm3开始
node_modules 就开始对依赖的扁平化处理方式 例如你的插件中也安装了相同插件,或者你所依赖的插件安装了不同版本你所依赖的其他插件

简介

请添加图片描述

最外面的两个属性 name 、version 同 package.json 中的 name 和 version ,用于描述当前包名称和版本。dependencies 是一个对象,对象和 node_modules 中的包结构一一对应,对象的 key 为包名称,值为包的一些描述信息:

  1. version:包版本 —— 这个包当前安装在 node_modules 中的版本
  2. resolved:包具体的安装来源integrity:包 hash 值,基于 Subresource
  3. Integrity 来验证已安装的软件包是否被改动过、是否已失效
  4. requires:对应子依赖的依赖,与子依赖的 package.json 中 dependencies的依赖项相同。
  5. dependencies:结构和外层的 dependencies 结构相同,存储安装在子依赖 node_modules 中的依赖包。这里注意,并不是所有的子依赖都有 dependencies 属性,只有子依赖的依赖和当前已安装在根目录的 node_modules 中的依赖冲突之后,才会有这个属性。

补充

请添加图片描述

  1. 符号^:表示安装不低于该版本的应用,但是大版本号需相同,例如:vuex: “^3.1.3”,3.1.3及其以上的3.x.x都是满足的。
  2. 符号~:表示安装不低于该版本的应用,但是大版本号和小版本号需相同,例如:vuex: "
  3. 请添加图片描述

^3.1.3",3.1.3及其以上的3.1.x都是满足的。
4. 无符号:无符号表示固定版本号,例如:vuex: “3.1.3”,此时一定是安装3.1.3版本。

不同npm版本下npm i的规则

请添加图片描述

参考文章

package.json 锁的不是版本 是版本的范围,lock锁的是固定的版本范围

[版本号规范]

(https://semver.org/lang/zh-CN/)

按照规范只需要锁主版本号就可以^ 但总有一些开发者没有遵守或者没有注意,小版本号的改动导致插件不兼容。这个时候开发者2号npm i 的时候导致安装版本不一致,导致一些奇怪的问题

版本的优先层级指的是不同版本在排序时如何比较

1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0。

npm i 和 npm ci的区别

  • npm i 按照package.json 内的 ^或~ 才下载对应的插件库的版本,并生成package-lock.json文件
  • npm ci 删除node_modules 按照lock下载固定的版本的插件 如果没有lock文件不工作
    npm ci 会比npm i 更加快速 因为不需要去处理^~各个插件的版本和各个插件的依赖问题

npm i -s -g -d请添加图片描述

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值