package.json 字段意义
常规字段
name
包名
version
版本名,semver
cheatsheet: https://devhints.io/semver
符号 | 含义 | 举例 | |
---|---|---|---|
~ | 锁minor版本 | ~1.2.3 | is >=1.2.3 <1.3.0 |
^ | 锁第一个非0版本 | ^0.2.3 | is >=0.2.3 <0.3.0 |
description
简介
keywords
关键词,用于方便搜索
homepage
官网链接
bugs
反馈bug的方式
license
开源许可
files
npm 安装时被包含下载的文件,不设置则为 [*]
包含所有文件。
.npmignore
和 .gitignore
可实现相同功能,优先级 package.json#files
> .npmignore
> .gitignore
repository
项目仓库地址相关
重要字段
main
Node CommonJs 规范的模块入口
module
原本ESM规范的模块入口?
Node 没有采纳的「定义 ESM 入口的字段」提案,npm 与 Node 的文档中并没有标注这个字段
实际上是社区打包方案支持了该字段,约等于 main
字段。
browser
浏览器环境的模块入口
1 | { |
type
配置 Node 对待 js 文件的模块处理方式,如果 "type": "module"
则认为用 ES module 规范处理该文件,如果 "type": "commonjs"
则用CommonJs 规范处理该文件
export
Node 提案, main
字段的替代
可以提供子路径入口、条件判断入口
新版本中 Node 推荐使用该字段
bin
配置可执行命令的名称和实际执行程序路径
安装npm 包时,会建立一个symlink
scripts
内置脚本命令配置
dependencies
运行依赖
支持:
- semver
- URLs
- git URL
- GitHub URLs
- Local Paths
devDependencies
开发环境依赖
peerDependencies
同伴依赖,不会被自动安装,通常用于表示与另一个包的依赖与兼容性关系来警示使用者
overrides
重写项目依赖的依赖,及其依赖树下某个依赖的版本号,进行包的替换
workspaces
工作区配置,用于在本地的根目录下管理多个子项目
可以自动地在 npm install 时将 workspaces 下面的包,软链到根目录的 node_modules 中
次要字段
man
帮助命令 man
文档
bundleDependencies
打包依赖。它的值是一个数组,在发布包时,bundleDependencies 里面的依赖都会被一起打包
optionalDependencies
可选依赖,不影响安装依赖的成功
engines
对 Node 或 包管理 的版本要求
os
系统要求
private
私有项目
publishConfig
npm 包发布时使用的配置