面试官:听说你对package.json很熟?package.json百科全书 全网最全package.json介绍大全 v7版本全解

本文深入探讨了package.json的核心内容,包括scripts快捷脚本、dependencies与devDependencies的区别及其版本管理,以及engines、os、cpu等项目配置。详细解释了版本号的含义,如~1.1.1、^1.1.1等。此外,还介绍了private属性、name、version等次重要字段,以及如何设置项目兼容的node版本和操作系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

平常在工作中,对package.json这个文件的接触非常非常少。

  • 一些同学可能还会看一下script里面有什么命令,执行了哪些方法。

  • 又或者了解一下dependenciesdevDependencies

  • 其他大部分的同学可能直接就npm inpm start就开始工作了。

  • 但是package.json的魅力远不止如此

  • 今天就和我一起探索一下这个项目中不可或缺的——package.json吧!

由浅入深-核心内容

准备工作

手摸手新建一个空的package.json

在这里插入图片描述

  1. npm init
  2. 上万个回车

或者直接执行

  1. npm init -y
  2. 其意思就是全部都略过,和我们上面的无数个回车的效果一样

先看看上面有的东西。

{
   
  "name": "package.json", # 项目名称
  "version": "1.0.0", # 项目版本(格式:大版本.次要版本.小版本)
  "description": "", # 项目描述
  "main": "index.js", # 入口文件
  "scripts": {
    # 指定运行脚本命令的 npm 命令行缩写
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [], # 关键词
  "author": "", # 作者
  "license": "ISC" # 许可证
}

scripts(快捷脚本)

  • scripts 字段是 package.json 中的一种元数据功能,它接受一个对象,对象的属性为可以通过 npm run运行的脚本,值为实际运行的命令(通常是终端命令),如:
"scripts": {
  "start": "node index.js"
},
复制代码
  • 将终端命令放入 scripts 字段,既可以记录它们又可以实现轻松重用。

dependencies & devDependencies(项目依赖)

  • dependencies 字段指定了项目运行所依赖的模块
    • 可以理解为我们的项目在生产环境运行中要用到的东西。
    • 比如说我们常用的antd只能哪个代码块就会用到里面的组件,所以要放到dependencies里面去
  • devDependencies字段指定了项目开发所需要的模块
    • 开发环境会用到的东西,比如说webpack。我们打包的时候会用到,但是项目运行的时候却用不到,所以只需要放到devDependencies中去就好了
    • 类似的eslint之类的

这里重点谈一下这些版本号直接的差异

~1.1.1

  • ~1.2.3:= >=1.2.3 <1.(2+1).0:=>=1.2.3 <1.3.0-0
  • ~1.2:= >=1.2.0 <1.(2+1).0:= >=1.2.0 <1.3.0-0(同1.2.x)
  • ~1:= >=1.0.0 <(1+1).0.0:= >=1.0.0 <2.0.0-0(同1.x)
  • ~0.2.3:= >=0.2.3 <0.(2+1).0:=>=0.2.3 <0.3.0-0
  • ~0.2:= >=0.2.0 <0.(2+1).0:= >=0.2.0 <0.3.0-0(同0.2.x)
  • ~0:= >=0.0.0 <(0+1).0.0:= >=0.0.0 <1.0.0-0(同0.x)
  • ~1.2.3-beta.2:=>=1.2.3-beta.2 <1.3.0-0请注意,1.2.3版本中的预发布将被允许,如果它们大于或等于beta.2. 所以,1.2.3-beta.4会被允许,但 1.2.4-beta.2不会,因为它是不同[major, minor, patch]元组的预发布。

^1.1.1

允许不修改[major, minor, patch]元组中最左边的非零元素的更改 。换句话说,这允许版本1.0.0及以上版本的补丁和次要更新,版本的补丁更新0.X >=0.1.0,以及版本的更新0.0.X

许多作者将0.x版本视为x主要的“重大变化”指标。

当作者可能在发行版0.2.40.3.0发行版之间进行重大更改时,插入符范围是理想的,这是一种常见做法。但是,它假定和之间不会有重大变化 。根据通常观察到的做法,它允许进行假定为附加(但不会破坏)的更改。0.2.4``0.2.5

  • ^1.2.3 := >=1.2.3 <2.0.0-0
  • ^0.2.3 := >=0.2.3 <0.3.0-0
  • ^0.0.3 := >=0.0.3 <0.0.4-0
  • ^1.2.3-beta.2:=>=1.2.3-beta.2 <2.0.0-0请注意,1.2.3版本中的预发布将被允许,如果它们大于或等于beta.2. 所以,1.2.3-beta.4会被允许,但 1.2.4-beta.2不会,因为它是不同[major, minor, patch]元组的预发布。
  • ^0.0.3-beta:=>=0.0.3-beta <0.0.4-0 请注意,允许0.0.3版本中的预发布 ,如果它们大于或等于. 所以,会被允许。beta``0.0.3-pr.2

解析插入符范围时,缺失patch值会被减为数字0,但即使主要版本和次要版本都是0.

  • ^1.2.x := >=1.2.0 <2.0.0-0
  • ^0.0.x := >=0.0.0 <0.1.0-0
  • ^0.0 := >=0.0.0 <0.1.0-0

缺失值minorpatch值将脱糖为零,但也允许在这些值内具有灵活性,即使主要版本为零。

  • ^1.x := >=1.0.0 <2.0.0-0
  • ^0.x := >=0.0.0 <1.0.0-0

1.1.x

任何的Xx*可被用来“立场在”在数字值中的一个[major, minor, patch]元组。

  • *:= >=0.0.0(任何版本都满足)
  • 1.x:= >=1.0.0 <2.0.0-0(匹配主要版本)
  • 1.2.x:= >=1.2.0 <1.3.0-0(匹配主要和次要版本)

部分版本范围被视为 X 范围,因此特殊字符实际上是可选的。

  • ""(空字符串):= *:=>=0.0.0
  • 1:= 1.x.x:=>=1.0.0 <2.0.0-0
  • 1.2:= 1.2.x:=>=1.2.0 <1.3.0-0

1.1.1 - 1.1.2

指定一个包含集。

  • 1.2.3 - 2.3.4 := >=1.2.3 <=2.3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值