关于package.json

106 阅读3分钟

package.json 是每个 Node.js 项目的核心文件,它以 JSON 格式描述项目的各种元数据和配置信息。

这个文件不仅对于 npm(Node 包管理器)至关重要,也是现代 JavaScript 开发不可或缺的一部分。

让我们详细探讨它的主要组成部分:

  1. 基本信息

    • name: 包的名称,必须是小写字母,可以包含连字符和下划线。
    • version: 遵循语义化版本控制(Semantic Versioning)的版本号。
    • description: 包的简短描述,会显示在 npm 搜索结果中。
    • author: 包的作者信息。
    • license: 软件许可证,指明如何使用和分发你的代码。
  2. 入口点和文件

    • main: 指定包的主入口文件,通常是 CommonJS 模块格式。
    • module: ES 模块的入口文件,支持 tree-shaking。
    • types/typings: TypeScript 类型定义文件的路径。
    • browser: 为浏览器环境指定的入口文件。
    • exports: 更精细地控制模块的导出,可以根据不同的导入方式指定不同的文件。
    • files: 指定发布到 npm 时要包含的文件或目录。
    • bin: 指定可执行文件的路径,用于创建命令行工具。
  3. 依赖管理

    • dependencies: 生产环境中需要的依赖包。
    • devDependencies: 仅在开发和测试阶段需要的依赖。
      • 仅在开发和测试阶段需要的依赖。
      • 不会被安装到生产环境。
    • peerDependencies: 指定宿主环境中应该存在的依赖,常用于插件或库。
      • 指定当前包所需要的宿主环境中应该存在的依赖。
      • 通常用于插件或库,表明与特定版本的宿主包兼容。
    • optionalDependencies: 可选的依赖,安装失败不会影响整个安装过程。
      • 可选的依赖,如果这些依赖安装失败,npm 将继续执行。
      • 用于那些即使没有也不影响主要功能的依赖。
    • bundledDependencies: 指定在发布时要打包的依赖项。
  4. 脚本和命令

    • scripts: 定义各种 npm 脚本命令,如构建、测试、启动服务器等。 例如:
      "scripts": {
        "start": "node server.js",
        "test": "jest",
        "build": "webpack"
      }
      
  5. 项目配置

    • config: 配置项目的一些参数,可以在 npm 脚本中使用。
    • engines: 指定项目运行所需的 Node.js 版本。
    • browserslist: 指定项目支持的浏览器版本范围。
  6. 发布和分发

    • private: 如果设为 true,可以防止包被意外发布到 npm。
    • publishConfig: 配置发布时的行为,如指定发布的 registry。
    • repository: 指定代码仓库的位置。
    • homepage: 项目主页的 URL。
    • bugs: 问题反馈页面的 URL 或邮箱地址。
  7. 开发工具配置 许多开发工具允许直接在 package.json 中进行配置,例如:

    • eslintConfig: ESLint 的配置。
    • prettier: Prettier 的配置。
    • babel: Babel 的配置。
    • jest: Jest 测试框架的配置。
  8. 其他元数据

    • keywords: 用于 npm 搜索的关键词。
    • man: 指定手册页的位置。
    • directories: 指定包的目录结构。
    • os: 指定包运行的操作系统。
    • cpu: 指定包可以运行的 CPU 架构。
    • funding: 指定项目的资助信息。