package.json 和 package-lock.json的区别
package.json 和 package-lock.json 是 npm 管理依赖时的核心文件,二者定位、作用和生成逻辑完全不同,核心区别可总结为:
package.json是「依赖声明清单」package-lock.json是「依赖安装快照」,记录安装时的精确依赖版本、完整依赖树、下载地址、哈希值等,保证 “装的和上次完全一样”。
两个都是前端开发的时候必须提交到远程仓库的文件,用于保证团队协作。
devDependency和dependency的区别
dependencies是项目「运行时必须的依赖」这类依赖是项目能正常运行的核心,缺少会导致功能报错。
适用场景:
- 前端业务代码直接调用的库(如 `axios` 发请求、`lodash` 处理数据、`react` 渲染页面);
- 后端服务的核心框架(如 `express`、`koa`、`mongoose`);
- 运行时必须的工具(如 `dayjs` 处理时间、`jsonwebtoken` 生成 token)。
devDependencies仅「开发 / 构建阶段需要」,运行时可移除,因此如果是仅用于开发/构建的工具切记不要安装到dependency里面,不然会无效增加最终打包体积。这类依赖仅用于开发、构建、测试流程,项目运行时完全不需要,移除后不影响业务功能。
适用场景:
- 代码检查工具(eslint、prettier);
- 构建 / 编译工具(webpack、vite、babel、tsc);
- 测试工具(jest、vitest、cypress);
- 开发环境辅助工具(nodemon、cross-env);
- 样式预处理工具(sass-loader、less-loader)。