package.json 中常见字段的详细说明

146 阅读2分钟
字段名是否必填描述示例
name包的名称,在 npm 上必须唯一,只能包含小写字母、数字、连字符和下划线。"name": "my-awesome-package"
version遵循语义化版本规范(SemVer),格式为 MAJOR.MINOR.PATCH"version": "1.2.3"
description包的简要描述,有助于在 npm 搜索结果中展示。"description": "这是一个很棒的包,能实现特定功能"
keywords用于描述包的关键词数组,便于搜索。"keywords": ["util", "helper", "tool"]
homepage包的项目主页 URL。"homepage": "https://github.com/user/my-package#readme"
bugs包含 url 和 email 字段,分别指向问题反馈页面和反馈邮箱。"bugs": { "url": "https://github.com/user/my-package/issues", "email": "support@example.com" }
license包的开源许可证,如 MITApache-2.0 等。"license": "MIT"
author包的作者信息,可以是字符串或对象(包含 nameemailurl)。"author": "John Doe <john@example.com> (https://example.com)"
contributors贡献者信息数组,格式同 author"contributors": [ "Jane Smith <jane@example.com> (https://example.com)" ]
files指定发布时要包含的文件和目录数组,不指定则默认包含所有文件。"files": ["src", "dist", "README.md"]
main指定包的入口文件,require('package-name') 时会加载该文件。"main": "lib/index.js"
browser类似于 main,但用于浏览器环境。"browser": "dist/bundle.js"
bin定义可执行文件,可在命令行中使用。可以是单个字符串或对象。"bin": { "my-cli": "bin/my-cli.js" }
man指定手册页文件路径数组。"man": [ "doc/my-package.1" ]
directories描述包的目录结构,常见子字段有 libbindoctest 等。"directories": { "lib": "lib", "test": "test" }
repository包含 type 和 url 字段,指向代码仓库信息。"repository": { "type": "git", "url": "https://github.com/user/my-package.git" }
scripts定义可通过 npm run 执行的脚本,键为脚本名,值为命令。"scripts": { "start": "node server.js", "test": "jest" }
config为 scripts 中的脚本提供配置参数。"config": { "port": 3000 }
dependencies生产环境依赖的包及其版本范围,安装时会一并安装。"dependencies": { "lodash": "^4.17.21", "axios": "^0.21.1" }
devDependencies开发环境依赖的包及其版本范围,如测试工具、打包工具等。"devDependencies": { "jest": "^27.0.6", "webpack": "^5.38.1" }
peerDependencies指定与当前包兼容的其他包的版本范围,不会自动安装。"peerDependencies": { "react": "^17.0.2", "react-dom": "^17.0.2" }
peerDependenciesMeta为 peerDependencies 提供元信息,如 optional 表示该依赖是可选的。"peerDependenciesMeta": { "lodash": { "optional": true } }
bundledDependencies指定打包时要包含的依赖数组。"bundledDependencies": ["lodash", "axios"]
optionalDependencies可选依赖,安装失败不会影响整个安装过程。"optionalDependencies": { "fsevents": "^2.3.2" }
engines指定包运行所需的 Node.js 或 npm 版本范围。"engines": { "node": ">=14.0.0", "npm": ">=7.0.0" }
os指定包可以运行的操作系统数组。"os": ["darwin", "linux"]
cpu指定包可以运行的 CPU 架构数组。"cpu": ["x64", "arm64"]
private设置为 true 时,npm 不会发布该包。"private": true
publishConfig发布时的额外配置,如 registry 指定发布的 npm 注册表。"publishConfig": { "registry": "https://registry.npmjs.org" }