package.json详情解释,且他有什么规则?

简介: package.json详情解释,且他有什么规则?

前言

我们在开发过程时经常会跟package.json打交道,它主要是描述当前项目的信息,包括项目名称,项目的版本,依赖包,作者,主入口,描述等等。我们安装依赖的时候,也是根据package.json的依赖版本去安装对应的依赖。

所以说当接手一个项目的时候,我们首先先去看看它的package.json,通过这个先对这个项目有一个基本的了解。

依赖包版本号

依赖主要是存在于两次字段里面

  • 一个是dependencies,生产依赖,就是生产环境需要的依赖
  • 一个是devDependencies,开发依赖,就是开发的时候才需要的依赖

我们安装的依赖是有版本号的,npm或者yarn根据这个版本号去下载对应的版本

版本号的书写一般是major.minor.patch,代表的是主版本号.次版本号.修补版本号

比如2.5.16, 3.2.8等。

  • 主版本号
    主版本号的变化,代表的是功能大幅修改,一般不兼容老版本
  • 次版本号
    次版本号的变化,功能部分修改,兼容老版本
  • 修补版本号
    修补版本号的变化,不涉及功能,只是修复bug,兼容老版本

但是package.json的依赖包的版本号一般不会只写版本号,一般前面会带有修饰符修饰,这些都是有含义的。

我们先来看看例子:

{
  "dependencies": {
    "aaa": "^2.5.16",
    "bbb": "~2.5.16"
    "ccc": "2.5.16"
  }
}

一般有三种,下面来说说
插入修饰符(^)


会安装基于当前主版本号不变,次版本号和修补版本号都是最新的版本,比如版本号是^2.5.16, 会安装2.x.x最新的版本。但是不会跨主版本号安装,比如3.0.0。


波浪修饰符(~)


会安装基于当前主版本号和次版本号不变,修补版本号是最新的版本,比如 版本号是^2.5.16, 会安装2.5.x最新的版本,比如2.5.18。


固定版本号


会安装固定版本号的版本,不会比之大,或者比之小的版本,只会和固定版本号一致的版本。


目前npm和yarn默认安装依赖都采用插入修饰符(^)来修饰版本。


为什么需要这些修饰符?

因为依赖包的迭代是很快的
如果我们只用固定版本号,一旦依赖包新增了内容或者修复了bug,发了新版本,如果想体验新版本,我们得更改我们得版本号,然后重新安装依赖。

但是如果有这些修饰符,我们只需重新安装依赖就行了,无需更改版本号。

是不是更加灵活了呢?

package.json 中版本规则详情

^: 只会执行不更改最左边非零数字的更新。 如果写入的是 ^0.13.0,则当运行 npm update 时,可以更新到 0.13.1、0.13.2 等,但不能更新到 0.14.0 或更高版本。 如果写入的是 ^1.13.0,则当运行 npm update 时,可以更新到 1.13.1、1.14.0 等,但不能更新到 2.0.0 或更高版本。


~: 如果写入的是 〜0.13.0,则当运行 npm update 时,会更新到补丁版本:即 0.13.1 可以,但 0.14.0 不可以。


> :接受高于指定版本的任何版本。


>=: 接受等于或高于指定版本的任何版本。


<=: 接受等于或低于指定版本的任何版本。


<: 接受低于指定版本的任何版本。


=: 接受确切的版本。


-: 接受一定范围的版本。例如:2.1.0 - 2.6.2。


||: 组合集合。例如 < 2.1 || > 2.6。


可以合并其中的一些符号,例如 1.0.0 || >=1.1.0 <1.2.0,即使用 1.0.0 或从 1.1.0 开始但低于 1.2.0 的版本。

还有其他的规则:


无符号: 仅接受指定的特定版本(例如 1.2.1)。

latest: 使用可用的最新版本。


相关文章
|
6月前
|
JavaScript 测试技术 API
从创建到维护:掌握package.json的最佳实践(二)
从创建到维护:掌握package.json的最佳实践
|
6月前
|
存储 JSON JavaScript
从创建到维护:掌握package.json的最佳实践(一)
从创建到维护:掌握package.json的最佳实践
|
4天前
|
前端开发 开发者
如何理解 package.json 中的 proxy 字段?
`package.json` 中的 `proxy` 字段用于配置代理服务器,帮助前端开发中解决跨域问题及模拟后端响应。其基本概念、使用场景及配置方法将在本文中详细探讨,助力开发者高效调试与测试。
17 4
|
10天前
|
安全 JavaScript
如何在`package.json`中正确设置依赖版本范围?
正确设置 `package.json` 中的依赖版本范围需要综合考虑项目的需求、依赖库的稳定性和兼容性,以及开发和维护的便利性等因素。通过合理选择版本范围符号,并结合定期的审查和测试,可以有效地管理项目依赖,确保项目的稳定运行。
17 1
|
3月前
|
JavaScript 前端开发 API
[译] 如何更新 package.json 中的依赖项
[译] 如何更新 package.json 中的依赖项
[译] 如何更新 package.json 中的依赖项
|
4月前
|
JSON 文字识别 数据格式
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
文本,文识11,解析OCR结果,paddOCR返回的数据,接口返回的数据有code,data,OCR返回是JSON的数据,得到JSON数据先安装依赖,Base64转换工具网站在21.14
|
JSON Kubernetes 算法
什么?修改 JSON 内容居然还有个 JSON PATCH 标准
什么?修改 JSON 内容居然还有个 JSON PATCH 标准
351 0
|
6月前
|
SQL JSON Apache
Flink问题之嵌套 json 中string 数组的解析异常如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
301 1
|
JSON JavaScript 前端开发
package.json中版本号的规则详解?
package.json中版本号的规则详解?
259 0

相关实验场景

更多