npm依赖管理核心是理清package.json(源头)、package-lock.json(底线)、node_modules(结果)三层关系:初始化用npm init -y,分清dependencies、devDependencies等依赖类型,安装还原依赖以package-lock.json为准,高频操作均围绕package.json展开。

学 npm 依赖管理,关键不是背命令,而是理解 package.json 是源头、package-lock.json 是底线、node_modules 是结果 这三层关系。只要理清这个逻辑,日常操作就自然清晰了。
从初始化项目开始,把 package.json 建对
运行 npm init -y 一键生成基础文件,适合新手起步;若需自定义,用 npm init 交互填写。重点检查三个字段:
-
name:全小写、短横线分隔、不含空格或大写字母(如
my-cli-tool) -
type:建议显式设为
"module",避免import和require混用报错 -
version:必须是合法语义化版本(如
1.0.0),不能写1.0或dev
分清依赖类型,写进正确字段
装错位置,上线就报错。不是所有包都该塞进 dependencies:
-
dependencies:运行时真正需要的包,比如
axios、react。执行npm install axios默认写入这里 -
devDependencies:只在开发、构建、测试阶段用,比如
vite、eslint。加-D参数:npm install eslint -D -
peerDependencies:不自动安装,由宿主项目提供(如组件库声明
"react": "^18.0.0"),漏配会警告但不中断 -
optionalDependencies:安装失败也不影响流程(如
fsevents只在 macOS 有效)
依赖安装和还原,靠 package-lock.json 驱动
它不是缓存,是精确快照——记录每个包的完整路径、哈希值、嵌套关系。多人协作必须提交到 Git:
- 本地运行
npm install(不带参数):按package.json+package-lock.json还原整个依赖树,不升级、不改配置 - CI/CD 推荐用
npm ci:跳过解析,直接按 lock 文件安装,更快更确定 - 想彻底重装?先删
node_modules和package-lock.json,再运行npm install
日常高频操作,记住核心逻辑
所有命令都围绕 package.json 展开,不是围绕 node_modules:
- 装新包:
npm install lodash→ 写入dependencies;加@1.2.3锁定版本 - 装开发包:
npm install jest -D→ 写入devDependencies - 卸载包:
npm uninstall axios→ 自动从对应字段移除条目 - 查一级依赖:
npm list --depth=0;查过期包:npm outdated











