核心在于生产环境是否必需:dependencies是运行时必需的包(如React、Express),写入时用-S或默认安装;devDependencies是开发专用工具(如Webpack、Jest),用-D安装;部署时npm install --production仅装dependencies。

npm 通过用途和安装时机来区分 dependencies 和 devDependencies,核心在于“这个包是不是生产环境运行所必需的”。
看用途:运行时需要 vs 开发时才用
dependencies 是项目上线后实际运行时依赖的包,比如 Express、React、Axios、Lodash —— 没有它们,程序会直接报错或功能缺失。
devDependencies 是开发阶段才用得上的工具,比如 Webpack、Jest、ESLint、TypeScript、Vite —— 它们只参与构建、测试、检查,代码一旦打包完成,就和生产环境无关了。
看安装命令:默认写进哪一类
-
npm install express或npm install express --save(-S)→ 写入 dependencies -
npm install jest --save-dev(-D)→ 写入 devDependencies - npm 5.0+ 后,
npm install xxx默认自动加到 dependencies,不加参数不会进 devDependencies
看部署行为:生产环境只装 dependencies
执行 npm install --production(或 CI/CD 部署常用)时,npm 只读取并安装 dependencies 中的包,完全跳过 devDependencies。
这能显著减小线上 node_modules 体积、缩短安装时间、降低安全扫描范围。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
看 package.json 结构:字段位置一目了然
打开你的 package.json,两个字段是平级的独立对象:
立即学习“Java免费学习笔记(深入)”;
"dependencies": { "express": "^4.18.2", "axios": "^1.5.0" },"devDependencies": { "jest": "^29.6.0", "eslint": "^8.47.0" }

















