前端javascript包管理,npm升级用pnpm
一 pnpm 介绍
pnpm(Package Manager)是一个快速、节省磁盘空间的 JavaScript 包管理器,它是 Node.js 生态系统中 npm 的一个替代品。pnpm 解决了传统包管理工具在处理依赖时的一些痛点,特别是关于存储空间使用和依赖地狱的问题。以下是 pnpm 的几个核心特点和优势:
-
高效的存储机制:
pnpm引入了“内容寻址存储”(Content-Addressable Storage, CAS)的概念,它只在本地存储每个依赖的一个实例。这意味着,即使多个项目或同一项目中的不同依赖共享同一个依赖包,它们也不会被重复下载和存储。这极大地节省了磁盘空间,并加快了安装速度。 -
硬链接和符号链接:通过使用硬链接或符号链接(在不支持硬链接的平台上),
pnpm将全局存储中的依赖包链接到每个项目的node_modules目录中,而不是复制文件。这种方法保留了每个项目独立的依赖环境,同时避免了冗余。 -
避免依赖地狱:
pnpm确保所有依赖包的精确版本被安装,通过它的“严格版本控制”,有助于预防因依赖版本不一致导致的“节点_modules地狱”问题,即不同模块间依赖冲突的情况。 -
与 npm 的兼容性:尽管
pnpm提供了自己独特的功能和改进,但它设计上尽可能与npm兼容,这意味着你可以无缝地从npm迁移到pnpm,而不需要对package.json或工作流程做重大改动。 -
性能提升:由于减少了重复下载和存储的需求,
pnpm的安装速度通常比npm更快,尤其是在首次安装之后的后续安装,因为大部分依赖已经被本地存储。 -
跨平台支持:
pnpm支持 Windows、macOS 和 Linux,适用于各种开发环境。
综上所述,pnpm 通过其创新的依赖管理策略,提供了更快、更高效、更节省空间的包管理解决方案,马上放弃npm赶紧用pnpm吧
二 npm 升级用 pnpm
首次使用未安装pnpm时我们要安装安装pnpm
npm install -g pnpm
如果之前的老项目用npm安装的,请把node_modules删除。

用pnpm重新安装:
pnpm install
安装依赖,如下图:

