npm 在 Windows 11 下的安装、配置与管理完整笔记

一、npm 基本信息查看

1.1 查看 npm 版本

npm -v

1.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 两种方式的对比

对比维度修改 prefixmklink 软链接
需重装已有包需要不需要
修改 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 使用场景判断

  • 适合全局安装的工具:pnpmtypescript(tsc)、nodemonhttp-servermarkmap-cli 等命令行工具
  • 不应全局安装的工具:reactvueexpressaxioslodashjest 等作为项目依赖使用的库

5.4 不全局安装的情况下使用命令行工具

可通过 npx 临时执行本地安装的包:

npm install markmap-cli
npx markmap-cli

六、npm、pnpm、npx 的区别与使用场景

6.1 核心概念

工具本质作用
npm包管理器安装、卸载、管理包
pnpm包管理器npm 的替代品,更快更省空间
npx包执行器临时执行包,无需安装

6.2 npm vs pnpm

对比项npmpnpm
安装速度较慢更快(利用全局缓存和硬链接)
磁盘占用每个项目独立存储,占用大共享缓存,占用小
node_modules 结构平铺结构树形结构 + 硬链接
monorepo 支持支持(npm 7+)原生支持,体验更好
默认工具Node.js 自带需额外安装

6.3 npm vs npx

对比项npmnpx
功能安装包执行包
需提前安装是(或正在安装)不需要,临时下载
永久保存否(执行完即消失,缓存保留)
典型用途管理项目依赖一次性命令或脚手架工具

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.jsonscripts 字段后使用 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 <路径>

标签: none

添加新评论