当前位置: 首页 > news >正文

Pnpm的使用

pnpm 是一个快速、节省磁盘空间的 Node.js 包管理工具,相比 npm 和 yarn,它通过硬链接符号链接技术优化了依赖安装效率。以下是 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 包管理工具,相比 npm 和 yarn,它通过硬链接符号链接技术优化了依赖安装效率。以下是 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 的扁平化,但更高效)。
  • 并行安装:利用多线程加速依赖下载。
  • 增量安装:仅更新变更的依赖,而非全部重新安装。
  • 严格依赖隔离:通过符号链接确保项目只能访问其声明的依赖,避免依赖污染。
http://www.xdnf.cn/news/921277.html

相关文章:

  • JUC并发编程(四)常见模式
  • 链结构与工作量证明7️⃣:用 Go 实现比特币的核心机制
  • Python编码格式化之PEP8编码规范
  • 微服务架构-分布式任务调度
  • Ubuntu系统下交叉编译openssl
  • 【在线五子棋对战】二、websocket 服务器搭建
  • 【Qlib】Windows上Qlib安装与初步使用
  • 食品计算—Food Portion Estimation via 3D Object Scaling
  • 运维_集运维linu自动化运维和部署
  • Scrapy爬虫教程(新手)
  • 基于物联网设计的智慧家庭健康医疗系统
  • OpenWrt:使用ALSA实现边录边播
  • ngx_stream_geo_module在传输层实现高性能 IP Region 路由
  • leetcode 3170. 删除星号以后字典序最小的字符串 中等
  • ADVANTEST R3764 66 R3765 67爱德万测试networki connection programming网络程序设计手册
  • c++ —— 内存管理
  • 【题解-洛谷】P1706 全排列问题
  • 前端开发中出现的跨域问题以及解决方案
  • win32相关(消息Hook)
  • 【LLM大模型技术专题】「入门到精通系列教程」基于ai-openai-spring-boot-starter集成开发实战指南
  • Git开发实战
  • Android 相对布局管理器(RelativeLayout)
  • 多模型协同:基于 SAM 分割 + YOLO 检测 + ResNet 分类的工业开关状态实时监控方案
  • ZephyrOS 嵌入式开发Black Pill V1.2之Debug调试器
  • CSS 预处理器与工具
  • Spring中循环依赖问题的解决机制总结
  • ROS2,工作空间中新建了一个python脚本,需要之后作为节点运行。告诉我步骤?
  • 【选配电脑】CPU核显工作机控制预算5000
  • vue · 插槽 | $slots:访问所有命名插槽内容 | 插槽的使用:子组件和父组件如何书写?
  • Bugku-CTF-Web安全最佳刷题路线