dependencies 和 devDependencies 的区别

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

问题

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

解答

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": {
    "vite": "^4.3.0",
    "eslint": "^8.42.0",
    "jest": "^29.5.0",
    "typescript": "^5.0.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
  • 正确区分两者可以减小生产环境的包体积