npm在Win11下的安装配置
npm 在 Windows 11 下的安装、配置与管理完整笔记
一、npm 基本信息查看
1.1 查看 npm 版本
npm -v1.2 查看完整版本信息(npm + Node.js + 底层依赖)
npm version该命令会输出包括 npm、Node.js、V8 引擎、OpenSSL 等所有组件的版本信息。
1.3 查看全局包安装路径
npm root -g在 Windows 系统上,默认路径通常为:
C:\Users\<用户名>\AppData\Roaming\npm\node_modules二、查看已安装的包(插件)
2.1 查看所有全局安装的包
npm list -g该命令以树状结构列出所有全局包,包含依赖包的完整层级,输出较长。
2.2 仅查看顶层全局包(推荐)
npm list -g --depth=0--depth=0 参数表示只显示用户主动安装的顶层包,不展开依赖关系,适合快速查看安装了多少个包。
2.3 查看当前项目的本地依赖
npm list --depth=0在项目根目录(包含 package.json)下执行,仅显示项目直接依赖的顶层包。
2.4 查看特定包的详细信息
npm info <包名>例如:
npm info pnpm三、npm 全局包迁移到其他盘符
3.1 迁移方法概述
存在两种主流迁移方式:
- 方式一:修改
npm config prefix配置 - 方式二:物理迁移目录 + 创建软链接(mklink)
3.2 方式一:修改 npm 配置(prefix)
操作步骤
# 设置全局包安装位置
npm config set prefix "D:\nodejs\node_global"
# 设置缓存目录
npm config set cache "D:\nodejs\node_cache"
# 验证配置是否生效
npm config get prefix后续操作
- 将新路径添加到系统环境变量
Path中 - 已安装的全局包需要重新安装,或手动复制到新目录
- 重启终端使配置生效
特点
- npm 官方推荐的标准做法
- 配置清晰透明,
npm root -g显示真实路径 - 需要修改环境变量
- 适合新环境或包数量较少的情况
3.3 方式二:目录迁移 + 软链接(mklink)
操作步骤
# 复制原目录到目标盘符
robocopy "C:\Users\Administrator\AppData\Roaming\npm\node_modules" "G:\ProgramFiles\npm\node_modules" /E /COPYALL
# 删除原目录(确认复制成功后执行)
rmdir /s /q "C:\Users\Administrator\AppData\Roaming\npm\node_modules"
# 创建软链接(Junction)
mklink /J "C:\Users\Administrator\AppData\Roaming\npm\node_modules" "G:\ProgramFiles\npm\node_modules"验证迁移是否成功
# 查看目录类型(应显示 JUNCTION)
dir "C:\Users\Administrator\AppData\Roaming\npm\node_modules"
# 确认 npm 能识别全局包
npm root -g
# 列出全局包
npm list -g --depth=0
# 测试特定命令
pnpm -v特点
- 无需修改 npm 配置和环境变量
- 已安装的包无需重新安装
- 对系统和所有工具完全透明
- 需要管理员权限创建软链接
- 适合已有大量全局包的迁移场景
3.4 两种方式的对比
| 对比维度 | 修改 prefix | mklink 软链接 |
|---|---|---|
| 需重装已有包 | 需要 | 不需要 |
| 修改 npm 配置 | 是 | 否 |
| 修改环境变量 PATH | 需要 | 不需要 |
| 管理员权限 | 不需要 | 需要 |
| npm root -g 显示 | 新路径 | 原路径(迷惑) |
| 操作复杂度 | 简单 | 中等 |
| 可逆性 | 容易 | 较麻烦 |
3.5 迁移后的注意事项
- 如果使用软链接方式,原目录下的
.cmd和.ps1文件需要保留在原位置,不能一并迁移 - 检查目标盘符是否有足够的剩余空间
- 如遇权限错误,需为 G 盘目录添加当前用户的完全控制权限
迁移成功后可以清理 npm 缓存目录以释放 C 盘空间:
rmdir /s /q "C:\Users\Administrator\AppData\Roaming\npm-cache"
四、npm 的虚拟环境功能
4.1 npm 原生的隔离机制
Node.js 项目默认采用本地安装方式,npm install 将依赖安装在当前项目的 node_modules 目录中,每个项目拥有独立的依赖副本,因此项目间不会产生依赖冲突。这是 Node.js 实现隔离的基本方式。
但 npm 本身缺少类似 Python venv 的一键创建、激活、停用环境的完整流程,也不提供对全局包和 Node.js 版本的管理。
4.2 第三方方案
方案一:@onlybond/crate
- 明确模仿 Python
venv设计的 Node.js 虚拟环境工具 - 使用
crate activate激活环境,终端提示符显示当前环境名 - 依赖安装在项目内的
.crate/目录 - 可通过
exit退出环境 - 缺点是项目较新,下载量较少,生产环境稳定性待验证
方案二:pnpm 的隔离安装
- 全局包隔离:
pnpm add -g <包名>将每个(或每组)全局包安装到独立目录,避免冲突 - 项目依赖高效隔离:通过内容寻址存储和硬链接,不同项目共享同一份包缓存,同时保持清晰的依赖结构
4.3 方案选择建议
| 场景 | 推荐方案 |
|---|---|
| 普通项目开发 | npm 本地安装即可满足隔离需求 |
| 需要类似 venv 的操作体验 | 尝试 @onlybond/crate |
| 需要不同版本的全局 CLI 工具 | 使用 pnpm 的隔离安装 |
五、-g 参数详解
5.1 基本含义
-g 是 --global 的缩写,表示全局安装。
5.2 全局安装 vs 本地安装
| 对比项 | 全局安装(-g) | 本地安装(不加 -g) |
|---|---|---|
| 安装位置 | 系统全局目录 | 当前项目 node_modules |
| 作用范围 | 整个计算机所有目录 | 仅当前项目 |
| 典型用途 | 命令行工具(CLI) | 项目依赖库 |
| 调用方式 | 终端直接输入命令 | 通过代码 import 或 npx 调用 |
| 写入 package.json | 否 | 是 |
5.3 使用场景判断
- 适合全局安装的工具:
pnpm、typescript(tsc)、nodemon、http-server、markmap-cli等命令行工具 - 不应全局安装的工具:
react、vue、express、axios、lodash、jest等作为项目依赖使用的库
5.4 不全局安装的情况下使用命令行工具
可通过 npx 临时执行本地安装的包:
npm install markmap-cli
npx markmap-cli六、npm、pnpm、npx 的区别与使用场景
6.1 核心概念
| 工具 | 本质 | 作用 |
|---|---|---|
| npm | 包管理器 | 安装、卸载、管理包 |
| pnpm | 包管理器 | npm 的替代品,更快更省空间 |
| npx | 包执行器 | 临时执行包,无需安装 |
6.2 npm vs pnpm
| 对比项 | npm | pnpm |
|---|---|---|
| 安装速度 | 较慢 | 更快(利用全局缓存和硬链接) |
| 磁盘占用 | 每个项目独立存储,占用大 | 共享缓存,占用小 |
| node_modules 结构 | 平铺结构 | 树形结构 + 硬链接 |
| monorepo 支持 | 支持(npm 7+) | 原生支持,体验更好 |
| 默认工具 | Node.js 自带 | 需额外安装 |
6.3 npm vs npx
| 对比项 | npm | npx |
|---|---|---|
| 功能 | 安装包 | 执行包 |
| 需提前安装 | 是(或正在安装) | 不需要,临时下载 |
| 永久保存 | 是 | 否(执行完即消失,缓存保留) |
| 典型用途 | 管理项目依赖 | 一次性命令或脚手架工具 |
6.4 -g 在不同工具中的含义
| 命令 | 含义 |
|---|---|
npm install -g <包> | 永久安装到全局目录 |
pnpm add -g <包> | 永久安装到全局目录 |
npx <包> | 临时执行,无需 -g 参数(npx 不支持 -g) |
6.5 实际工作流建议
本地安装(项目依赖)
npm install react express
pnpm install lodash全局安装(CLI 工具)
npm install -g typescript
npm install -g nodemon
pnpm add -g markmap-cli临时执行(一次性任务)
npx create-react-app my-app
npx prettier --write .
npx markmap-cli input.md项目内执行本地命令
npm install jest
npx jest或将命令写入 package.json 的 scripts 字段后使用 npm run test 执行。
七、附录
7.1 本次实际操作环境摘要
- 操作系统:Windows 11
- npm 版本:11.17.0
- Node.js 版本:24.19.0
- 全局包安装路径:已迁移至
G:\ProgramFiles\npm\node_modules - 已安装的全局包:pnpm、markmap-cli、@xmindltd/xmind-cli、@haiyanwang/mindmap-cli
7.2 常用命令速查
| 用途 | 命令 |
|---|---|
| 查看 npm 版本 | npm -v |
| 查看完整版本信息 | npm version |
| 查看全局包安装路径 | npm root -g |
| 查看所有全局包 | npm list -g |
| 查看顶层全局包 | npm list -g --depth=0 |
| 查看项目本地包 | npm list --depth=0 |
| 查看包详细信息 | npm info <包名> |
| 设置全局安装路径 | npm config set prefix <路径> |
| 查看配置 | npm config get <配置项> |
| 全局安装包 | npm install -g <包名> |
| 卸载全局包 | npm uninstall -g <包名> |
| 临时执行包 | npx <包名> |
| 清理缓存 | npm cache clean --force |
7.3 迁移相关命令速查
| 用途 | 命令 |
|---|---|
| 复制目录(保留权限) | robocopy <源> <目标> /E /COPYALL |
| 删除目录(递归强制) | rmdir /s /q <路径> |
| 创建目录链接 | mklink /J <链接路径> <目标路径> |
| 查看目录属性 | dir <路径> |