package.json史上最全解析

109 阅读2分钟

1. 常见属性

  • name
  • version
  • license
  • author
  • scripts
  • keywords
  • description
  • main
  • dependencies
  • devDependencies 
  • homepage 
  • private 这些大家基本都熟悉,不做赘述。

2. 进阶属性

  1. bugs 用于项目问题的反馈issue地址或者一个邮箱
  2. browser/module 客户端/ESM模块入口文件
  3. contributors 表示一群人,贡献者
  4. files 属性的值是一个数组,内容是模块下文件名或者文件夹名,如果是文件夹名,则文件夹下所有的文件也会被包含进来(除非文件被另一些配置排除了)。可以在模块根目录下创建一个.npmignore文件,写在这个文件里边的文件即便被写在files属性里边也会被排除在外,这个文件的写法与.gitignore类似
  5. bin 用来指定每个内部命令对应的可执行文件的位置。如果你编写的是一个node工具的时候一定会用到bin字段
  6. directories 制定一些方法来描述模块的结构, 用于告诉用户每个目录在什么位置
  7. repository 指定源码地址
  8. config 字段用于添加命令行的环境变量
  9. peerDependencies 字段就是用来供插件指定其所需要的主工具的版本。可以通过peerDependencies字段来限制,使用myless模块必须依赖less模块的3.9.x版本
  10. engines字段指明了该模块运行的平台,比如Node或者npm,yarn的某个版本
  11. os指定模块运行的操作系统
  12. cpu 指定cpu架构
  13. publishConfig 会配合private来使用,如果你只想让模块被发布到一个特定的npm仓库,如一个内部的仓库
  14. preferGlobal 的值是布尔值,表示当用户不将该模块安装为全局模块时(即不用–global参数),要不要显示警告,表示该模块的本意就是安装为全局模块
  15. browserslist 指定该模板供浏览器使用的版本
  16. types/typings 指定类型声明文件位置,会被一起打包输出
  17. overrides 强指定依赖版本
  18. workspaces 定义工作空间
  19. man 指定命令行输出文档

3. 不常见属性

  1. exports 提供了一种方法来为不同的环境和 JavaScript 风格公开您的包模块,同时限制对其内部部分的访问
  2. funding  捐助
  3. bundledDependencies指定发布的时候会被一起打包的模块
  4. optionalDependencies可选安装模块,不影响install
  5. unpkg 用于开启支持cdn服务
  6. gitHead commit hash值