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

pnpm的基本用法

以下是 pnpm 的核心命令和使用指南,涵盖从安装依赖到项目管理的常见操作:


1. 基础命令

(1) 安装依赖
pnpm install          # 安装 package.json 中的所有依赖
pnpm install <包名>   # 安装指定包(自动添加到 dependencies)
pnpm install <包名>@1.0.0  # 指定版本安装
(2) 添加依赖
pnpm add <包名>         # 添加开发依赖(保存到 devDependencies)
pnpm add <包名> --save-dev  # 显式添加开发依赖
pnpm add <包名> --save-peer  # 添加 peerDependencies
(3) 移除依赖
pnpm remove <包名>       # 移除依赖并更新 package.json
pnpm uninstall <包名>    # 同上(旧命令)
(4) 查看依赖
pnpm list             # 查看所有已安装的依赖(包括全局和项目依赖)
pnpm list --depth=0      # 仅显示顶层依赖
pnpm why <包名>        # 查看为何需要某个依赖

2. pnpm 特有功能

(1) 硬链接与存储管理
  • 硬链接节省空间:pnpm 通过硬链接复用相同依赖,显著减少磁盘占用。
  • 清理缓存
    pnpm store prune       # 清理无用依赖(需管理员权限)
    
(2) 快速运行脚本
pnpm run <脚本名>      # 执行 npm scripts(如 pnpm run dev)
pnpm run lint -- --fix  # 传递参数给脚本
(3) 查看版本和配置
pnpm -v               # 查看 pnpm 版本
pnpm config list       # 查看当前配置
pnpm config set <key> <value>  # 修改配置(如设置镜像源)

3. 高级用法

(1) 全局安装
pnpm add <包名> -g      # 全局安装工具(如 pnpm itself)
pnpm global add <包名>  # 同上
pnpm exec <命令>       # 使用全局安装的工具执行命令(如 pnpm exec eslint .)
(2) 查看依赖树
pnpm depgraph          # 生成依赖关系图(可视化需配合工具如 `pnpm depviz`)
(3) 修复依赖冲突
pnpm dedupe           # 自动修复重复依赖
pnpm check             # 检查依赖是否完整

4. pnpm vs npm/yarn 对比

命令pnpmnpm/yarn
安装依赖更快、占用更小磁盘传统方式,依赖独立存储
添加依赖支持 --save-peer 等选项语法略有不同
移除依赖自动清理残留文件需手动删除

5. 常见问题解决

(1) 权限问题
# Linux/macOS
sudo pnpm install# Windows(推荐使用 PowerShell)
pnpm install --unsafe-perm
(2) 清除缓存
pnpm cache clean --force
(3) 查看详细日志
pnpm install --verbose  # 显示安装过程的详细日志

6. 配置文件

  • 项目配置:在项目根目录创建 pnpmfile.js 自定义构建逻辑。
  • 全局配置:修改 ~/.pnpmrc 文件(如设置镜像源):
    registry=https://registry.npm.taobao.org
    

总结

  • 推荐场景:大型项目、 monorepo、追求性能优化。
  • 学习资源:pnpm 官方文档、pnpm vs npm。

如果有具体需求(如多包管理、CI/CD 集成),可以进一步探讨!

相关文章:

pnpm的基本用法

以下是 pnpm 的核心命令和使用指南&#xff0c;涵盖从安装依赖到项目管理的常见操作&#xff1a; 1. 基础命令 (1) 安装依赖 pnpm install # 安装 package.json 中的所有依赖 pnpm install <包名> # 安装指定包&#xff08;自动添加到 dependencies&#xf…...

【实战中提升自己】防火墙篇之双ISP切换与VRRP切换对于用户的体验

! 拓扑与说明 某公司的网络架构&#xff0c;这样的架构在目前的网络中是在常见的&#xff0c;假设您接收一个这样的网络&#xff0c;应该如何部署&#xff0c;该实战系列&#xff0c;就是一步一步讲解&#xff0c;如何规划、设计、部署这样一个环境&#xff0c;这…...

