了解package.json中的内容

143 阅读3分钟

一、package.json是什么?

package.json文件是一个JSON对象,从后缀名.json就可以看出,该对象的每一个成员就是当前项目的一项设置,比如name就是项目名称,version是项目版本号。

二、配置字段详细剖析

1. name

package.json文件中最重要的就是name和version字段,这两项是必填的。名称和版本一起构成一个标识符,该标识符被认为是完全唯一的。对包的更改应该与对版本的更改一起进行。

name必须是字符串,不能以.或_开头,不能有大写字母,因为名称最终成为URL的一部分因此不能包含任何非URL安全字符。 npm官方建议我们不要使用与核心节点模块相同的名称。不要在名称中加js或node。

"name": "app-top-custom-plugin",

2. version

Version项目版本号, x.x.x的格式, 符合语义化版本规则(遵循“大版本.次要版本.小版本”的格式规定),在项目每次发布时需提交新的且唯一版本号

"version": "0.1.0",

3. description

项目描述信息,description是字符串.

4. private

设为 true 时,项目不会被发布到 npm。

5. scripts

定义可运行的脚本命令

  "scripts": {
    "start": "node index.js",
    "build": "webpack",
    "test": "jest"
  },

6. dependencies

项目运行所需的依赖包,通过 npm install <package> 安装。

依赖版本号前的符号的含义:

  1. ^(插入符号)

  • 含义: 允许安装与指定版本兼容的最新版本,但不升级主版本号。

  • 规则:

    • ^17.0.2 表示允许安装 17.x.x 的最新版本,但不会升级到 18.0.0
    • 具体范围:>=17.0.2 <18.0.0
  • 用途: 推荐使用,确保兼容性同时允许修复 Bug 和添加新功能。

  1. ~(波浪符号)

  • 含义: 允许安装与指定版本兼容的最新版本,但不升级次版本号。

  • 规则:

    • ~17.0.2 表示允许安装 17.0.x 的最新版本,但不会升级到 17.1.0
    • 具体范围:>=17.0.2 <17.1.0
  • 用途: 适用于需要更严格版本控制的场景。

  1. 无符号(精确版本)

  • 含义: 只安装指定版本。

  • 规则:

    • 17.0.2 表示只安装 17.0.2,不会安装其他版本。
  • 用途: 适用于需要完全锁定版本的场景。

  1. ><>=<=(比较符号)

  • 含义: 指定版本范围。

  • 规则:

    • >17.0.2:大于 17.0.2
    • <17.0.2:小于 17.0.2
    • >=17.0.2:大于或等于 17.0.2
    • <=17.0.2:小于或等于 17.0.2
  • 用途: 用于自定义版本范围。

  1. *(通配符)

  • 含义: 允许安装任何版本。

  • 规则:

    • * 表示安装最新版本。
    • 17.* 表示安装 17.x.x 的最新版本。
  • 用途: 不推荐使用,可能导致版本冲突。

  1. x 或 X(通配符)

  • 含义: 允许指定位置的任意版本。

  • 规则:

    • 17.x 或 17.X 表示 17.x.x 的最新版本。
    • 17.0.x 表示 17.0.x 的最新版本。
  • 用途: 类似于 ~ 或 ^,但更灵活。

  1. latest

  • 含义: 安装最新版本。

  • 规则:

    • latest 表示安装当前发布的最新版本。
  • 用途: 不推荐使用,可能导致不兼容。

示例:

{
  "dependencies": {
    "react": "^17.0.2",  // 允许 17.x.x,但不包括 18.0.0
    "lodash": "~4.17.21", // 允许 4.17.x,但不包括 4.18.0
    "vue": "2.6.14",      // 只安装 2.6.14
    "axios": ">=0.21.1",  // 安装 0.21.1 或更高版本
    "express": "*"        // 安装最新版本(不推荐)
  }
}

7. devDependencies

开发环境所需的依赖包,通过 npm install <package> --save-dev 安装。

dependencies 和 devDependencies 的区别

image.png

8. license

项目的许可证类型,用于说明项目的开源许可协议。选择一个适合你项目的许可证类型,确保你的代码在法律上是合法和可信的。