最近逛 Github 的 Trending,发现一个 Node.js 项目的辅助工具,作者是鼎鼎大名的TJ,用于帮助清理 Node.js 项目中日渐臃肿的node_modules,下图是**node-prune**项目中的一张打趣图,虽然个人觉得这也不是 npm 一家独有的现象,不过还是很形象。

node-prune-why

那么,先来看一段**node-prune**的简易描述:

node-prune is a small tool to prune unnecessary files from ./node_modules, such as markdown, typescript source files, and so on.

接着,简单介绍一下如何安装及使用。

首先,node-prune 这个工具是基于 go 的,所以你的系统上得安装 go,如果你也是使用 MAC 的话,那就比较简单了,直接使用brew安装就好了:

1
$ brew install go

接着就是在本地安装 node-prune:

1
$ go get github.com/tj/node-prune/cmd/node-prune

这里有点需要注意一下,安装完以后,你会发现无法直接运行node-prune这个命令,因为node-prune目前的位置是在~/go/bin里面,而这个路径可能并不存在于你的PATH中,所以你需要手动输入node-prune的路径才行。

最后就是使用node-prune来清理node_modules中的冗余文件了。

1
$ ~/go/bin/node-prune /PATH/TO/PROJECT/node_modules

/PATH/TO/PROJECT/node_modules就是你项目中的node_modules路径。

来个效果图 node-prune-result

一个小项目就可以轻松瘦身25MB,使用又是如此简单,对于 SSD 硬盘才 250G 的我而言,这个工具确实绝对值得拥有。

最后如果你需要遍历清理一个目录下所有项目的node_modules,可以参考一下这个shell脚本:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/usr/bin/env bash

find * -prune -type d | while read d; do
  if [[ -e "${d}/package.json" && -d "${d}/node_modules" ]]
  then
    echo "-------- Node.js Repository: { $d } ---------"
    echo "start node-prune process..."
    /PATH/TO/go/bin/node-prune "${d}/node_modules"
    echo "prune done!"
    echo ""
  fi
done