Go在1.22版本修复for循环陷阱

记录 前段时间升级Go版本碰到一个大坑&#xff0c;先记录。 先上代码案例&#xff1a; func main() {testClosure() }func testClosure() {for i : 0; i < 5; i {defer func() {fmt.Println(i)}()} }在1.22之下&#xff08;不包括1.22&#xff09;版本&#xff1a; 输出的…...

Nginx+PHP+MYSQL-Ubuntu在线安装

在 Ubuntu 上配置 Nginx、PHP 和 MySQL 的步骤如下&#xff1a; 1. 更新系统包 首先&#xff0c;确保系统包是最新的&#xff1a; sudo apt update sudo apt upgrade2. 安装 Nginx 安装 Nginx&#xff1a; sudo apt install nginx启动并启用 Nginx 服务&#xff1a; sudo…...

SpringDataJPA使用deleteAllInBatch方法逻辑删除失效

概述 在使用Spring Boot JPA时&#xff0c;执行批量删除操作时&#xff0c;遇到逻辑删除失效的问题。具体而言&#xff0c;当使用deleteAllInBatch方法时&#xff0c;数据会被物理删除&#xff0c;而不是进行逻辑删除&#xff1b;但是当使用deleteAll时&#xff0c;逻辑删除操…...

DOM Node

DOM Node 引言 在Web开发中,DOM(Document Object Model)节点是构建网页和交互式应用程序的核心。DOM节点是文档的构建块,可以用来表示HTML和XML文档中的任何部分。本文将详细介绍DOM节点的基本概念、类型、操作方法以及在实际开发中的应用。 什么是DOM节点? DOM节点是…...

基于STM32的智能家居能源管理系统

1. 引言 传统家庭能源管理存在能耗监控粗放、设备联动不足等问题&#xff0c;难以适应绿色低碳发展需求。本文设计了一款基于STM32的智能家居能源管理系统&#xff0c;通过多源能耗监测、负荷预测与优化调度技术&#xff0c;实现家庭能源的精细化管理与智能优化&#xff0c;提…...

智慧园区后勤单位消防安全管理:安全运营和安全巡检

//智慧园区消防管理困境大曝光 智慧园区&#xff0c;听起来高大上&#xff0c;但消防管理却让人头疼不已。各消防子系统各自为政&#xff0c;像一座座孤岛&#xff0c;信息不共享、不协同。 消防设施管理分散&#xff0c;不同区域、企业的设备标准不一样&#xff0c;维护情况…...

HTML 日常开发常用标签

文章目录 HTML 日常开发常用标签1、基本结构标签2、内容标签3、多媒体标签4、表单标签5、列表和定义标签6、表格标签7、链接和图像8、元数据9、语义化标签&#xff08;HTML5新增&#xff09;10、框架和内联11、交互12、过时或不推荐使用的标签 HTML 日常开发常用标签 1、基本结…...

Spring事务失效六大场景

引言 Spring事务一般我们采用注解实现&#xff0c;但是我们构造事务实现的时候常常没察觉失效的情况&#xff0c;本篇文章总结事务失效的六大情况&#xff0c;帮助我们深刻理解事务失效的边界概念 1. 方法自调用 这个主要是针对声明式事务的&#xff0c;经过前面的介绍&…...

【缓冲区】数据库备份的衍生问题,缓冲区在哪里?JVMor操作系统?(二)

【缓冲区】数据库备份的衍生问题&#xff0c;缓冲区在哪里&#xff1f;JVMor操作系统&#xff1f;&#xff08;二 完结&#xff09; 缓冲区既属于操作系统&#xff0c;也属于 JVM&#xff0c;具体取决于你讨论的是哪个层面的缓冲区。下面我会详细解释这两者的区别和联系。 1. …...

如何免费使用稳定的deepseek

