前端/移动开发面试题更新 2026-08-05

在 npm 项目工程中,dependencies 与 devDependencies 这两个字段分别起到什么作用?二者在安装、构建和部署环节存在哪些关键差异?

前端/移动开发技术原理方案权衡npm

考察说明

考查候选人对 npm 依赖分类及生产与开发依赖边界的理解。

回答思路

  1. 【回答框架 1】dependencies 是项目运行时必需的依赖,会随应用一起打包部署;devDependencies 仅在开发阶段使用的工具链,如测试框架、构建工具、代码检查器,不会进入生产环境。
  2. 【回答框架 2】安装差异:npm install 默认同时安装两类依赖;若使用 --production 参数或 NODE_ENV=production,则仅安装 dependencies。
  3. 【回答框架 3】构建部署时,若项目打包(如 Webpack),生产包通常只包含被实际引用的模块,但仍应遵循官方语义,把运行时依赖放在 dependencies。
  4. 【回答框架 4】判断标准:代码在 `require` 或 `import` 的模块属于 dependencies;开发辅助工具属于 devDependencies。
  5. 【回答框架 5】风险:误将运行时依赖放入 devDependencies 会导致生产环境因缺少模块而启动失败;将开发工具放入 dependencies 会增大生产安装体积,且可能引入安全隐患。
  6. 【关键点 1】dependencies 是运行时依赖,devDependencies 是开发期依赖。
  7. 【关键点 2】`--production` 安装仅包含 dependencies。
  8. 【关键点 3】判断依据是模块是否在业务代码中 require 或 import。
  9. 【易错点 1】不能因为模块仅在构建脚本中引用就放入 devDependencies,需确认它是否影响运行时。
  10. 【易错点 2】env 变量 NODE_ENV 在 npm install 时生效,但某些 CI 环境可能未设置,需显式使用 --production 或 --only=prod。