4年“生产”了50GB的代码?rm-node-modules-cli 帮你迅速恢复磁盘空间

背景——跑(离)路(职)啦

离开了工作近4年的公司,清理电脑文件时发现,工作目录下有将近上百个前端项目,随便查看了几个项目的 node_modules 文件夹,发现单个都在两三百兆左右大小。不看不知道,一看吓一跳,怪不得我512GB的硬盘空间都所省无几了,看来是该清理一波了。

清理 node_modules 目录的核心代码实现

rm -rf “工作目录” ?目测不是很合理,毕竟还是有一些代码可能具有参考复用价值(不涉及到公司隐私、安全以及商业机密,一个切图仔能有啥核心代码,手动狗头?)。而且一般代码文件占的磁盘空间都非常有限,唯一占大头的更多是 node_modules 目录,所以就想着写一个自动化脚本把工作空间下的所有 node_modules 目录都删掉。这样既保留了有用的代码,又恢复了大量的磁盘空间。下面是核心代码奉上

import shelljs from 'shelljs'
import fs from 'fs'
import path from 'path'

const TARGET_DIR_NAME = 'node_modules'

function rmNodeModules(parentPath: string) {
  const res = fs.readdirSync(parentPath)
  res.forEach((item: string) => {
    const filePath = path.resolve(parentPath, item)
    const stat = fs.statSync(filePath)
    if (stat.isDirectory()) {
      if (item === TARGET_DIR_NAME) {
        shelljs.rm('-rf', filePath)
        console.log(`${filePath} 删除成功`)
      } else {
        rmNodeModules(filePath)
      }
    }
  })
}

module.exports = rmNodeModules
复制代码

代码逻辑也很简单,主要包含如下4个部分

  1. 递归遍历对应目录;
  2. 判断查找到的子目录名称是否为 node_modules
  3. 如果是,则 rm -rf 一把唆;
  4. 如果不是,继续递归遍历;

rm-node-modules-cli 工具来了,造(自)福(己)大(瞎)家(玩)

到这一步在自己本地 ts-node index.ts 就已经达成目标了,后来想着说,既然自己有这个需求,那众多的 Frontend(切) Engineers(图仔?) 是不是也有这个需求?就考虑把这段代码封装成一个简单的 node cli 工具,于是就有了 npm 包 @yukap/rm-node-modules 使用非常简单,如下

1. 安装

npm i @yukap/rm-node-modules -g // yarn global add @yukap/rm-node-modules
复制代码

2. 使用

cd 'your target directory' // 进入你想清理的目录
rm-node-modules-cli // now your useless node_modules will be remove recursively
复制代码

注意,这个命令一把唆就执行了,没有确认没有选项,当前执行目录下的所有(包括递归子目录) node_modules 都会被删掉哦?。

笔者清理前后磁盘空间对比,下图是清理前:可用空间 109GB

下图是清理后:可用空间159GB,总共清理出了50GB的磁盘空间,哦豁。

突然想到了那个关于 node_modules 的老梗再贴出来娱乐一下(牛头不对马嘴,纯属娱乐)

rm-node-modules-cli 工具完整源码已开源,如果觉得对你有启发或帮助不要吝惜star哦?(点我前往

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享