devDependencies 与 dependencies 的区别

package.json 中两种依赖类型的使用场景和安装方式

问题

package.json 文件中的 devDependenciesdependencies 有什么区别?

解答

dependencies

dependencies 用于指定生产环境运行所需的依赖项,这些包会被打包到最终的应用中。

{
  "dependencies": {
    "react": "^18.2.0",
    "axios": "^1.4.0",
    "lodash": "^4.17.21"
  }
}

安装方式:

npm install <package-name>
# 或
npm install <package-name> --save

devDependencies

devDependencies 用于指定开发过程中所需的依赖项,这些包不会被打包到生产环境。

{
  "devDependencies": {
    "webpack": "^5.88.0",
    "eslint": "^8.45.0",
    "jest": "^29.6.0",
    "@types/react": "^18.2.0"
  }
}

安装方式:

npm install <package-name> --save-dev
# 或
npm install <package-name> -D

安装行为

# 安装所有依赖(包括 dependencies 和 devDependencies)
npm install

# 仅安装 dependencies(生产环境)
npm install --production

关键点

  • dependencies 是运行时必需的依赖,会被打包到生产环境
  • devDependencies 是开发时使用的工具,如测试框架、构建工具、代码检查工具
  • 生产环境部署时使用 npm install --production 可以只安装 dependencies,减小体积
  • 正确区分两者可以优化安装速度和部署包大小