npm
一句话
npm 是 JavaScript 的包管理工具,负责下载项目依赖的代码包,并运行项目里预设的命令。
大白话
npm 像项目的采购员兼管家:照着 package.json 这张采购单把需要的材料一样样买齐,还记住“启动”“打包”这些常用口令,你一喊他就去办。
比喻的边界
采购员买来的东西不保证好用,第三方包可能有漏洞或和你的版本冲突;依赖装成功只说明材料到了,不说明项目能跑对。
拿去就能用
我刚拿到,里面有 package.json。帮我看看项目用的是 npm 还是别的包管理器、有没有锁文件,告诉我用哪条命令装依赖、哪条命令启动,装完怎样算成功。
还差:这个项目,发给 AI 前记得换掉
项目上周还能跑,今天重新 npm install 后一启动就报错。我怀疑某个依赖被升级了,先帮我对比 package.json 和锁文件的改动,找出版本变了的包,确认后再决定要不要固定版本。
我想给项目加上,网上有好几个现成的包。帮我比较两三个候选包的维护情况、体积和许可证,推荐一个再装,装之前告诉我会新增多少依赖。
还差:想加的功能,发给 AI 前记得换掉
别这样说 → 这样说
别这样说
npm install 报错,应该是版本冲突,帮我解决。
这样说
我在项目里运行 npm install,报错 “ERESOLVE unable to resolve dependency tree”,完整输出贴在下面。帮我先读懂是哪两个包的版本要求冲突,给出几种解决办法和各自的风险,不要直接加 --force。
差别:贴了报错原文,要求先解释冲突,并排除了强行安装。
误解锁文件没用,删掉重装就能解决问题。
其实是锁文件记录了每个依赖的确切版本,让每台电脑装出来一样;删掉重装可能悄悄升级一堆包,反而引入新问题。
展开专业理解
npm 包括命令行工具、公共包仓库和网站三部分。package.json 记录依赖和 scripts,npm run 加脚本名就能执行其中的命令;package-lock.json 锁定实际安装的版本。在要求可重复安装的场合(比如自动部署)常用 npm ci:它严格按锁文件安装,锁文件和 package.json 对不上就报错。
来源
- npm Docs:About npm 核对于 2026-09-26
- npm Docs:Scripts 核对于 2026-09-26
- npm Docs:npm ci 核对于 2026-09-26