package.json 中的 dependencies 和 devDependencies
定义
dependencies: 生产时依赖
是指如果有人想下载并正常使用你发布的这个 npm 包时所必需的依赖。当某个项目依赖了你发布的这个 npm 包(假设为mylib
)时,那么在安装的时候会链式地安装mylib
这个项目中dependencies
配置声明的依赖。
devDependencies: 开发时依赖
是指除了上述的保证 npm 包正常使用的依赖之外,还有一些用于测试、文档生成、转译以及其他一系列开发时用到的依赖。
为什么要区分?
因为当别人去安装使用你的 npm 包时,他们可能不想也不需要去安装那些开发时的一些依赖(比如测试框架的依赖)。
什么时候应该重视区分 dependencies 和 devDependencies?
我们可以看到,在区分dependencies
和 devDependencies
时,反复提及了 npm 包。也就是说,当我们正在开发一个 npm 包项目时,需要非常重视区分这两者;而在平时的业务项目的开发中,区不区分影响并不是很大。
如何分别安装依赖到 dependencies 和 devDependencies 中
npm install
在没有任何其他 flag 标志时,默认会将指定的依赖包保存在dependencies
中。
除此之外,我们可以通过一些额外的 flag 标志来控制依赖包保存在哪以及如何保存:
-P, --save-prod
: 依赖包会出现在dependencies
中。这是默认行为,除非-D
或者-O
flag 被使用。-D, --save-dev
: 依赖包会出现在devDependencies
中。-O, --save-optional
: 依赖包会出现在optionalDependencies
中。