logo
0
0
WeChat Login
wangmiao<tuziling84@gmail.com>
chore: initial open-source setup

clean-node-modules

简体中文 | English

release license ci

极速扫描并清理磁盘上的 node_modules 目录。

  • 模式1 (dir): 扫描指定目录(需提供 --path 或在交互中输入)。
  • 模式2 (all): 扫描当前电脑所有目录(默认根目录/全盘;Windows 会枚举存在盘符)。
  • 无参数启动(含双击打包产物)自动进入交互菜单。

特性

  • 快速并发扫描(默认并发 64)
  • 可限制最大递归深度,支持隐藏目录开关
  • 交互确认与 --dry-run 预览,避免误删
  • 跨平台(macOS / Linux / Windows)
  • 打包成独立可执行文件,双击即可运行

安装 / 打包

cd /path/to/clean-node-modules pnpm add -D pkg pnpm run build # 生成 dist/{clean-node-modules-*} 各平台可执行文件

快速开始(交互模式)

# 无参数: 进入交互菜单(1=指定目录,2=全盘扫描) node bin/clean-node-modules.js

交互菜单示例:

请选择: 1) 扫描指定目录 2) 扫描当前电脑所有目录

命令行用法

# 模式1: 指定目录,不询问直接删除 node bin/clean-node-modules.js --mode dir --path /path/to/projects --yes # 模式1: 仅查看(不删除) node bin/clean-node-modules.js --mode dir --path /path/to/projects --dry-run # 模式2: 全盘扫描(可能较慢) node bin/clean-node-modules.js --mode all # 模式2: 仅扫描用户目录 node bin/clean-node-modules.js --mode all --path "$HOME" # 模式2: 全盘扫描并直接删除(谨慎) node bin/clean-node-modules.js -m all -y # 或显式指定根目录 node bin/clean-node-modules.js -m all -p / -y

参数

选项含义
`-m, --mode <dirall>`
-p, --path <path>mode=dir 的起始目录;mode=all 可用于改写默认起点
-y, --yes不询问,直接删除
-n, --dry-run仅展示将要删除的 node_modules,不实际删除
-c, --concurrency <num>并发读取目录数,默认 64
-d, --max-depth <num>最大递归深度(0=仅顶层),默认无限
--include-dot包含以 . 开头的隐藏目录
--exclude <a,b,c>逗号分隔的需要跳过的目录名
-h, --help显示帮助

默认忽略规则

  • 基础排除:.git, .hg, .svn, .cache, .idea, .DS_Store, dist, build, out, coverage, .pnpm-store, .npm, .yarn, .nvm, .cargo, .vscode, Pods, DerivedData, android, ios
  • mode=all 额外排除(macOS 常见):Library, Applications, Movies, Music, Pictures, Public, Downloads, Desktop

可通过 --exclude 自行追加排除项;需要包含隐藏目录时添加 --include-dot

性能与限制

  • 全盘扫描可能较慢,建议在意速度时使用 --path "$HOME" 或特定起点。
  • 可用 --max-depth 限制深度;例如 --max-depth 2 顶层两级。
  • 某些系统目录可能无权限访问,会被安全忽略,但仍会消耗少量时间。

跨平台

  • macOS / Linux:mode=all 默认从根目录 / 开始。
  • Windows:mode=all 会枚举存在的盘符(如 C:\\, D:\\)。
  • 打包产物可直接双击运行:
# macOS Apple Silicon ./dist/clean-node-modules-macos-arm64 # macOS Intel ./dist/clean-node-modules-macos-x64

FAQ

  • 扫描很慢怎么办?
    • 使用 --path "$HOME" 或更精确的起点;或调小 --max-depth
  • 会误删吗?
    • 默认会在删除前交互确认;若传入 --yes 则不会询问,务必先 --dry-run 预览。
  • 如何只预览不删除?
    • --dry-run

贡献

欢迎 PR!

git clone https://github.com/wangmiaozero/clean-node-modules.git cd clean-node-modules pnpm i pnpm run build

提交前请确保:

  • 代码能在本地运行(源码/打包均可)
  • README 已同步最新行为

License

MIT © 2025 wangmiaozero

详见 LICENSE