NPM 介绍
1.NPM 是什么?
-
NPM(Node Package Manager)是随 Node.js 一起安装的官方包管理工具
-
它主要功能包括:
- 安装/卸载第三方包(npm install
) - 管理项目依赖(记录在 package.json 中)
- 运行脚本(如 npm run build)
- 安装/卸载第三方包(npm install
-
通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功:
$ npm -v
6.12.1
2.依赖管理 & package.json
- 代码不用传代码库,只要项目配置文件记录好了就够了
- 实际上,node_modules 目录通常被 .gitignore 忽略。
- 其他开发者或 CI/CD 系统通过 npm install 根据 package.json(以及 package-lock.json)自动还原依赖
3.生产依赖 vs 开发依赖
- 生产依赖(--save 或 -S,现在默认就是生产依赖):
- 运行时必需的包(比如 express, lodash)
- 记录在 package.json 的 dependencies 字段
- 开发依赖(--save-dev 或 -D):
- 仅开发/构建时需要(比如 webpack, eslint, jest)
- 记录在 devDependencies
💡 注意:从 npm 5 开始,npm install
默认会自动加到 dependencies,不需要手动加 -S;而 -D 仍需显式指定
4.国内源的问题 & 解决方案
- npm 默认源在国外(registry.npmjs.org),国内访问慢
- 常见解决方案1:切换 registry 源:如淘宝 NPM 镜像
npm config set registry https://registry.npmmirror.com - 常见解决方案2:使用 cnpm:由淘宝团队开发的 npm 客户端,底层也是切换源 + 一些优化
npm install -g cnpm --registry=https://registry.npmmirror.com
5.pnpm 的定位
- pnpm 并不是为了解决“源”的问题,而是解决 磁盘空间浪费 和 依赖结构不一致 的问题
- 它的核心机制是:
- 所有包都存在一个全局 store(硬链接 + 符号链接)
- 不同项目共享同一份包文件,避免重复下载和存储
- 使用严格的 node_modules 结构(非扁平化),避免“幽灵依赖”(phantom dependencies)
pnpm 解决的是本地重复下载的问题
6.NPM 常用命令
| npm -v | 查看 NPM 版本 |
|---|---|
| npm version | 查看 Node.js 和所有内置模块的版本信息 |
| npm search <包名> | 搜索 npm 仓库中的包(支持模糊匹配) |
| npm init | 初始化项目,生成 package.json 文件(可加 -y 跳过交互) |
| npm install <包名> 或 npm i <包名> | 安装指定包到本地 node_modules |
| npm install <包名>@<版本号> | 安装指定版本的包 |
| npm update <包名> | 更新已安装的包 |
| npm remove <包名> 或 npm r <包名> | 删除已安装的包 |
| npm install <包名> --save(或 -S) | 安装并添加到 dependencies(生产依赖) |
| npm install <包名> --save-dev(或 -D) | 安装并添加到 devDependencies(开发依赖) |
| npm install | 根据 package.json 自动安装所有依赖(等价于 npm i) |
| npm list -g --depth 0 | 查看全局安装的顶层包(不显示依赖树) |
💡 提示:从 npm 5 开始,npm install <包名> 默认会自动保存到 dependencies,无需手动加 --save
7.全局安装 vs 本地安装
NPM 支持两种安装方式:本地安装(local) 和 全局安装(global),区别在于是否添加 -g 参数:
npm install express # 本地安装
npm install express -g # 全局安装
(1) 本地安装(默认)
- 包会被安装到当前目录下的 ./node_modules 中(若目录不存在则自动创建)。
- 只能在当前项目中通过 require('包名') 引入使用。
- 所有项目依赖应优先使用本地安装,确保版本隔离和可复现性
(2) 全局安装
- 包会被安装到全局目录(如 /usr/local/lib/node_modules 或 Node 安装目录下)。
- 同时会将可执行命令(如 vue, create-react-app, nodemon)链接到系统 PATH。
- 作用:让你在任意目录的终端中都能直接运行该命令。
- 注意:全局包不能通过 require() 在代码中引入,仅用于命令行工具。
✅ 建议:
项目依赖(如 express, lodash)→ 本地安装
CLI 工具(如 typescript, pnpm, http-server)→ 全局安装

浙公网安备 33010602011771号