[5] package.json文件

41 阅读3分钟

一、概述

当我们在项目中执行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: 安装最新版本。