背景——跑(离)路(职)啦
离开了工作近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个部分
- 递归遍历对应目录;
- 判断查找到的子目录名称是否为
node_modules
; - 如果是,则
rm -rf
一把唆; - 如果不是,继续递归遍历;
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哦?(点我前往)