package.json的配置参考
package.json
文件是Node.js项目中的一个重要配置文件,用于存储项目的元数据和各种配置信息。
以下是一些常见的 package.json
配置项:
{
"name": "my-project", // 项目名称,遵循npm的命名规范
"private":true,//如果设置为 true,npm 将拒绝发布此包。
"version": "1.0.0", // 项目版本号,遵循semver规范
"description": "A short description of your project", // 项目描述
"main": "index.js", // 项目的入口文件
"bin": {
"my-cli": "./bin/my-cli.js" // 如果你想让npm install -g全局安装后,可以通过命令行直接运行某个文件,可以在这里配置
},
"scripts": {
"start": "node index.js", // 启动项目的命令
"test": "jest", // 测试命令
"lint": "eslint .", // 代码风格检查命令
"build": "webpack --config webpack.prod.js", // 构建生产环境的命令
"dev": "webpack serve --config webpack.dev.js" // 开发服务器启动命令
},
"dependencies": {
"express": "^4.17.1", // 项目运行所依赖的模块
"axios": "^0.21.1" // 其他依赖模块
},
"devDependencies": {
"jest": "^27.0.0", // 开发依赖的测试框架
"eslint": "^7.0.0", // 开发依赖的代码风格检查工具
"webpack": "^5.0.0", // 开发依赖的打包工具
"webpack-cli": "^4.0.0", // webpack的命令行工具
"webpack-merge": "^5.0.0" // 用于合并webpack配置文件
},
"peerDependencies": {
"react": "^17.0.0" // 同等依赖,表示你的包需要和其他包一起使用,且版本需要匹配
},
"optionalDependencies": {
"fsevents": "^2.0.0" // 可选依赖,如果无法安装则不会报错
},
"engines": {
"node": ">=14.0.0", // 项目所依赖的Node.js版本范围
"npm": ">=6.0.0" // 项目所依赖的npm版本范围
},
"browserslist": [
"> 0.2%", // 目标浏览器版本范围
"not dead", // 不包括已经废弃的浏览器
"not ie <= 11" // 不包括IE 11及以下版本
],
"files": [
"dist", // 发布的npm包中包含的文件和目录
"src"
],
"author": "Your Name <your.email@example.com>", // 作者信息
"license": "ISC", // 许可证信息
"repository": {
"type": "git",
"url": "git+https://github.com/your-username/my-project.git" // 项目仓库地址
},
"bugs": {
"url": "https://github.com/your-username/my-project/issues" // 项目问题跟踪地址
},
"homepage": "https://github.com/your-username/my-project#readme", // 项目主页或文档地址
"keywords": [
"example",
"project" // 项目的关键词列表
],
"publishConfig": {
"registry": "https://your-custom-registry.com" // 自定义的npm仓库地址
},
"config": {
"port": "8080" // 自定义配置,可以通过npm_package_config_port在代码中获取
},
"directories": {
"lib": "lib", // 指示库文件的位置
"test": "test" // 指示测试文件的位置
},
"types": "./index.d.ts", // TypeScript的类型定义文件
"workspaces": [
"packages/*" // 如果你的项目是一个monorepo,这里可以配置工作区的位置
],
// 其他可能的配置项...
}
配置具体描述:
-
name:
- 项目的名称。
- 名称的长度应小于或等于 214 个字符。
- 不能以点(
.
)或下划线(_
)开头。 - 不能包含大写字母(因为 npm 包的 URL 是基于这个名称生成的)。
- 名称应尽可能简短且语义化。
-
version:
- 项目的版本号,遵循语义化版本规范(semver)。
-
description:
- 项目的简短描述。
-
main:
- 项目的入口文件,通常是 JavaScript 文件。
- 当其他文件通过
require()
引入你的项目时,会加载这个文件。
-
scripts:
- 项目的 npm 脚本,可以包含各种启动、测试、构建等命令。
-
dependencies:
- 项目运行所依赖的模块列表。
- 这些依赖会被安装到生产环境。
-
devDependencies:
- 项目开发过程中需要的依赖,但不会在生产环境中使用。
-
peerDependencies:
- 同等依赖,表示你的包需要和其他包一起使用,且版本需要匹配。
-
optionalDependencies:
- 可选依赖,如果无法安装则不会报错。
-
engines:
- 指定项目所依赖的 Node.js 和 npm 的版本范围。
-
browserslist:
- 指定项目的目标浏览器版本,用于工具如 Autoprefixer、Babel 等。
-
bin:
- 指定可执行文件的位置,以便 npm install -g 时可以全局安装。
-
files:
- 指定在发布 npm 包时需要包含的文件列表。
-
author:
- 项目的作者信息。
-
license:
- 项目的许可证信息,如 MIT、BSD 等。
-
repository:
- 项目的仓库地址,如 GitHub 仓库。
-
bugs:
- 项目问题提交地址,通常是 GitHub issue 页面的链接。
-
homepage:
- 项目的主页或文档地址。
-
keywords:
- 项目的关键词列表,用于 npm 搜索。
-
publishConfig:
- 发布时使用的配置,如自定义的 npm 仓库地址。
-
config:
- 用于配置脚本中使用的环境变量。
-
directories:
- 指定项目目录的用途,如
lib
表示库文件的位置,test
表示测试文件的位置。
- 指定项目目录的用途,如
-
types 或 typings:
- 对于 TypeScript 项目,指定类型定义文件的位置。
-
workspaces:
- 对于 monorepo(多包仓库),指定工作区的位置。
-
private:
- 如果设置为
true
,npm 将拒绝发布此包。
- 如果设置为
-
sideEffects:
- 对于 webpack 等打包工具,指定模块是否有副作用(即是否每次导入时都需要执行)。
-
os:
- 指定模块可以在哪些操作系统上运行。
-
cpu:
- 指定模块可以在哪些 CPU 架构上运行。
-
exports:
- 定义一个包的子路径的入口点,允许其他包使用更细粒度的导入语句。
-
module:
- 指定 ES6 模块入口点,用于支持 ES6 模块的打包工具。
-
browser:
- 指定在浏览器环境中使用的入口点。
-
unpkg 和 jsdelivr:
- 指定用于通过 unpkg 或 jsdelivr CDN 服务的文件路径。
-
resolutions:
- 用于覆盖依赖项中的特定子依赖项的版本。
-
bundleDependencies 或 bundledDependencies:
- 列出在发布包时应该被打包的依赖项。
-
man:
- 指定 man 手册文件的位置。
-
contributors:
- 项目的贡献者列表。
-
funding:
- 指定项目的资金赞助信息。