Skip to content

package.json 说明

package.json

jsonc
{
  // [必须配置项]
  // 项目的名称,必须是唯一的。
  "name": "my-project",
  // 项目的版本号,遵循 x.y.z 的格式,其中 x 表示主版本号、y 表示次版本号、z 表示修订版本号。
  "version": "1.0.0",

  // [可选配置项]
  // 项目的描述信息。
  "description": "My awesome project",
  // 关键字,用于搜索。
  "keywords": ["keyword1", "keyword2"],
  // 项目的主页。
  "homepage": "https://my-project.com",
  // 代码仓库信息,包含 type 和 url 两个字段。
  "repository": {
    "type": "git",
    "url": "https://github.com/my-username/my-project.git"
  },
  // 问题反馈地址,包含 url 和 email 两个字段。
  "bugs": {
    "url": "https://github.com/my-username/my-project/issues"
  },
  // 项目的许可证类型。
  "license": "MIT",
  // 作者信息,包含 name、email 和 url 三个字段。
  "author": {
    "name": "My Name",
    "email": "my-email@example.com",
    "url": "https://my-website.com"
  },
  // 贡献者信息,包含一个数组,每个元素是一个对象,包含 name、email 和 url 三个字段。
  "contributors": [
    {
      "name": "Contributor 1",
      "email": "contributor1@example.com",
      "url": "https://contributor1-website.com"
    },
    {
      "name": "Contributor 2",
      "email": "contributor2@example.com",
      "url": "https://contributor2-website.com"
    }
  ],
  // 项目的生产环境依赖包,会在安装时一并安装。
  "dependencies": {
    "dependency1": "^1.0.0",
    "dependency2": "^2.0.0",
    "dependency3": "^3.0.0"
  },
  // 项目的开发环境依赖包,不会在安装时一并安装。
  "devDependencies": {
    "devDependency1": "^1.0.0",
    "devDependency2": "^2.0.0",
    "devDependency3": "^3.0.0"
  },
  // 项目的对等依赖包,必须和它的父级模块使用同一个包。
  "peerDependencies": {
    "peerDependency1": "^1.0.0",
    "peerDependency2": "^2.0.0",
    "peerDependency3": "^3.0.0"
  },
  // 可选依赖包,如果没有安装,不会影响程序的运行。
  "optionalDependencies": {
    "optionalDependency1": "^1.0.0",
    "optionalDependency2": "^2.0.0",
    "optionalDependency3": "^3.0.0"
  },
  // 打包在模块中的依赖包,用于发布模块时一并打包。
  "bundledDependencies": ["dependency1", "dependency2"],
  // 项目的可执行文件,包含一个对象,键名是可执行文件的名称,值是可执行文件的路径。
  "bin": {
    "my-cli": "./bin/my-cli.js"
  },
  // 项目的入口文件,默认为 index.js。
  "main": "index.js",
  // ES6 模块的入口文件。
  "module": "src/index.js",
  // TypeScript 类型定义文件的入口文件。
  "types": "src/index.d.ts",
  // 发布到 npm 上的文件列表,可以使用通配符。
  "files": ["dist/", "src/", "README.md"],
  // 包含一个 lib 字段和一个或多个自定义的目录字段,用于指定程序的目录结构。
  "directories": {
    "doc": "docs",
    "test": "tests"
  },
  // 定义了一组脚本命令,可以使用 npm run <script-name> 命令来运行。
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  },
  // 自定义配置项。
  "config": {
    "my-config": true
  },
  // 字段指定了该包所依赖的 Node.js 版本,版本号必须大于等于 10.0.0。不符合要求,将会发出警告。
  "engines": {
    "node": ">=10.0.0",
    "npm": ">=6.0.0"
  },
  // 发布到 npm 上的 man 文档的路径。
  "man": ["doc/man/my-package.1", "doc/man/my-package.2"],
  // 支持的操作系统类型,是一个字符串数组。
  "os": ["linux", "darwin"],
  // 支持的 CPU 架构类型,是一个字符串数组。
  "cpu": ["x64", "arm64"],
  // 用于指定项目支持的浏览器版本范围的配置项
  "browserslist": [
    // 支持最近 n 个版本的浏览器。
    "last 2 versions",
    // 支持全球使用率大于 x% 的浏览器。
    "> 1%",
    // 支持 IE 版本号为 x 的浏览器。
    "IE 11",
    // 排除指定的浏览器(没有安全更新的)。
    "not dead"
  ],
  // 如果设置为 true,则表示这个包是私有的,不能发布到 npm 上。
  "private": false,
  // 发布到 npm 上的配置项,包含 registry、access 和 tag 三个字段。
  "publishConfig": {
    "registry": "https://registry.npmjs.org/",
    "access": "public",
    "tag": "latest"
  }
}