rokevin
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
  • pnpm

  • pnpm 的核心特点:
  • 常用命令:
  • 适用场景:
    • 安装生产依赖(会写入 package.json 的 dependencies)
    • 安装开发依赖(会写入 package.json 的 devDependencies)
    • 安装指定版本的包
    • 全局安装包
    • 在代码中引入
    • 运行包提供的命令
    • 移除包
    • 更新包
    • 查看包信息

pnpm

pnpm 是一个快速、高效的 JavaScript 包管理器,全称为 "Performant npm",由 Zoltan Kochan 开发。它的核心优势在于采用了独特的存储机制和依赖管理方式,解决了 npm 和 yarn 中的一些性能和磁盘空间问题。

pnpm安装需要 "node":">=18.12"

查看node版本

node -v

版本过小需要通过nvm安装高版本node

$ nvm ls 

->      v8.17.0
       v10.22.1
       v12.18.4
       v14.17.0
default -> v8.17.0
node -> stable (-> v14.17.0) (default)
stable -> 14.17 (-> v14.17.0) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/hydrogen (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.0 (-> N/A)
lts/hydrogen -> v18.16.0 (-> N/A)

选择高版本安装,安装好后node直接变成了 v18.16.0 如果切换别的版本 可以使用 nvm use v8.6.0

$ nvm install v18.16.0

Downloading and installing node v18.16.0...
Downloading https://nodejs.org/dist/v18.16.0/node-v18.16.0-darwin-x64.tar.xz...
############################################################################################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v18.16.0 (npm v9.5.1)

设置默认版本

# 将 v16.18.0 设为默认版本(替换为你的目标版本)
nvm alias default v16.18.0

pnpm 的核心特点:

  1. 高效的存储机制:
    1. 采用 内容寻址文件系统 存储依赖,相同版本的包只会在磁盘上保存一次
    2. 通过硬链接和符号链接(symlinks)管理依赖,大幅节省磁盘空间
    3. 安装速度通常比 npm 和 yarn 快 2-3 倍
  2. 严格的依赖管理:
    1. 严格遵循 node_modules 的规范,避免了 "幻影依赖"(未在 package.json 中声明却能被访问的依赖)
    2. 确保项目依赖的准确性,减少生产环境中的潜在问题
  3. 工作区支持:
    1. 原生支持 monorepo 项目结构,轻松管理多包项目
    2. 提供 pnpm workspace 命令,简化多包之间的依赖管理和脚本执行
  4. 兼容性:
    1. 与 npm 命令兼容,大多数 npm 命令(如 install、run、publish 等)都可以直接使用
    2. 支持 .npmrc 配置文件,迁移成本低

常用命令:

# 安装依赖pnpm installpnpm i

# 安装生产依赖pnpm add <package># 安装开发依赖pnpm add -D <package># 全局安装pnpm add -g <package># 运行脚本pnpm run <script>pnpm <script>  # 简写形式# 移除依赖pnpm remove <package># 查看依赖树pnpm why <package># 清理缓存pnpm store prune

适用场景:

  • 大型项目,希望减少磁盘占用和安装时间
  • monorepo 项目(如使用 Turborepo、Nx 等工具的项目)
  • 对依赖管理严格性有要求的团队
  • 希望提升 CI/CD 构建速度的场景

pnpm 近年来增长迅速,已被 Vite、Vue、Nuxt 等知名项目采用,成为 npm 和 yarn 之外的一个优秀替代方案。

如何在pnpm中安装和使用包?

在 pnpm 中安装和使用包的流程与 npm 类似,但具有更快的速度和更高效的存储机制。以下是详细步骤:

  1. 安装 pnpm(如果尚未安装)

首先确保已安装 pnpm:

# 使用 npm 安装npm install -g pnpm# 或使用其他包管理器# curl -fsSL https://get.pnpm.io/install.sh | sh
  1. 基本包安装命令

安装生产依赖(会写入 package.json 的 dependencies)

pnpm add <包名># 例如:安装 lodashpnpm add lodash

安装开发依赖(会写入 package.json 的 devDependencies)

pnpm add -D <包名># 例如:安装 eslint 作为开发依赖pnpm add -D eslint

安装指定版本的包

pnpm add <包名>@<版本号># 例如:安装 react 18.2.0 版本pnpm add react@18.2.0

全局安装包

pnpm add -g <包名># 例如:全局安装 vitepnpm add -g vite
  1. 使用已安装的包

在代码中引入

安装完成后,就可以在项目代码中正常引入使用:

// 引入生产依赖import lodash from 'lodash';console.log(lodash.version);// 引入开发依赖(通常在构建/测试阶段使用)// 例如在配置文件中使用 eslint

运行包提供的命令

如果包提供了可执行命令(如 vite、eslint 等),可以通过 pnpm 运行:

# 直接运行(pnpm 会自动查找 node_modules 中的可执行文件)pnpm <命令名># 例如:运行 vite 开发服务器pnpm vite dev

# 或者在 package.json 的 scripts 中定义后运行pnpm run <脚本名>
  1. 其他常用命令

移除包

pnpm remove <包名># 例如:移除 lodashpnpm remove lodash

更新包

# 检查可更新的包pnpm outdated

# 更新所有包pnpm update

# 更新指定包pnpm update <包名>

查看包信息

# 查看包的依赖关系pnpm why <包名># 查看已安装的包版本pnpm list <包名># 例如:查看所有已安装的包pnpm list

pnpm 与 npm 命令高度兼容,大多数情况下可以直接将项目中的 npm 命令替换为 pnpm 使用,同时享受更快的安装速度和更高效的磁盘空间利用。

最近更新:: 2025/10/22 15:36
Contributors: luokaiwen