package.json和package-lock.json

一、package.json

开发者在下载依赖包时使用–save 命令,package.json就会记录该依赖包的依赖信息【如npm install axios --save

在这里插入图片描述

因此,package.json中只会保存开发者想要保存的依赖包

配置项用途
version表明了当前的版本。
name设置了应用程序/软件包的名称。
description是应用程序/软件包的简短描述。
main设置了应用程序的入口点。
private如果设置为 true,则可以防止应用程序/软件包被意外地发布到 npm
scripts定义了一组可以运行的 node 脚本。【npm run devnpm run serve等就是在这里定义的】
dependencies设置了作为依赖安装的 npm 软件包的列表。
devDependencies设置了作为开发依赖安装的 npm 软件包的列表。
engines设置了此软件包/应用程序在哪个版本的 Node.js 上运行。
browserslist用于告知要支持哪些浏览器(及其版本)。

二、package-lock.json

它比package.json更好地保证了,下载该项目的人通过npm install安装依赖时,安装的依赖包版本完全相同。

  • 当安装包时,npm会生成或更新package-lock.json

  • package-lock.json文件会保存node_modules中所有包的信息(包括精确版本version和下载地址resolved以及依赖关系dependencies等)

    这样npm install时速度就会提升

在这里插入图片描述

三、"^3.21.2" 版本号

1. 版本号的含义

软件包的当前版本"version": "1.0.0"遵循版本的语义版本控制记法,这意味着版本始终以 3 个数字表示:x.x.x

第一个数字是主版本号,第二个数字是次版本号,第三个数字是补丁版本号。

具有重大更改的是主版本;引入向后兼容的更改的版本是次版本;仅修复缺陷的版本是补丁版本。

但不排除有些软件包版本不符合规范

2. package.json和依赖包版本

在package.json和package-lock.json中记录依赖包的意义

在将项目提交到git上时,无需将 node_modules 文件夹(该文件夹保存着通过npm或yarn安装的依赖包,通常很大)提交。在其他用户下载了项目后,通过npm install即可安装这些依赖包。

控制依赖包版本的意义:

防止下载了项目后,在通过npm install安装时,依赖包被自动升级成最新版本【有时一些依赖包的新版本会变更甚至删除API参数,容易导致项目出错】。

package.json中如何控制npm install的依赖包版本

在 package.json 中,可以使用 semver 表示法设置要升级到的版本(补丁版本或次版本),例如:

  • 如果写入的是 〜0.13.0,则只更新补丁版本:即 0.13.1 可以,但 0.14.0 不可以。
  • 如果写入的是 ^0.13.0,则要更新补丁版本和次版本:即 0.13.10.14.0依此类推。
  • 如果写入的是 0.13.0,则始终使用确切的版本。

当尝试使用 npm install 命令在另一台机器上复制项目时,如果指定了 语法并且项目依赖的软件包发布了补丁版本,则该补丁版本软件包会被安装。 ^ 和次版本也一样。如果指定确切的版本,例如示例中的 0.13.0,则不会受到此问题的影响。

package.json和package-lock.json的区别
  • package.json定义的是锁住主版本。如"express":"^3.21.2",锁住了第一位的版本,后面的小版本可以改变。也就是可能会自动下载成3.5.3这种。

  • package-lock.json定义的是锁住小版本,并提供了下载链接和验证。能够保证别人下载项目通过npm install初始化依赖时,与项目定义的依赖版本完全相同。

四、参考链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值