一、概述
当我们在项目中执行yarn init 命令时,都会生成一个package.json文件,这个文件定义了当前项目所需的各个模块,以及项目的配置信息(例如名称、版本、许可证等)。
当我们执行yarn install时,会根据package.json文件中的配置自动下载所需的模块,也就是配置该项目所需的运行和开发环境。
package.json文件是一个JSON对象,虽然很多人不关心package.json的配置,他们应用的更多的是dependencies和devDependencies配置
二、重要字段
1. name字段
package.json文件中最重要的就是name和version字段,这两项是必填的。
名称和版本一起构成一个标识符,该标识符被认为是完全唯一的。对包的更改应该与对版本的更改一起进行。
2. version字段
version一般的格式是x.x.x, 并且需要遵循该规则。
3. license字段
license是当前项目的协议,让用户知道他们有何权限来使用你的模块,以及使用该模块有哪些限制。
4. main字段
main字段指定了加载的入口文件,require导入的时候就会加载这个文件。这个字段的默认值是模块根目录下面的index.js。
5. bin字段
使用场景:可执行命令发布为全局的软件包。
bin项用来指定每个内部命令对应的可执行文件的位置。如果你编写的是一个node工具的时候一定会用到bin字段。
当我们编写一个cli工具的时候,需要指定工具的运行命令,比如常用的webpack模块,他的运行命令就是webpack。
PS:是不是cli,是的话用这个生成指令-webpack。npm包的用不到。
"bin": {
"webpack": "bin/index.js",
}
当全局安装这个包,执行webpack命令的时候就会执行bin/index.js文件中的代码。不需要项目中引入。
6. scripts字段
scripts指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm run start时,所要执行的命令。
"scripts": {
"start": "node ./start.js" // node去执行本地的某个脚本
}
使用scripts字段可以快速的执行shell命令,可以理解为alias。
scripts可以直接使用node_modules中安装的模块,这区别于直接运行需要使用npx命令。
"scripts": {
"build": "webpack" // webpack是个cli指令,全局安装过的
}
// npm/yarn run build
// npx webpack
7. devDependencies字段、dependencies字段
devDependencies指定项目开发所需要的模块,dependencies字段指定了项目运行所依赖的模块。
它的值都是一个对象。该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。
"devDependencies": {
"webpack": "^5.38.1",
}
版本号遵循x.y.z格式即“大版本.次要版本.小版本”的格式规定。
版本说明:
(1)波浪号:例如~5.38.1,表示安装5.38.x的最新版本(不低于5.38.1),但是不安装5.39.x,也就是安装时不改变大版本号和次版本号,即x.y不变。
(2)插入号:比如ˆ5.38.1,表示安装5.x.x的最新版本(不低于5.38.1),但是不安装6.x.x,也就是安装时不改变大版本号,即x不变。
需要注意的是,如果大版本号为0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。
(3)固定版本:例如5.38.1,安装时只安装指定版本。
(4)latest: 安装最新版本。