工程化
20. dep/devDep 的区别

dependencies 与 devDependencies 有何区别

::: tip Issue 欢迎在 Gtihub Issue 中回答或反馈问题: Issue 521 (opens in a new tab) :::

::: tip Code 可点击此处查看示例或实践代码 (opens in a new tab) :::

::: tip 视频讲解

:::

对于业务代码而讲,它俩区别不大

当进行业务开发时,严格区分 dependenciesdevDependencies 并无必要,实际上,大部分业务对二者也并无严格区别。

当打包时,依靠的是 Webpack/Rollup 对代码进行模块依赖分析,与该模块是否在 dep/devDep 并无关系,只要在 node_modules 上能够找到该 Package 即可。

以至于在 CI 中 npm i --production 可加快包安装速度也无必要,因为在 CI 中仍需要 lint、test、build 等。

对于库 (Package) 开发而言,是有严格区分的

  • dependencies: 在生产环境中使用
  • devDependencies: 在开发环境中使用,如 webpack/babel/eslint 等

当在项目中安装一个依赖的 Package 时,该依赖的 dependencies 也会安装到项目中,即被下载到 node_modules 目录中。但是 devDependencies 不会

因此当我们开发 Package 时,需要注意到我们所引用的 dependencies 会被我们的使用者一并下载,而 devDependencies 不会。

一些 Package 宣称自己是 zero dependencies,一般就是指不依赖任何 dependencies,如 highlight (opens in a new tab)

JavaScript syntax highlighter with language auto-detection and zero dependencies.