读完这篇,你会用手机应用商店的比喻彻底搞懂 NPM 是什么、package.json 有什么用,以及为什么 AI 编程项目里总有一堆 install 命令。
NPM 这三个字母,吓退了多少人
你第一次看到「NPM」这个词,大概是在 AI 帮你生成的代码教程里。教程说「运行 npm install 安装依赖」,你照做了,但心里想的是——这到底是在装什么,跟手机装 App 有什么区别。
NPM 三个字母来自英文 Node Package Manager,翻译过来是「Node 包管理器」。这个翻译比不翻译还难懂。
别记这个定义。 记一个你每天都在用的东西——手机应用商店。

手机应用商店,你其实早就会用 NPM 了
你想在手机上装一个微信,你会打开应用商店,搜索「微信」,点安装,等几秒钟,微信就出现在你手机桌面上了。
你不需要自己去微信官网下载安装包,不需要手动把文件放到正确的目录,不需要处理微信跟其他 App 之间的依赖关系。应用商店帮你全搞定了。
NPM 就是代码世界的应用商店。
| 手机应用商店 | NPM | 说明 |
|---|---|---|
| 应用商店(App Store / 应用市场) | NPM 仓库(registry) | 存放所有可供下载的「应用」的地方 |
| App(微信、抖音) | 包(Package) | 一个个独立的功能模块 |
| 搜索 App | npm search | 搜索你需要的包 |
| 点安装 | npm install | 把包下载到你的项目里 |
| App 自动更新 | npm update | 更新到最新版本 |
| App 版本号 | 包版本号(如 1.2.3) | 标记每次更新 |
| 手机存储空间 | 项目里的 node_modules 文件夹 | 所有安装的包都放在这里 |
NPM 的本质就是,你不用自己从零写所有功能,别人写好的功能你直接「安装」就行。
装一个「日期处理」来理解 NPM
说应用商店可能还觉得抽象,来个真实的例子。
你用 AI 做了一个网页,需要显示「今天是 2026年7月14日 星期一」。你让 AI 帮你处理日期,AI 写了几行代码,然后告诉你「先运行 npm install dayjs」。
dayjs 就是一个别人写好的日期处理包。它就像应用商店里的一个 App,专门帮你处理日期格式化、计算天数差这些问题。
整个过程就像手机装 App 一样,
- 你在终端运行
npm install dayjs—— 相当于在应用商店点「安装」 - NPM 从远程仓库把 dayjs 下载到你的项目里 —— 相当于下载安装包
- dayjs 被放到
node_modules文件夹里 —— 相当于 App 装到了手机存储里 - 你在代码里
import dayjs from 'dayjs'—— 相当于点开 App 开始用
你发现没有,你不用自己写日期处理的代码。别人已经写好了、测试好了、优化好了,你直接「安装」就能用。这就是 NPM 的价值——复用。

package.json 就是你的「已装 App 清单」
你换了一部新手机,登录账号后应用商店自动帮你把之前装过的 App 全部装回来。它怎么知道你装过什么?因为你的账号里有一份「已购 App 清单」。
NPM 也有这样一份清单,叫 package.json。它放在你项目根目录下,记录了,
- 你的项目叫什么名字
- 你的项目装了哪些包(依赖)
- 每个包的版本号
- 你的项目用什么命令启动、构建
你跟 AI 说「帮我做一个网站」,AI 做完后的项目里一定有一个 package.json。里面长这样(你不用记,AI 会帮你生成),
{
"name": "my-homepage",
"version": "1.0.0",
"dependencies": {
"react": "^18.2.0",
"dayjs": "^1.11.0",
"axios": "^1.6.0"
}
}
dependencies 里的每一行,就是你这个项目「已装的 App」。上面这个项目装了三个包——React(前端框架)、dayjs(日期处理)、axios(网络请求)。
package.json 最大的好处是,你换一台电脑只需要这一个文件。 运行 npm install,NPM 会照着这份清单把所有包重新装一遍,就像新手机登录账号自动恢复 App 一样。
为什么 AI 编程总提到 NPM
你跟 AI 说「帮我做一个网站」,AI 写完代码后几乎一定会说「运行 npm install 安装依赖,然后 npm run dev 启动」。原因很简单——AI 用了别人写好的包来帮你做项目,这些包需要通过 NPM 安装。
AI 编程中你最常见的 NPM 命令就三条,
npm install # 照着 package.json 把所有依赖装好
npm run dev # 启动开发服务器,预览你的网站
npm run build # 打包构建,准备部署上线
你不需要记住更多命令。 AI 会告诉你什么时候该运行哪条,你复制粘贴执行就行。
常见疑问
NPM 和 Node.js 是什么关系?
Node.js 是一个运行环境,让 JavaScript 能在电脑上直接运行(不限于浏览器)。NPM 是随 Node.js 一起安装的工具。你装了 Node.js 就自动有了 NPM。所以教程一般说「先装 Node.js」,NPM 就跟着来了。
node_modules 为什么那么大?
因为每个包可能又依赖其他包,层层嵌套。一个项目装几十个包,展开后可能几百个文件夹。这是正常的,不影响使用。唯一要注意的是,node_modules 不要手动改里面的文件,也不要上传到 GitHub(用 .gitignore 排除),别人拿到你的代码后运行 npm install 会自己生成。
pnpm 和 npm 有什么区别?
pnpm 是 NPM 的替代工具,做的事情一样(装包),但速度更快、占用空间更小。jscodes.cn 这个项目用的就是 pnpm。你看到 pnpm install 和 npm install,理解成同一个意思就行。AI 编程中用哪个都行,不影响结果。
包是免费的吗?
绝大多数包是免费开源的。NPM 仓库里有超过 200 万个包,绝大部分可以免费使用。极少数包有付费功能,但你在 AI 编程入门阶段不会遇到。
小结
| 概念 | 应用商店比喻 | 一句话解释 |
|---|---|---|
| NPM | 应用商店 | 代码世界的包管理平台 |
| 包(Package) | App | 别人写好的功能模块 |
| npm install | 点安装 | 把包下载到项目里 |
| package.json | 已购 App 清单 | 记录项目装了哪些包 |
| node_modules | 手机存储 | 所有包实际存放的文件夹 |
| dependencies | 已购列表 | 项目的依赖包列表 |
| 版本号 | App 版本号 | 标记包的更新版本 |
下次再看到「npm install」,你就在脑子里想——就是应用商店装个 App。没什么难的。