package.json 中的 dependencies 和 devDependencies

190 阅读1分钟

package.json 中的 dependencies 和 devDependencies

定义

dependencies: 生产时依赖

是指如果有人想下载并正常使用你发布的这个 npm 包时所必需的依赖。当某个项目依赖了你发布的这个 npm 包(假设为mylib)时,那么在安装的时候会链式地安装mylib这个项目中dependencies配置声明的依赖。

devDependencies: 开发时依赖

是指除了上述的保证 npm 包正常使用的依赖之外,还有一些用于测试、文档生成、转译以及其他一系列开发时用到的依赖。

为什么要区分?

因为当别人去安装使用你的 npm 包时,他们可能不想也不需要去安装那些开发时的一些依赖(比如测试框架的依赖)。

什么时候应该重视区分 dependencies 和 devDependencies?

我们可以看到,在区分dependenciesdevDependencies时,反复提及了 npm 包。也就是说,当我们正在开发一个 npm 包项目时,需要非常重视区分这两者;而在平时的业务项目的开发中,区不区分影响并不是很大。

如何分别安装依赖到 dependencies 和 devDependencies 中

npm install在没有任何其他 flag 标志时,默认会将指定的依赖包保存在dependencies中。

除此之外,我们可以通过一些额外的 flag 标志来控制依赖包保存在哪以及如何保存:

  • -P, --save-prod: 依赖包会出现在dependencies中。这是默认行为,除非-D或者-Oflag 被使用。
  • -D, --save-dev: 依赖包会出现在devDependencies中。
  • -O, --save-optional: 依赖包会出现在optionalDependencies中。

参考资料