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

Vue.js 学习总结(15)—— 如何快速删除 node_modules 依赖文件

一、删除 node_modules 依赖为什么慢?

直接通过图形用户界面删除 node_modules 文件夹慢,原因主要有以下5点原因:

(1)文件数量巨大node_modules依赖可能会有上万个文件和文件夹,那么就使得操作系统需要花费非常多的时间来处理每一个文件的删除。

(2)文件系统缓存:操作系统有可能需要花时间去刷新文件系统的缓存,特别是对于那些频繁访问的文件或目录。

(3)文件进程被占用:如果某些进程正在使用 node_modules 中的文件,也就是被正在引用,那么这些文件将无法被删除的,会弹出提示直到相关的进程释放。

(4)磁盘IO限制:硬盘或SSD的读写速度也可能成为瓶颈,尤其是在比较老机械硬盘上,随机读写的性能较低就会特别慢。

(5)图形界面限制:图形界面的文件管理器在处理大量文件时,可能会因为UI的更新和绘制而变慢。

二、如何快速删除 node_modules 依赖?

其实借助一个命令行工具rimraf即可实现秒删除,如下是具体的操作流程。

(1)先全局安装 rimraf

npm install -g rimraf

(2)执行命令删除

rimraf node_modules

(3)重新下载依赖

npm install

注意1:或者如果你使用的是 npx(无需全局安装 rimraf)

npx rimraf node_modules

注意2:Vue项目删除node_modules和改了配置要重新启动项目,要不然会不生效

三、rimraf 为什么能快速删除 node_modules

rimraf其实是一个Node.js模块,它能提供一个跨平台的方式来删除文件和目录。它快速的主要原因其实主要有以下几点:

(1)异步操作:因为rimraf使用异步IO操作,那么它就不会阻塞事件循环,能更高效地处理大量文件和目录的删除。

(2)递归删除rimraf会递归地删除目录及其所有子目录和文件,这比手动或使用某些操作系统命令(如Windows下的rmdir)有更高的效率,因为后者有可能需要很多次调用才能完全清空一个非空目录。

(3)错误处理rimraf能够更好地处理删除过程中可能出现的错误问题,比如权限问题或文件正在被引用的情况,它会尝试重试或跳过这些文件,而不是把整个过程失败。

(4)跨平台兼容性rimraf在不同的操作系统上的表现都是一致的,这就意味着在WindowsLinux还是macOS上,它的性能和行为都是很接近的。

四、rimraf对比其它几种删除方式的优劣

主要是看到评论区不少大佬提了几种不同的优秀删除方式,所以特意去一一查资料对比一下优劣,方便大家选择更合适的方案。

(1)对比 rm -rf

  • 安全性rimraf 更安全,因为它不会导致 rm -rf 那样灾难性的误操作,比如意外删除根目录等。。

  • 跨平台: rimraf 在所有操作系统上表现一致兼容性更好,而 rm -rf 的行为在不同系统中可能有所不同。

  • 异步 vs 同步rimraf 异步执行,适合 Node.js 的非阻塞 I/O 模型,而 rm -rf 是同步的,可能阻塞进程直到操作完成。

  • 错误处理rimraf 提供了更详细的错误处理机制,而 rm -rf 在遇到错误时可能只会输出到标准错误流。

综上对比,在 Node.js 开发环境中,rimraf 通常是更优的选择,因为它更好地适应了 Node.js 的异步特性,并提供了更安全的文件删除方法。而在 Unix/Linux 命令行环境中,rm -rf 是直接可用的本地命令,适用于快速的文件管理任务。

(2)对比 del

del(也称为 del-cli)是另一个用于删除文件和文件夹的 npm 包,对比特点如下。

  • 功能丰富度: del 支持更复杂的模式匹配,而 rimraf 更专注于简单的文件夹删除。

  • API 设计: del 提供了更丰富的 API,包括同步和异步版本,而 rimraf 仅提供异步 API

  • 使用场景: 如果我们只需要删除文件夹,rimraf 可能就足够了;如果我们需要更复杂的文件匹配和删除逻辑,del 可能更适合。

两者都能高效地删除 node_modules 依赖,但在具体使用时可以根据项目需求和个人偏好来选择。在大多数情况下,rimraf 因为其简单性和广泛的支持而成为首选。但如果我们的项目中有更复杂的文件清理需求,del 提供的额外功能可能更有吸引力。

(3)对比 rmdir /S

  • 跨平台 vs 单平台rimraf 可以在多个平台上运行兼容性更好,而 rmdir /S 仅限于 Windows,因此有很大的局限性。

  • 错误处理: rimraf 提供了更精细的错误处理机制,而 rmdir /S 的错误处理相对简单。如果node_modules目录中的某个文件或目录正在被另一个进程使用,rmdir命令可能会失败。

  • 使用场景: rimraf 更适合在 Node.js 脚本中使用,特别是在构建自动化任务或 CI/CD 流水线时。rmdir /S 则适合在 Windows 命令行中进行手动操作或在批处理脚本中使用。


http://www.kler.cn/a/408417.html

相关文章:

  • 基于STM32的智能家居电器控制系统
  • 文件操作详解(1)
  • Python浪漫之画明亮的月亮
  • 分公司如何纳税
  • 开源项目-如何更好的参与开源项目开发
  • Python入门(14)--数据分析基础
  • springboot实战(17)(“大事件“——新增文章主体逻辑)
  • MySQL的DELETE(删除数据)详解
  • JavaSE 总复习:夯实基础,迈向进阶之路
  • LeetCode 4.寻找两个中序数组的中位数
  • 鸿蒙进阶篇-状态管理之@Provide与@Consume
  • Linux系列-僵尸状态
  • Java基于SpringBoot+Vue的藏区特产销售平台
  • 【创建型设计模式】单例模式
  • flink学习(1)——standalone模式的安装
  • GMAN解读(论文+代码)
  • 【面向对象】Java处理异常的方式
  • STM32抢占优先级不生效
  • 对于相对速度的重新理解 - 插一句
  • MySQL原理简介—10.SQL语句和执行计划
  • 编程中的字节序问题
  • 海信Java后端开发面试题及参考答案
  • 基于python的长津湖评论数据分析与可视化,使用是svm情感分析建模
  • docker 配置代理
  • 如何在 .gitignore 中仅保留特定文件:以忽略文件夹中的所有文件为例
  • hyperf 配置步骤