Pnpm的使用

pnpm 是一个快速、节省磁盘空间的 Node.js 包管理工具,相比 npmyarn,它通过硬链接符号链接 技术优化了依赖安装效率。以下是 pnpm 的核心用法和常见场景说明:


1. 安装 pnpm

确保已安装 Node.js,然后通过以下命令安装 pnpm:

bash

|---|-----------------------------------|
| | npm install -g pnpm |
| | # 或通过核心包管理器(如 Homebrew、Scoop)安装 |


2. 核心命令

初始化项目

bash

|---|-------------------------------|
| | pnpm init # 创建 package.json |

安装依赖
  • 安装所有依赖 (根据 package.json):

    bash

    |---|------------------------------|
    | | pnpm install # 或简写为 pnpm i |

  • 安装特定包

    bash

    |---|------------------------------------------------|
    | | pnpm add lodash # 添加到 dependencies |
    | | pnpm add -D typescript # 添加到 devDependencies |
    | | pnpm add -g pnpm # 全局安装包 |

  • 安装指定版本

    bash

    |---|-------------------------|
    | | pnpm add react@18.2.0 |

更新依赖
  • 更新所有依赖

    bash

    |---|---------------------------|
    | | pnpm update # 或 pnpm up |

  • 更新特定包

    bash

    |---|----------------------|
    | | pnpm update lodash |

卸载依赖

bash

|---|-----------------------------------------------------|
| | pnpm remove lodash # 从 dependencies 中移除 |
| | pnpm remove -D typescript # 从 devDependencies 中移除 |

运行脚本

bash

|---|-------------------------------------------------------|
| | pnpm run dev # 运行 package.json 中 scripts 定义的 dev 脚本 |
| | pnpm dev # 简写(如果脚本名无冲突) |

全局命令
  • 查看全局安装的包

    bash

    |---|--------------------------|
    | | pnpm list -g --depth=0 |

  • 升级 pnpm 自身

    bash

    |---|--------------------|
    | | pnpm add -g pnpm |


3. pnpm 的优势

节省磁盘空间
  • 硬链接 :同一依赖的不同版本在全局存储(~/.pnpm-store)中只保存一份,项目通过符号链接引用。
  • 扁平化依赖 :避免 node_modules 嵌套过深(类似 yarn 的扁平化,但更高效)。
性能优化
  • 并行安装:利用多线程加速依赖下载。
  • 增量安装:仅更新变更的依赖,而非全部重新安装。
安全性
更新依赖
卸载依赖

bash

|---|-----------------------------------------------------|
| | pnpm remove lodash # 从 dependencies 中移除 |
| | pnpm remove -D typescript # 从 devDependencies 中移除 |

运行脚本

bash

|---|-------------------------------------------------------|
| | pnpm run dev # 运行 package.json 中 scripts 定义的 dev 脚本 |
| | pnpm dev # 简写(如果脚本名无冲突) |

全局命令

3. pnpm 的优势

节省磁盘空间
性能优化
安全性
  • 严格依赖隔离 :通过符号链接确保项目只能访问其声明的依赖,避免依赖污染。

    pnpm 是一个快速、节省磁盘空间的 Node.js 包管理工具,相比 npmyarn,它通过硬链接符号链接 技术优化了依赖安装效率。以下是 pnpm 的核心用法和常见场景说明:


    1. 安装 pnpm

    确保已安装 Node.js,然后通过以下命令安装 pnpm:

    bash

    |---|-----------------------------------|
    | | npm install -g pnpm |
    | | # 或通过核心包管理器(如 Homebrew、Scoop)安装 |


    2. 核心命令

    初始化项目

    bash

    |---|-------------------------------|
    | | pnpm init # 创建 package.json |

    安装依赖
  • 安装所有依赖 (根据 package.json):

    bash

    |---|------------------------------|
    | | pnpm install # 或简写为 pnpm i |

  • 安装特定包

    bash

    |---|------------------------------------------------|
    | | pnpm add lodash # 添加到 dependencies |
    | | pnpm add -D typescript # 添加到 devDependencies |
    | | pnpm add -g pnpm # 全局安装包 |

  • 安装指定版本

    bash

    |---|-------------------------|
    | | pnpm add react@18.2.0 |

  • 更新所有依赖

    bash

    |---|---------------------------|
    | | pnpm update # 或 pnpm up |

  • 更新特定包

    bash

    |---|----------------------|
    | | pnpm update lodash |

  • 查看全局安装的包

    bash

    |---|--------------------------|
    | | pnpm list -g --depth=0 |

  • 升级 pnpm 自身

    bash

    |---|--------------------|
    | | pnpm add -g pnpm |

  • 硬链接 :同一依赖的不同版本在全局存储(~/.pnpm-store)中只保存一份,项目通过符号链接引用。

  • 扁平化依赖 :避免 node_modules 嵌套过深(类似 yarn 的扁平化,但更高效)。

  • 并行安装:利用多线程加速依赖下载。

  • 增量安装:仅更新变更的依赖,而非全部重新安装。

  • 严格依赖隔离:通过符号链接确保项目只能访问其声明的依赖,避免依赖污染。

相关推荐
孪生质数-14 小时前
Windows安装OpenClaw(Clawdbot)教程
ai·npm·skill·minimax·clawdbot·openclaw
cuber膜拜19 小时前
Marp CLI快速入门
pdf·npm·markdown·ppt·marp
咖啡の猫20 小时前
微信小程序使用 npm 包
微信小程序·小程序·npm
天若有情6732 天前
XiangJsonCraft v1.2.0重大更新解读:本地配置优先+全量容错,JSON解耦开发体验再升级
前端·javascript·npm·json·xiangjsoncraft
有个人神神叨叨2 天前
pnpm cnpm npm 对比
前端·arcgis·npm
有个人神神叨叨2 天前
node、npm 和 npx 的关系
前端·arcgis·npm
虹科网络安全3 天前
艾体宝新闻 | NPM 生态系统陷入困境:自我传播恶意软件在大规模供应链攻击中感染了 187 个软件包
前端·npm·node.js
摇滚侠3 天前
PNPM 包管理工具和 NPM 包管理工具
vscode·npm·node.js·pnpm
147API3 天前
改名后的24小时:npm 包抢注如何劫持开源项目供应链
前端·npm·node.js
抵梦3 天前
NPM、CNPM、PNPM:Node.js 依赖工具对比与选择
前端·npm·node.js