1. 常见属性
- name
- version
- license
- author
- scripts
- keywords
- description
- main
- dependencies
- devDependencies
- homepage
- private 这些大家基本都熟悉,不做赘述。
2. 进阶属性
- bugs 用于项目问题的反馈issue地址或者一个邮箱
- browser/module 客户端/ESM模块入口文件
- contributors 表示一群人,贡献者
- files 属性的值是一个数组,内容是模块下文件名或者文件夹名,如果是文件夹名,则文件夹下所有的文件也会被包含进来(除非文件被另一些配置排除了)。可以在模块根目录下创建一个.npmignore文件,写在这个文件里边的文件即便被写在files属性里边也会被排除在外,这个文件的写法与.gitignore类似
- bin 用来指定每个内部命令对应的可执行文件的位置。如果你编写的是一个node工具的时候一定会用到bin字段
- directories 制定一些方法来描述模块的结构, 用于告诉用户每个目录在什么位置
- repository 指定源码地址
- config 字段用于添加命令行的环境变量
- peerDependencies 字段就是用来供插件指定其所需要的主工具的版本。可以通过peerDependencies字段来限制,使用myless模块必须依赖less模块的3.9.x版本
- engines字段指明了该模块运行的平台,比如Node或者npm,yarn的某个版本
- os指定模块运行的操作系统
- cpu 指定cpu架构
- publishConfig 会配合private来使用,如果你只想让模块被发布到一个特定的npm仓库,如一个内部的仓库
- preferGlobal 的值是布尔值,表示当用户不将该模块安装为全局模块时(即不用–global参数),要不要显示警告,表示该模块的本意就是安装为全局模块
- browserslist 指定该模板供浏览器使用的版本
- types/typings 指定类型声明文件位置,会被一起打包输出
- overrides 强指定依赖版本
- workspaces 定义工作空间
- man 指定命令行输出文档
3. 不常见属性
- exports 提供了一种方法来为不同的环境和 JavaScript 风格公开您的包模块,同时限制对其内部部分的访问
- funding 捐助
- bundledDependencies指定发布的时候会被一起打包的模块
- optionalDependencies可选安装模块,不影响install
- unpkg 用于开启支持cdn服务
- gitHead commit hash值