pnpm老是默认把包安装在C盘很头疼?教你快速配置pnpm的全局目录

背后

我的电脑只分了C盘和D盘,C盘作为系统盘仅有100多G空间,而每次安装新工具时基本都会默认安装到C盘用户目录下。长期下来,不仅导致C盘空间紧张,也让项目依赖管理变得混乱。为了合理利用电脑存储空间,以下是将pnpm所有相关目录完全迁移到D盘的完整步骤。 由于我的node本来就安装在D盘,所以执行 npm install pnpm -g时,pnpm的安装位置,也安装到了D盘。但是用pnpm下载包时,就下在了C盘。所以以下步骤是基于执行npm install pnpm -g后的背景下的操作步骤。

配置完之后,当在终端执行pnpm开头的命令,还是从我的D盘中node安装目录:D:\Program Files\nodejs\pnpm中执行pnpm.cmd可执行文件。因为我的node本来是安装在D盘的。所以,node安装的包,也会在D盘。这个是不变的。变的是,比如我通过pnpm全局安装live-server,这个live-server包保存的位置,和live-server包的可执行文件位置,已经被我从C盘变成D盘。就这样。

方案

第一步:创建目录

比如我想安装的位置 D:\Program Files\pnpm-repository

cmd + R

arduino 复制代码
mkdir "D:\Program Files\pnpm-repository"

# 创建目录(不创建这个目录,set时也会自动创建)
mkdir "D:\Program Files\pnpm-repository\store"
mkdir "D:\Program Files\pnpm-repository\global"
mkdir "D:\Program Files\pnpm-repository\bin"
mkdir "D:\Program Files\pnpm-repository\state"
mkdir "D:\Program Files\pnpm-repository\cache"

目录说明

  • store: 核心存储仓库,所有下载的包内容都存放在这里
  • global: 全局安装的包位置
  • bin: 可执行命令文件
  • state: pnpm运行状态文件
  • cache: 下载缓存,加速后续安装

第二步:配置pnpm使用新目录

通过pnpm配置命令,设置每个目录的位置:

cmd

python 复制代码
pnpm config set store-dir "D:\Program Files\pnpm-repository\store"
pnpm config set global-dir "D:\Program Files\pnpm-repository\global"  
pnpm config set global-bin-dir "D:\Program Files\pnpm-repository\bin"
pnpm config set state-dir "D:\Program Files\pnpm-repository\state"
pnpm config set cache-dir "D:\Program Files\pnpm-repository\cache"

第三步:验证配置是否生效

cmd

arduino 复制代码
pnpm config list

确认输出中所有路径都指向D盘的新位置,特别是:

ini 复制代码
C:\Users\Administrator>pnpm config list
@jsr:registry=https://npm.jsr.io/
global-bin-dir=D:\Program Files\pnpm-repository\bin
global-dir=D:\Program Files\pnpm-repository\global
globalconfig=C:\Users\Administrator\AppData\Local\pnpm\config\rc
npm-globalconfig=D:\Program Files\nodejs\etc\npmrc
registry=https://registry.npmjs.org/
store-dir=D:\Program Files\pnpm-repository\store
user-agent=pnpm/10.24.0 npm/? node/v20.19.5 win32 x64

这个地方需要特别说明一下,当在第二步执行pnpm config set global-dir "D:\Program Files\pnpm-repository\global"等命令之后,且第四步的环境变量也已经配置完了,第五步重启终端,也测试成功了。然后当你关闭终端,再测试,比如pnpm config get global-bin-dir 时,输入undefined。这时候你需要删除C盘残留的pnpm:

arduino 复制代码
pnpm config delete global-dir
pnpm config delete global-bin-dir
pnpm config delete store-dir

然后,再:

python 复制代码
pnpm config set store-dir "D:\Program Files\pnpm-repository\store"
pnpm config set global-dir "D:\Program Files\pnpm-repository\global"  
pnpm config set global-bin-dir "D:\Program Files\pnpm-repository\bin"
pnpm config set state-dir "D:\Program Files\pnpm-repository\state"
pnpm config set cache-dir "D:\Program Files\pnpm-repository\cache"

这时候就正常了。如果没有出现这种情况,那不需要进行处理。

第四步:配置系统环境变量(关键步骤)

这是最重要的一步,确保系统能找到pnpm命令:

  1. Win + R 输入 sysdm.cpl 打开系统属性

  2. 点击"高级"选项卡 → "环境变量"

  3. 在"系统变量"中点击"新建":

    • 变量名:PNPM_HOME
    • 变量值:D:\Program Files\pnpm-repository\bin
  4. 找到Path变量,点击"编辑" → "新建",添加:%PNPM_HOME% 或者不新建PNPM_HOME变量也行,直接在Path里面,新建一个,把路径写死。

第五步:重启终端并测试

必须要关闭CMD命令行窗口,重新打开CMD,不然刚刚的配置无法在你当前的命令行窗口生效。

cmd

makefile 复制代码
# 测试1:检查pnpm命令是否正常
C:\Users\Administrator>pnpm -v
10.24.0

# 测试2:验证全局包位置
C:\Users\Administrator>pnpm root -g
D:\Program Files\pnpm-repository\global\5\node_modules

# 测试3:实际安装测试
C:\Users\Administrator>pnpm add -g typescript
#下载完之后
C:\Users\Administrator>pnpm list -g
Legend: production dependency, optional only, dev only
D:\Program Files\pnpm-repository\global\5
dependencies:
json-server 1.0.0-beta.3
typescript 5.9.3
相关推荐
子兮曰1 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰1 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万1 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋1 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁1 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95271 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大1 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师1 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学1 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端