pnpm

image

1- 简介

pnpm(Performant npm)是一款高性能的包管理器,旨在解决npm和Yarn在安装速度、磁盘空间利用率以及monorepo支持等方面的问题。

相比于传统的npm,pnpm通过独特的硬链接机制,实现了更快的依赖安装速度和更高效的磁盘空间使用。

2- 安装pnpm

1- 使用npm安装

最简单的安装pnpm的方法是通过npm。确保您已经安装了Node.js和npm,然后在终端中运行以下命令:

npm install -g pnpm

2- 使用官方安装脚本

pnpm官方提供了安装脚本,您可以通过以下命令安装pnpm:

curl -fsSL https://get.pnpm.io/install.sh | sh -

对于Windows用户,可以使用PowerShell:

iwr https://get.pnpm.io/install.ps1 -UseBasicParsing | iex

3- 使用Corepack

如果您使用的是Node.js v18.12或更高版本,您可以通过Corepack来管理pnpm:

corepack enable
corepack prepare pnpm@latest --activate

4- 验证安装

安装完成后,可以通过以下命令检查pnpm版本,以确认安装成功:

pnpm -v

3- 配置pnpm

1- 创建.npmrc文件

在项目根目录中创建一个.npmrc文件,可以配置pnpm的相关设置。例如,启用自动安装peer dependencies:

auto-install-peers=true

2- 设置镜像源(可选)

如果您需要使用国内的镜像源,可以在.npmrc中添加以下配置:

registry=https://registry.npmmirror.com/

4- 基本使用

1- 初始化项目

使用pnpm初始化一个新的Node.js项目:

pnpm init

2- 安装依赖

安装项目所需的依赖包,例如安装axios

pnpm add axios

3- 添加/移除包

添加一个新包:

pnpm add lodash

移除一个包:

pnpm remove lodash

4- 更新依赖

更新所有依赖包到最新版本:

pnpm update

5- pnpm的特性

1- 高效的磁盘空间利用

pnpm采用内容可寻址存储,将依赖包存储在一个全局存储区,通过硬链接的方式在各个项目中共享这些包,从而显著减少磁盘空间的占用。

2- 快速的安装速度

pnpm支持并行安装依赖包,结合缓存机制,使得依赖安装速度明显快于npm。

3- 支持Monorepo

pnpm内置对monorepo的支持,允许您在一个仓库中管理多个包,简化了多包项目的维护和依赖管理。

4- 严格的依赖管理

pnpm默认采用严格的依赖解析策略,确保项目依赖关系的明确性,减少潜在的依赖冲突。

6- 常见问题

1- 如何切换到pnpm

如果您之前使用的是npm或Yarn,可以通过以下步骤切换到pnpm:

  1. 删除现有的node_modules目录和锁文件:

    rm -rf node_modules package-lock.json yarn.lock
    
  2. 使用pnpm安装依赖:

    pnpm install
    

2- 如何处理依赖冲突

pnpm的严格依赖管理可以帮助您发现和解决依赖冲突。如果遇到问题,可以尝试清理pnpm的缓存:

pnpm store prune

然后重新安装依赖:

pnpm install

7- 高级使用

1- 使用pnpm管理Monorepo

pnpm提供了workspace功能,方便管理多个包的monorepo项目。以下是一个基本的设置步骤:

  1. 在项目根目录创建pnpm-workspace.yaml文件:

    packages:
      - 'packages/*'
    
  2. 在各个子包目录中初始化独立的package.json文件。

  3. 使用pnpm在根目录安装所有依赖:

    pnpm install
    

8- 总结

pnpm作为一款高性能的包管理器,凭借其高效的磁盘空间利用、快速的依赖安装速度以及强大的monorepo支持,成为了众多开发者的理想选择。通过本文的详细教程,您已经了解了如何安装、配置以及使用pnpm来管理您的项目依赖。欢迎尝试pnpm,并体验其带来的开发便利!