NodeJS包管理工具pnpm

前言

pnpm (Performant npm) 是一个用于 JavaScript 和 Node.js 项目的包管理器

它的核心目标是解决传统包管理器(如 npmyarn)在磁盘空间占用安装速度上的痛点,同时保持与 npm 生态系统的完全兼容。

pnpm的优势

  • 节省磁盘空间

    pnpm 使用全局存储(Content-addressable storage)。所有安装的包都硬链接到一个全局目录中。如果多个项目使用相同版本的同一个包,磁盘上只保存一份副本。

  • 严格的依赖结构

    pnpm 创建的 node_modules 结构是非扁平化的。它通过符号链接(symlinks)将包链接到项目中,确保只有在 package.json 中声明的依赖才能被代码访问,从而杜绝了“幽灵依赖”(Phantom Dependencies)问题。

  • 速度快

    由于利用了硬链接和高效的缓存机制,pnpm 的安装速度通常比 npm 和 yarn 快 2-3 倍,特别是在冷启动或大型 Monorepo 项目中。

  • Monorepo 支持

    原生支持工作空间(Workspaces),管理多包仓库非常高效。

安装步骤

安装Node

1
2
3
nvm install 22.0.0

nvm use 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
2
3
git clone https://gitee.com/OpenClaw-CN/openclaw-cn.git

cd openclaw-cn

安装与构建

OpenClaw 是一个现代化的全栈应用,首次运行需要编译前端 UI 和后端核心:

1
2
3
4
5
6
7
8
# 安装依赖 (飞快 🚀)
pnpm install

# 构建前端界面,首次运行时自动安装 UI 依赖
pnpm ui:build

# 构建核心服务
pnpm build

依赖保存位置

在 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 文件:

  1. 项目级:./project/.npmrc
  2. 用户级:~/.npmrc (推荐在此处修改以对所有项目生效)
  3. 全局级:$PREFIX/etc/.npmrc

操作步骤: 打开用户级的 .npmrc 文件(如果没有可以新建),添加或修改以下行:

1
2
3
store-dir=D:/pnpm-store
# 或者 macOS/Linux
# store-dir=/data/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)。

这是最稳定的方式,设置一次后,你创建的所有新项目都会自动遵循这个规则,无需每个项目都配置。