0、背景&#xff1a; 在AI辅助工作中&#xff0c;除了使用cursor做编程外&#xff0c;使用deepseek R1进行问题分析、数据分析、代码分析效果非常好。现在我经常会去拿行业信息、遇到的问题等去咨询R1&#xff0c;也给了自己不少启示。但是由于官网稳定性很差&#xff0c;很多…...

钉钉小程序(企业内部应用)开发--钉钉小程序web-view嵌套H5与小程序之间的通信(H5跳转钉钉小程序小程序postMessage)

钉钉小程序代码&#xff1a;嵌套H5 pages/login/index.axml <web-view src"{{urlH5}}" onMessage"test"></web-view> H5向小程序发送信息&#xff1a; H5代码&#xff1a; 通过以下代码我一直报错dd没有被定义 if (navigator.userAgent.to…...

超级免费/牛的图片格式转换工具jpg/jpeg/png

选择多次图片文件&#xff0c;并在所有图片选择完后进行批量转换。这种需求可以通过tkinter来实现&#xff0c;它是Python的标准GUI库&#xff0c;能够提供一个简洁的界面来选择文件和执行操作。您的代码要是网络运行不流畅可以试试它​​​​​​​ 下面是一个简单的GUI程序&a…...

毛泽东思想“活的灵魂”

关于毛泽东思想“活的灵魂”的构成及其内涵&#xff0c;综合历史文献与权威表述&#xff0c;核心内容整理如下&#xff1a; 一、毛泽东思想活的灵魂的权威定义 根据十一届六中全会《关于建国以来党的若干历史问题的决议》&#xff08;1981年&#xff09;&#xff0c;毛泽东思想…...

RabbitMQ系列(三)基本概念之Consumer

在 RabbitMQ 中&#xff0c;Consumer&#xff08;消费者&#xff09; 是负责从队列&#xff08;Queue&#xff09;中获取并处理消息的客户端角色&#xff0c;其核心机制与功能如下&#xff1a; 一、Consumer 的定义与核心作用 消息处理终端 Consumer 通过订阅或拉取队列中的消…...

天梯L2-003 月饼

L2-003 月饼 - 团体程序设计天梯赛-练习集 def slove():n,m map(float,input().split())z list(map(float,input().split()))y list(map(float,input().split()))n int(n)d []for i in range(n):d.append([z[i],y[i]])d.sort(key lambda x:x[1]/x[0],reverse True)cnt…...

使用DeepSeek/ChatGPT等AI工具辅助编写wireshark过滤器

随着deepseek,chatgpt等大模型的能力越来越强大&#xff0c;本文将介绍借助deepseek&#xff0c;chatgpt等大模型工具&#xff0c;通过编写提示词&#xff0c;辅助生成全面的Wireshark显示过滤器的能力。 每一种协议的字段众多&#xff0c;流量分析的需求多种多样&#xff0c;…...

常用的AI文本大语言模型汇总

AI文本【大语言模型】 1、文心一言https://yiyan.baidu.com/ 2、海螺问问https://hailuoai.com/ 3、通义千问https://tongyi.aliyun.com/qianwen/ 4、KimiChat https://kimi.moonshot.cn/ 5、ChatGPThttps://chatgpt.com/ 6、魔塔GPT https://www.modelscope.cn/studios/iic…...

《深度剖析:特征工程—机器学习的隐秘基石》

在机器学习的宏大版图中&#xff0c;特征工程宛如一座隐藏在幕后却又至关重要的基石。它默默发挥着作用&#xff0c;将原始数据雕琢成模型能够有效学习和理解的形态&#xff0c;深刻影响着机器学习模型的性能与表现。 特征工程&#xff1a;机器学习的关键前奏 特征工程是运用…...

卡尔曼滤波器开发实践之二:从理论到代码的五大公式实现解析

1. 卡尔曼滤波器五大公式的工程化理解 卡尔曼滤波器就像一位经验丰富的导航员&#xff0c;在充满噪声的数据海洋中为我们指引方向。我在实际项目中多次使用它来处理传感器数据&#xff0c;发现真正理解这五大公式的工程意义比死记硬背数学推导更重要。 1.1 预测与更新的双人舞 …...

