无需登录 数据私有 本地保存

package.json 文件检查器 - 验证字段与依赖规范

35
0
0
0

核心术语详解

package.json

package.json 是 Node.js 项目的元数据文件,通常位于项目根目录。它是一个标准的 JSON 文件,包含了项目的名称、版本、描述、许可证、作者、依赖关系、脚本命令、配置选项等大量信息。npm 和 yarn 等包管理器都依赖 package.json 来了解项目的结构和依赖关系。当执行 npm install 时,包管理器会读取 package.json 中的 dependencies 和 devDependencies 字段来安装所需的依赖包。package.json 还可以包含各种配置字段,如 browserslist、eslintConfig、babel 等,用于配置项目使用的各种工具。

语义化版本号(Semantic Versioning)

语义化版本号是一种版本命名规范,格式为 MAJOR.MINOR.PATCH(例如 2.1.3)。MAJOR 版本在做了不兼容的 API 修改时递增,MINOR 版本在做了向下兼容的功能新增时递增,PATCH 版本在做了向下兼容的问题修正时递增。预发布版本可以在版本号后添加标识,如 1.0.0-alpha.1。构建元数据可以通过加号添加,如 1.0.0+build.123。在 package.json 中,依赖版本号支持多种范围指定方式。

版本号范围符号

精确版本(如 "1.2.3"):只安装指定的精确版本。波浪号范围(如 "~1.2.3"):允许 PATCH 级别更新,即 >=1.2.3 且 <1.3.0。插入号范围(如 "^1.2.3"):允许 MINOR 级别更新,即 >=1.2.3 且 <2.0.0(对于 1.x.x 版本)。星号范围(如 "*"):匹配任意版本。大于等于范围(如 ">=1.2.3"):匹配大于等于指定版本的版本。Hyphen 范围(如 "1.2.3 - 2.3.4"):匹配指定范围内的版本。理解这些符号对于正确管理依赖版本至关重要。

dependencies 与 devDependencies

dependencies 是项目运行时必需的依赖包,在 npm install 时默认安装,并且会被包含在发布的 npm 包中。devDependencies 是仅在开发阶段需要的依赖包,如测试框架、构建工具、代码规范工具等,不会被包含在发布的包中。通过 npm install --production 或设置 NODE_ENV=production 可以只安装 dependencies。合理区分这两类依赖可以减小发布包的体积,避免将开发工具暴露给使用你包的项目。

npm scripts

scripts 字段定义了可以在项目中通过 npm run script-name 执行的命令。npm 提供了一些内置的生命周期脚本,如 preinstallpostinstallprepublishteststartbuild 等。在执行自定义脚本时,npm 会自动查找并执行 pre 前缀和 post 前缀的脚本。例如,执行 npm run build 时会自动先执行 prebuild,执行 npm test 时会自动先执行 pretest。scripts 中的命令可以直接使用 node_modules/.bin 目录下的可执行文件。

许可证标识(License)

license 字段指定项目的开源许可证类型,通常使用 SPDX 许可证标识符。常见的许可证包括:MIT(最宽松,几乎无限制)、Apache-2.0(允许商业使用,需要注明修改)、GPL-3.0(衍生作品必须开源)、BSD-2-Clause(类似 MIT)、ISC(类似 MIT 的简化版)。如果没有合适的许可证,可以使用 UNLICENSED 表示私有项目。在 npm 发布时,license 字段是强烈建议配置的,它决定了其他人可以如何合法地使用你的代码。

main 字段

main 字段指定了包的入口文件路径,当其他项目通过 require('package-name') 引入你的包时,Node.js 会加载这个文件。如果未指定 main 字段,默认加载包根目录下的 index.js。对于 ES Module 格式的包,应该使用 module 字段指定入口。对于支持 TypeScript 的包,可以使用 types 字段指定类型声明文件的路径。合理配置入口文件可以确保包的正确加载和类型推断。

engines 字段

engines 字段用于声明项目运行所需的 Node.js 和 npm 版本范围。例如 "node": ">=14.0.0" 表示项目需要 Node.js 14 或更高版本。配合 engine-strict 配置,npm 会在安装时检查当前 Node.js 版本是否满足要求,不满足则拒绝安装。这个字段对于确保项目在正确的运行环境中执行非常重要,特别是在团队协作和 CI/CD 环境中。