前言
平常在工作中,对package.json这个文件的接触非常非常少。
-
一些同学可能还会看一下script里面有什么命令,执行了哪些方法。
-
又或者了解一下
dependencies和devDependencies -
其他大部分的同学可能直接就
npm i和npm start就开始工作了。 -
但是
package.json的魅力远不止如此 -
今天就和我一起探索一下这个项目中不可或缺的——
package.json吧!
由浅入深-核心内容
准备工作
手摸手新建一个空的package.json

npm init上万个回车
或者直接执行
npm init -y- 其意思就是全部都略过,和我们上面的无数个回车的效果一样
先看看上面有的东西。
{
"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之类的
- 开发环境会用到的东西,比如说webpack。我们打包的时候会用到,但是项目运行的时候却用不到,所以只需要放到
这里重点谈一下这些版本号直接的差异
~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.4和0.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
缺失值minor和patch值将脱糖为零,但也允许在这些值内具有灵活性,即使主要版本为零。
^1.x:=>=1.0.0 <2.0.0-0^0.x:=>=0.0.0 <1.0.0-0
1.1.x
任何的X,x或*可被用来“立场在”在数字值中的一个[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.01:=1.x.x:=>=1.0.0 <2.0.0-01.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

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

被折叠的 条评论
为什么被折叠?



