【快速删除 node_modules 】rimraf
目录
1. 什么是node_modules
2. 卸载一个npm包
3. 删除 node_modules 为什么这么慢
4. rimraf
5. 为什么rimraf 这么快
作为前端开发,无论我们关注不关注,每天都能接触到node_modules。通常产生于一个npm install命令,之后就不会多加关注。只有在卸载的时候会发现删除整个node_modules怎么这么慢!
1. 什么是node_modules
node_modules是一个特殊的目录,通常用来存放项目所依赖的npm包及其相关依赖,以供应用程序在运行时动态加载所需的模块和库文件。
当使用npm或者yarn等包管理工具安装npm包时,会将相关依赖包下载并保存在项目的node_modules目录下,以便于在应用程序中引用和使用这些包。
2. 卸载一个npm包
npm uninstall <package-name>
这个命令会卸载指定名称的包及其依赖,并将它们从项目的node_modules目录中删除。
3. 删除 node_modules 为什么这么慢
- 数量庞大:我们说的是数千个文件,有时甚至是数十万个文件!穿越这个数字丛林需要时间。
- 文件系统缓存:操作系统会缓存经常访问的文件。删除大型嵌套结构需要清除缓存,这会增加延迟。
- 进程锁:如果有东西正在使用 node_modules 中的文件,删除工作就会戛然而止。
- 磁盘 I/O 限制:硬盘和固态硬盘都有读/写速度。特别是老式硬盘,在随机存取方面很吃力,因此大量删除很麻烦。
- 图形用户界面开销:图形文件管理器在处理大量文件操作时,会因 UI 更新而陷入困境。、
4. rimraf
rimraf 是一款命令行工具,可以快速删除node_modules
全局安装
npm install -g rimraf局部安装
npx rimraf node_modules
执行
rimraf node_modules
5. 为什么rimraf 这么快
- 异步操作:与某些一次删除一个文件的方法不同,rimraf 在后台工作,允许其他进程同时运行。
- 递归删除:它能有效深入每个子文件夹,无需执行多个命令。
- 强大的错误处理功能:遇到锁定文件RIMRAF 会通过重试或优雅地跳过有问题的文件。
- 跨平台一致性:无论您使用的是 Windows、macOS 还是 Linux,rimraf 都能提供超快的结果。
相关文章:
【快速删除 node_modules 】rimraf
目录 1. 什么是node_modules 2. 卸载一个npm包 3. 删除 node_modules 为什么这么慢 4. rimraf 5. 为什么rimraf 这么快 作为前端开发,无论我们关注不关注,每天都能接触到node_modules。通常产生于一个npm install命令,之后就不会多加关注…...
毕业设计选题:基于ssm+vue+uniapp的教学辅助小程序
开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...
13-指针和动态内存-内存泄漏
一、视频笔记: C语言通过malloc,来获取堆上的内存。 动态调用内存: malloc 和 free ;new 和 delete 都行。 内存泄漏指的是我们动态申请了内存,但是即是是使用完了之后(从来都不去释放它)。只…...
基于深度学习的视频摘要生成
基于深度学习的视频摘要生成是一种通过自动化方式从长视频中提取关键片段,生成简洁且有代表性的视频摘要的技术。其目的是在保留视频主要内容的基础上,大幅缩短视频的播放时长,方便用户快速理解视频的核心信息。以下是视频摘要生成的主要方法…...
适合初学者的[JAVA]: 基础面试题
目录 说明 前言 String/StringBuffer/StringBuilder区别 第一点: 第二点: 总结: 反射机制 JVM内存结构 运行时数据区域被划分为5个主要组件: 方法区(Method Area) 堆区(Heap Area) 栈区&#x…...
internal.KaptWithoutKotlincTask$KaptExecutionWorkAction 问题 ---Room数据库
Caused by: java.lang.Exception: No native library is found for os.nameMac and os.archaarch64. path/org/sqlite/native/Mac/aarch64 m3 目前使用的是MAC M3芯片的配置会出现这个问题。M1就应该就有这个问题 解决: 在project层级的build.gradle中的allprojec…...
Frequency-aware Feature Fusion for Dense Image Prediction 论文阅读
摘要:密集图像预测任务要求具有强类别信息和高分辨率精确空间边界细节的特征。为了实现这一点,现代分层模型通常利用特征融合,直接添加来自深层的上采样粗特征和来自较低层次的高分辨率特征。在本文中,我们观察到融合特征值在对象内的快速变化…...
Springboot + netty + rabbitmq + myBatis
目录 0.为什么用消息队列1.代码文件创建结构2.pom.xml文件3.三个配置文件开发和生产环境4.Rabbitmq 基础配置类 TtlQueueConfig5.建立netty服务器 rabbitmq消息生产者6.建立常规队列的消费者 Consumer7.建立死信队列的消费者 DeadLetterConsumer8.建立mapper.xml文件9.建立map…...
电磁兼容(EMC):整改案例(四)人体对EFT测试影响有多大?
目录 1. 异常现象 2. 原因分析 3. 整改方案 4. 总结 1. 异常现象 某产品按GB/T 17626.4标准进行电快速瞬变脉冲群测试,测试条件为:频率5kHz/100kHz,测试电压L,N线间2kV,L,N线对PE线4kV。测试过程中需要…...
数据可视化基础:让数据说话
一、引言 在信息洪流中,数据可视化如同灯塔,照亮了数据的海洋,让我们能够洞察数据背后的意 义。 下面是对数据可视化的详细介绍,包括定义、作用、类型、原则、工具方法以及应用场景, 并附上具体的代码示例。 二、数…...
有哪些优化数据库性能的方法?如何定位慢查询?数据库性能优化全攻略:从慢查询定位到高效提升
在现代应用程序开发中,数据库的性能对于整体系统的响应能力至关重要。随着用户数量的增加和数据量的增长,如何优化数据库性能、定位慢查询成了每一个开发者面临的重要挑战。今天,我想和大家分享一些实用的数据库性能优化方法,以及…...
C语言 | Leetcode C语言题解之第450题删除二叉搜索树中的节点
题目: 题解: struct TreeNode* deleteNode(struct TreeNode* root, int key){struct TreeNode *cur root, *curParent NULL;while (cur && cur->val ! key) {curParent cur;if (cur->val > key) {cur cur->left;} else {cur c…...
智慧防灾,科技先行:EasyCVR平台助力地质灾害视频监测系统建设
随着科技的飞速发展,视频监控技术已成为地质灾害监测与预警的重要手段之一。在众多视频监控平台中,EasyCVR视频汇聚平台凭借其强大的视频整合、实时传输、视频处理及分发等能力,在地质灾害场景中展现出显著的应用优势。 一、实时监测与远程监…...
掌握C#核心概念:类、继承、泛型等
C# 是一门功能强大且灵活的面向对象编程语言,它结合了许多现代编程语言的特点和特性。无论你是编程新手,还是有经验的开发者,理解C#中的核心概念都是非常重要的。本文将介绍C#中的类与对象、构造函数和析构函数、方法的重载与重写、继承与多态…...
[VULFOCUS刷题]tomcat-pass-getshell 弱口令
tomcat-pass-getshell 弱口令 启动容器,打开网站 点开manageapp,输入弱口令 tomcat/tomcat 之后在下面上传jsp大马,首先生成一个jsp马 这里我直接使用github别人生成好的 tennc/webshell: This is a webshell open source project (github.…...
golang rpc
RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务,对应rpc的是本地过程调用,函数调用是最常用的本地过程调用,将本地过程调用变成远程调用会面临着各种问题。 以两数…...
A Learning-Based Approach to Static Program Slicing —— 论文笔记
A Learning-Based Approach to Static Program Slicing OOPLSA’2024 文章目录 A Learning-Based Approach to Static Program Slicing1. Abstract2. Motivation(1) 为什么需要能处理不完整代码(2) 现有方法局限性(3) 验证局限性: 初步实验研究实验设计何为不完整代码实验结果…...
掌握 C# 中的委托与事件机制
C# 中的委托和事件为开发者提供了处理回调、异步编程以及发布订阅模式的强大工具。委托与事件机制在实际应用中非常常见,特别是在事件驱动编程和 GUI 应用中。本文将带你深入理解委托的定义、匿名方法、Lambda 表达式、事件机制以及多播委托的使用。 1. 委托&#x…...
使用微服务Spring Cloud集成Kafka实现异步通信(消费者)
1、本文架构 本文目标是使用微服务Spring Cloud集成Kafka实现异步通信。其中Kafka Server部署在Ubuntu虚拟机上,微服务部署在Windows 11系统上,Kafka Producer微服务和Kafka Consumer微服务分别注册到Eureka注册中心。Kafka Producer和Kafka Consumer之…...
docker pull 超时Timeout失败的解决办法
当国内开发者docker pull遇到如下提示时,不要惊讶 [rootvm /]# docker pull postgres Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 128.121.146.235:443: i/o timeout [rootvm /]# 自2024…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
