package.json 是每个 Node.js 项目的核心文件,它以 JSON 格式描述项目的各种元数据和配置信息。
这个文件不仅对于 npm(Node 包管理器)至关重要,也是现代 JavaScript 开发不可或缺的一部分。
让我们详细探讨它的主要组成部分:
-
基本信息
- name: 包的名称,必须是小写字母,可以包含连字符和下划线。
- version: 遵循语义化版本控制(Semantic Versioning)的版本号。
- description: 包的简短描述,会显示在 npm 搜索结果中。
- author: 包的作者信息。
- license: 软件许可证,指明如何使用和分发你的代码。
-
入口点和文件
- main: 指定包的主入口文件,通常是 CommonJS 模块格式。
- module: ES 模块的入口文件,支持 tree-shaking。
- types/typings: TypeScript 类型定义文件的路径。
- browser: 为浏览器环境指定的入口文件。
- exports: 更精细地控制模块的导出,可以根据不同的导入方式指定不同的文件。
- files: 指定发布到 npm 时要包含的文件或目录。
- bin: 指定可执行文件的路径,用于创建命令行工具。
-
依赖管理
- dependencies: 生产环境中需要的依赖包。
- devDependencies: 仅在开发和测试阶段需要的依赖。
- 仅在开发和测试阶段需要的依赖。
- 不会被安装到生产环境。
- peerDependencies: 指定宿主环境中应该存在的依赖,常用于插件或库。
- 指定当前包所需要的宿主环境中应该存在的依赖。
- 通常用于插件或库,表明与特定版本的宿主包兼容。
- optionalDependencies: 可选的依赖,安装失败不会影响整个安装过程。
- 可选的依赖,如果这些依赖安装失败,npm 将继续执行。
- 用于那些即使没有也不影响主要功能的依赖。
- bundledDependencies: 指定在发布时要打包的依赖项。
-
脚本和命令
- scripts: 定义各种 npm 脚本命令,如构建、测试、启动服务器等。
例如:
"scripts": { "start": "node server.js", "test": "jest", "build": "webpack" }
- scripts: 定义各种 npm 脚本命令,如构建、测试、启动服务器等。
例如:
-
项目配置
- config: 配置项目的一些参数,可以在 npm 脚本中使用。
- engines: 指定项目运行所需的 Node.js 版本。
- browserslist: 指定项目支持的浏览器版本范围。
-
发布和分发
- private: 如果设为 true,可以防止包被意外发布到 npm。
- publishConfig: 配置发布时的行为,如指定发布的 registry。
- repository: 指定代码仓库的位置。
- homepage: 项目主页的 URL。
- bugs: 问题反馈页面的 URL 或邮箱地址。
-
开发工具配置 许多开发工具允许直接在 package.json 中进行配置,例如:
- eslintConfig: ESLint 的配置。
- prettier: Prettier 的配置。
- babel: Babel 的配置。
- jest: Jest 测试框架的配置。
-
其他元数据
- keywords: 用于 npm 搜索的关键词。
- man: 指定手册页的位置。
- directories: 指定包的目录结构。
- os: 指定包运行的操作系统。
- cpu: 指定包可以运行的 CPU 架构。
- funding: 指定项目的资助信息。