安装完成,运行,如下图:
pnpm操作与原来的npm操作都一样,这点非常好,完全不用学拿来就用。
相关文章:
前端javascript包管理,npm升级用pnpm
一 pnpm 介绍 pnpm(Package Manager)是一个快速、节省磁盘空间的 JavaScript 包管理器,它是 Node.js 生态系统中 npm 的一个替代品。pnpm 解决了传统包管理工具在处理依赖时的一些痛点,特别是关于存储空间使用和依赖地狱的问题。…...
数据库操作(函数)
函数是一段可以直接被另外一段程序调用的程序或代码 一。字符串函数 1.concat(s1,s1....sn):字符串拼接,将s1,s2,sn拼接为一个字符串 例如: select concat("hello","world"); 2.lower(str&…...
[建堆堆排序的时间复杂度推导]向上建堆向下建堆堆排序的时间复杂度分析推导
💖💖💖欢迎来到我的博客,我是anmory💖💖💖 又和大家见面了 欢迎来到动画详解数据结构系列 作为一个程序员你不能不掌握的知识 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读 如何低成本搭…...
【C++初阶】--- C++入门(上)
目录 一、C的背景及简要介绍1.1 什么是C1.2 C发展史1.3 C的重要性 二、C关键字三、命名空间2.1 命名空间定义2.2 命名空间使用 四、C输入 & 输出 一、C的背景及简要介绍 1.1 什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题&…...
安装和使用图像处理软件GraphicsMagick @FreeBSD
GraphicsMagick是一个用于处理图像的读取、写入和操作的工具软件。它被誉为图像处理领域的“瑞士军刀”,短小精悍,支持超过88种图像格式,包括DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF等。 GraphicsMagick的主要特点包括:…...
一款功能强大的安卓虚拟机应用——VMOS Pro使用分享
前段时间我刚刚分享一个WeChat平板模块能够允许用户自由修改系统设置,让你的Android备用手机焕发新生,实现手机PAD化,实现两台设备同时登录微信号。今天我分享的这个相比WeChat更为简单,因为它可以通过虚拟机的方式进行多种androi…...
【408真题】2009-12
“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…...
vue3第三十三节(TS 之 computed watch)
vue3 组合是API 中我们经常使用的 监听函数 computed 和 watch使用 1、computed 里面添加类型 <script setup lang"ts"> import { ref, computed } from vue const age ref(18) // 定义一个Person 接口 interface Person {age: numbername: string } const…...
工厂模式(简单工厂模式+工厂模式)
工厂模式的目的就是将对象的创建过程隐藏起来,从而达到很高的灵活性,工厂模式分为三类: 简单工厂模式工厂方法模式抽象工厂模式 在没有工厂模式的时候就是,客户需要一辆马车,需要客户亲自去创建一辆马车,…...
整理好了!2024年最常见 20 道 Redis面试题(四)
上一篇地址:整理好了!2024年最常见 20 道 Redis面试题(三)-CSDN博客 七、Redis 单线程模型是如何工作的? Redis 是一个基于单线程模型的高性能键值存储数据库。尽管 Redis 操作大多数是单线程执行的,但它…...
sudo pip3 install rpi_ws281x error: externally-managed-environment
报错 error: externally-managed-environment piraspberrypi:~ $ sudo pip3 install rpi_ws281x error: externally-managed-environment This environment is externally managed ╰─> To install Python packages system-wide, try apt installpython3-xyz, where xyz i…...
day08-Java常用API
day08——Java常用API 一、今日内容介绍、API概述 各位同学,我们前面已经学习了面向对象编程,使用面向编程这个套路,我们需要自己写类,然后创建对象来解决问题。但是在以后的实际开发中,更多的时候,我们是…...
设计模式--建造者模式
建造者模式是一种创建型设计模式,它允许用户通过一步一步地构建对象来创建复杂的对象。这种模式在许多应用场景中非常有用,例如在创建具有多个可选参数的对象、构建具有多种配置的对象以及生成具有多个部分的对象时。 应用场景 创建具有多个可选参数的…...
运行时间比较
subprocess.run() 函数参数的含义: shell_command:这是要执行的命令。它可以是一个字符串,也可以是一个包含命令和参数的列表。例如,“ls -l” 或 [“ls”, “-l”]。shellTrue:这是一个布尔值参数,指示是…...
【系统架构师】-案例篇(十四)数据库与分布式
1、规范化 不满足3NF,导致的存储异常 原关系模式 航班(航班编号,航空公司,起飞地,起飞时间,目的地,到达时间,剩余票数,票价) 代理商(代理商编号…...
Golang实现递归复制文件夹
代码 package zdpgo_fileimport ("errors""os""path/filepath""strings" )// CopyDir 复制文件夹 // param srcPath 源文件夹 // param desPath 目标文件夹 // return error 错误信息 func CopyDir(srcPath, desPath string) error {…...
【漏洞复现】用友U8 CRM uploadfile 文件上传致RCE漏洞
0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案。 0x02 漏洞概述 用友 U8 CRM客户关系管理系统 uploadfle.php 文件存在任意文件上传漏洞,未经身份验证的攻击者通过漏洞上传…...
键盘盲打是练出来的
键盘盲打是练出来的,那该如何练习呢?很简单,看着屏幕提示跟着练。屏幕上哪里有提示呢?请看我的截屏: 截屏下方有8个带字母的方块按钮,这个就是提示,也就是我们常说的8个基准键位,我…...
构建sqli-labs学习环境与掌握SQL注入技术教程
根据提供的文档内容,以下是关于安装sqli-labs学习环境和SQLI-LABS教学的详细步骤和知识点: 安装sqli-labs学习环境 环境准备 操作系统:CentOS 7.6主机名:xuegod63IP地址:192.168.1.63 关闭防火墙和SELinux 禁用并…...
力扣HOT100 - 1143. 最长公共子序列
解题思路: 动态规划 class Solution {public int longestCommonSubsequence(String text1, String text2) {int m text1.length(), n text2.length();int[][] dp new int[m 1][n 1];for (int i 1; i < m; i) {char c1 text1.charAt(i - 1);for (int j 1…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
