npm通过dependencies和devdependencies区分运行时与开发依赖,支持--omit=dev生产安装、^/~版本控制及package-lock.json锁定版本,确保环境一致。

区分 dependencies 和 devDependencies
一个项目里,不是所有依赖都该被打包进最终产物。比如你用 Vite 启动本地服务、用 ESLint 检查代码,这些只在开发阶段起作用;而 React 或 Vue 这类运行时库,必须随页面一起加载。
-
dependencies:项目上线后仍需运行的依赖,如
react、axios、lodash -
devDependencies:仅用于开发构建的工具,如
vite、eslint、@types/react
安装时加对应参数就能自动归类:
-
npm install react axios→ 写入dependencies -
npm install --save-dev vite eslint→ 写入devDependencies
安装与部署时精准控制依赖范围
本地开发时你可能需要全部依赖,但部署到生产环境时,devDependencies 不仅没用,还会拖慢安装速度、增大镜像体积。
- 默认执行
npm install会装dependencies和devDependencies - CI/CD 或线上部署推荐加
--omit=dev:npm install --omit=dev - 也可以用
NODE_ENV=production npm install,效果相同
版本管理要兼顾稳定与更新
package.json 里写的版本号前缀(如 ^1.2.3 或 ~1.2.3)直接决定能否自动升级:
-
^1.2.3允许升到1.x.x最新版(次版本和补丁版本可变) -
~1.2.3只允许升到1.2.x(仅补丁版本可变) - 生产关键项目建议用固定版本(如
"lodash": "4.17.21"),避免意外变更
每次 npm install 生成的 package-lock.json 会锁定实际安装的精确版本,确保团队和部署环境行为一致。
常用操作命令速查
- 初始化项目:
npm init -y - 查看已装依赖树:
npm list --depth=0(只看顶层) - 检查过期包:
npm outdated - 更新单个包:
npm update lodash - 卸载并从 package.json 移除:
npm uninstall axios(自动删dependencies)、npm uninstall --save-dev eslint(删devDependencies)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











