前言
pnpm (Performant npm) 是一个用于 JavaScript 和 Node.js 项目的包管理器。
它的核心目标是解决传统包管理器(如 npm 和 yarn)在磁盘空间占用和安装速度上的痛点,同时保持与 npm 生态系统的完全兼容。
pnpm的优势
节省磁盘空间:
pnpm 使用全局存储(Content-addressable storage)。所有安装的包都硬链接到一个全局目录中。如果多个项目使用相同版本的同一个包,磁盘上只保存一份副本。
严格的依赖结构:
pnpm 创建的
node_modules结构是非扁平化的。它通过符号链接(symlinks)将包链接到项目中,确保只有在package.json中声明的依赖才能被代码访问,从而杜绝了“幽灵依赖”(Phantom Dependencies)问题。速度快:
由于利用了硬链接和高效的缓存机制,pnpm 的安装速度通常比 npm 和 yarn 快 2-3 倍,特别是在冷启动或大型 Monorepo 项目中。
Monorepo 支持:
原生支持工作空间(Workspaces),管理多包仓库非常高效。
安装步骤
安装Node
1 | nvm install 22.0.0 |
安装 pnpm
安装
1 | npm install -g pnpm |
配置国内加速
在安装依赖前,务必设置 pnpm 镜像源,否则下载速度会很慢:
1 | pnpm config set registry https://registry.npmmirror.com/ |
配置存储位置
Windows 示例:
1 | pnpm config set store-dir D:\pnpm-store |
macOS / Linux 示例:
1 | pnpm config set store-dir /data/pnpm-store |
验证设置是否生效 运行以下命令查看当前实际的 store 路径:
1 | pnpm store path |
使用
下载代码
为了确保国内访问速度,请从 Gitee 镜像仓库下载。 为了获得最稳定的体验,推荐切换到最新的稳定版分支:
1 | git clone https://gitee.com/OpenClaw-CN/openclaw-cn.git |
安装与构建
OpenClaw 是一个现代化的全栈应用,首次运行需要编译前端 UI 和后端核心:
1 | # 安装依赖 (飞快 🚀) |
依赖保存位置
在 pnpm 中,依赖包的实际内容(硬链接源)存储在一个称为 store 的目录中。
默认情况下,pnpm 会在用户主目录下创建一个 .pnpm-store 文件夹(例如 ~/.pnpm-store 或在 Windows 上的 %USERPROFILE%\.pnpm-store),或者在每个磁盘分区的根目录下创建(如果项目跨分区)。
你可以通过以下几种方式设置或修改依赖下载保存的位置(即 store-dir):
方法一:使用命令行全局设置(推荐)
这是最常用的方法,会将配置写入全局配置文件(通常是 ~/.npmrc)。
设置新的存储路径 运行以下命令,将 <新路径> 替换为你想要存放依赖的实际路径(建议使用非中文、无空格的路径):
1 | pnpm config set store-dir <新路径> |
Windows 示例:
1 | pnpm config set store-dir D:\pnpm-store |
macOS / Linux 示例:
1 | pnpm config set store-dir /data/pnpm-store |
验证设置是否生效 运行以下命令查看当前实际的 store 路径:
1 | pnpm store path |
如果输出的路径是你刚才设置的,说明配置成功。
方法二:修改配置文件 (.npmrc)
你可以直接编辑 pnpm 的配置文件来设置。
pnpm 会按优先级读取以下位置的 .npmrc 文件:
- 项目级:
./project/.npmrc - 用户级:
~/.npmrc(推荐在此处修改以对所有项目生效) - 全局级:
$PREFIX/etc/.npmrc
操作步骤: 打开用户级的 .npmrc 文件(如果没有可以新建),添加或修改以下行:
1 | store-dir=D:/pnpm-store |
注意:Windows 路径中的反斜杠 \ 在配置文件中通常建议写成正斜杠 / 或者双反斜杠 \\ 以避免转义问题。
方法三:使用环境变量
如果你希望在特定会话或 CI/CD 环境中临时更改存储位置,可以使用环境变量。
变量名: PNPM_STORE_DIR
设置示例 (Linux/macOS):
1 | export PNPM_STORE_DIR=/tmp/pnpm-store |
设置示例 (Windows CMD):
1 | set PNPM_STORE_DIR=D:\pnpm-store |
设置示例 (Windows PowerShell):
1 | $env:PNPM_STORE_DIR="D:\pnpm-store" |
优先级
环境变量 > 项目配置 > 用户配置
方法一和方法二中的第二个配置都是用户配置
注意:
如果你发现设置没生效,请检查是否有更高优先级的配置(如环境变量或项目内的
.npmrc)覆盖了你的用户级设置。可以使用
pnpm config list查看最终生效的配置值。
推荐:
使用 用户级配置 (
pnpm config set)。这是最稳定的方式,设置一次后,你创建的所有新项目都会自动遵循这个规则,无需每个项目都配置。