package.json 属性概览

package.json 俗称 依赖配置文件(我本身取的名),最主要的做用就是,管理项目中所用到的依赖。它自己的做用是为 node.js 模块服务的,模块有不少属性,为了描述模块的特性,package.json 也被称做模块的 描述文件html

name version

nameversionpackage.json 中最重要的两个属性,并且是必填的。这两个属性一块儿就造成了 npm 模块惟一标识符。分别表示 模块的 名称 和 版本。名称通常不会变,版本会随着模块的修改而更新变更。前端

description keywords

这两个字段都是用来在 npm 官网上搜索的, 区别是一个是字符串, 一个是字符串数组。node

dependencies devDependencies

这两个属性,都是用来记录项目中所用到的依赖。区别是,一个是用来记录开发环境所用的依赖,一个是记录生产环境所用到的依赖。git

好比,对于大多数前端项目来讲,gulp 等构件工具及插件,可能只在开发环境中使用,而在生产环境只关心最终生成的 dist 文件,因此,gulp 等插件 就应该放在 devDependencies 下。npm

经过 npm i xxx -savenpm i xxx -syarn add xxx -S 安装的依赖会添加到 dependencies 下;json

经过 npm i xxx -save-devnpm i xxx -dyarn add xxx -D 安装的依赖会添加到 devDependencies 下;gulp

peerDependencies

可让宿主环境拥有某个特定版本的依赖数组

探讨npm依赖管理之peerDependencies工具

前提项目X 依赖 模块A, 模块A 依赖 模块B插件

状况一:若是 模块B 定义在 模块Adependencies 字段中
结果模块B 只能被 模块A 引用
可能的好处:假如 项目X 也依赖 模块B,版本不同,则能够互不干扰。
可能的坏处:假如 项目X 也依赖 模块B,且版本同样,则会有两个如出一辙的 模块B

项目X
└──node_modules/
   └── 模块A
       └──node_modules/
          └── 模块B

状况二:若是 模块B 定义在 模块ApeerDependencies 字段中
结果项目X 也会下载 或 检查 模块b 的版本。
可能的好处:假如 项目X 也依赖 模块B,版本不同,则会在控制台以警告的形式提示版本问题。
可能的坏处:假如 项目X 也依赖 模块B,且版本同样,只用下载一遍。

项目X
└──node_modules/
   ├── 模块a
   └── 模块b

结论:定义在 peerDependencies 中的依赖,在宿主环境中,也会被下载 或 被检查版本。

files

files 是一个包含项目中的文件的数组。若是命名了一个文件夹,那也会包含文件夹中的文件。(除非被其余条件忽略了 .npmignore .gitignore)

npm publish 的时候,会依据这个配置 上传你的文件。

scripts

scripts 是一个由脚本命令组成的 kye value 对象。

相关文章
相关标签/搜索