C++的动态内存管理(new/delete的用法,malloc和new的区别,内存的具体分布)

C的动态内存管理允许程序在运行是根据需要分配内存和释放内存&#xff0c;主要通过new和delete运算符来完成。与静态内存分配相比&#xff0c;动态内存分配更具有灵活性&#xff0c;但它需要手动管理来避免内存泄漏。一C/C中内存的具体分布先来了解一下内存的几个区域&#xff…...

5分钟搭建微信智能助手:Python自动化消息处理终极方案

5分钟搭建微信智能助手&#xff1a;Python自动化消息处理终极方案 【免费下载链接】WechatBot 项目地址: https://gitcode.com/gh_mirrors/wechatb/WechatBot 还在为重复的微信消息回复而烦恼吗&#xff1f;每天处理大量群消息、客户咨询和通知发送&#xff0c;占用了你…...

Axure RP高效集成Font Awesome图标库的完整指南

1. 为什么选择Font Awesome与Axure RP组合&#xff1f; 在原型设计领域&#xff0c;图标的使用频率极高。传统的图片图标存在放大模糊、风格不统一、管理困难等问题。Font Awesome作为目前最流行的开源图标库&#xff0c;提供了1600风格统一的矢量图标&#xff0c;而Axure RP作…...

手把手复现DiffusionDet:基于PyTorch从论文到代码的完整实践指南(含COCO数据集)

从零实现DiffusionDet&#xff1a;基于PyTorch的扩散式目标检测实战指南 1. 环境配置与工具准备 在开始DiffusionDet项目之前&#xff0c;确保你的开发环境满足以下要求。我们将使用PyTorch作为主要框架&#xff0c;配合CUDA加速计算。 硬件建议&#xff1a; GPU&#xff1…...

FreeRTOS任务优先级设置不当导致系统卡死的排查与修复

1. FreeRTOS任务优先级设置不当的典型表现 在STM32F1系列单片机开发中&#xff0c;使用FreeRTOS时如果任务优先级设置不当&#xff0c;系统往往会表现出一些典型症状。最常见的就是系统运行一段时间后突然卡死&#xff0c;所有任务停止响应&#xff0c;连最基本的LED闪烁或串口…...

YOLO 系列:YOLOv11 损失函数改进:将 CIoU 替换为 Wise-IoU v3,提升小目标回归精度

CIoU 在小目标上“水土不服”,你中招了吗? 做目标检测的朋友都知道,小目标的边界框回归是整个检测任务中最难啃的骨头。YOLOv11 在 COCO 上大目标检测 AP 能达到 60% 以上,但小目标 AP 往往只有 30% 出头——这个差距不是模型结构的问题,而是损失函数的设计缺陷。 YOLOv…...

生物信息学必备:Aspera 3.X.X与Aspera_cli高速下载NCBI/EBI数据实战指南

生物信息学必备&#xff1a;Aspera 3.X.X与Aspera_cli高速下载NCBI/EBI数据实战指南 在基因组学、转录组学等生物信息学研究中&#xff0c;高效获取公共数据库中的海量数据是每个研究者必须面对的挑战。传统FTP下载方式在面对数百GB的测序数据时往往力不从心&#xff0c;而Aspe…...

Retrieval-based-Voice-Conversion-WebUI:终极AI语音变声指南,10分钟打造专属音色

Retrieval-based-Voice-Conversion-WebUI&#xff1a;终极AI语音变声指南&#xff0c;10分钟打造专属音色 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Tren…...

Clawdbot+Qwen3:32B快速上手:免开发Web界面搭建私有ChatGPT

ClawdbotQwen3:32B快速上手&#xff1a;免开发Web界面搭建私有ChatGPT 1. 为什么选择这个方案&#xff1f; 你是否遇到过这些困扰&#xff1a; 想使用强大的Qwen3:32B大模型&#xff0c;但本地硬件资源不足希望拥有一个美观易用的Web界面&#xff0c;但不想从头开发需要确保…...