We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
node-prune 是 tj 大神用 go 写的用来删除 node_modules 里不必要的文件(如 .md、.eslintrc)以更快地部署 serverless 应用。 这是一个命令行工具,安装之后只需要运行一下 node-prune 就可以删除掉这些文件。
本身命令比较简单,因此没有使用到类似 https://github.com/urfave/cli 这种命令行第三方库,直接使用了内置的 flag 库来实现
同时支持 verbose flag 作为定位bug时的输出,同时支持 exclude 和 include option 来支持指定不包括和包括删除的文件(文件夹)
这个库的核心是一个 Prune 的 struct,
这 Prune 中定义了默认删除的文件、文件夹和文件后缀:
同时也定义了一堆用在初始化参数去修改这些默认的方法,最后将这些方法通过 New 方法去初始化 prune struct:
在开始遍历前根据 cpu 数量创建多个协程去消费 chan:
这里通过 sync.WaitGroup 来做子协程的等待。
遍历对应的文件夹(默认为 node_modules),同时将删除文件夹和文件的操作推入通道内,这样可以充分利用 go 的并发特性
对于这里的并发特性,使用一个项目进行测试,使用协程时花费的时间:
当去掉协程,同步去做删除操作的时候,耗时为:
很明显,使用协程的高并发性能确实提升了。
在对最后文件数量和 size 统计的时候使用了 https://github.com/dustin/go-humanize 这个库,这个库的作用就是把size、time、number 等变成人更加易读的表示
总体来说,整个库功能简单,代码量不多,是一个方便学习 go 制作 cli、go 协程、文件处理的一个库。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
node-prune 是 tj 大神用 go 写的用来删除 node_modules 里不必要的文件(如 .md、.eslintrc)以更快地部署 serverless 应用。
这是一个命令行工具,安装之后只需要运行一下 node-prune 就可以删除掉这些文件。
本身命令比较简单,因此没有使用到类似 https://github.com/urfave/cli 这种命令行第三方库,直接使用了内置的 flag 库来实现
同时支持 verbose flag 作为定位bug时的输出,同时支持 exclude 和 include option 来支持指定不包括和包括删除的文件(文件夹)
这个库的核心是一个 Prune 的 struct,
这 Prune 中定义了默认删除的文件、文件夹和文件后缀:
同时也定义了一堆用在初始化参数去修改这些默认的方法,最后将这些方法通过 New 方法去初始化 prune struct:
在开始遍历前根据 cpu 数量创建多个协程去消费 chan:
这里通过 sync.WaitGroup 来做子协程的等待。
遍历对应的文件夹(默认为 node_modules),同时将删除文件夹和文件的操作推入通道内,这样可以充分利用 go 的并发特性
对于这里的并发特性,使用一个项目进行测试,使用协程时花费的时间:
当去掉协程,同步去做删除操作的时候,耗时为:
很明显,使用协程的高并发性能确实提升了。
在对最后文件数量和 size 统计的时候使用了 https://github.com/dustin/go-humanize 这个库,这个库的作用就是把size、time、number 等变成人更加易读的表示
总体来说,整个库功能简单,代码量不多,是一个方便学习 go 制作 cli、go 协程、文件处理的一个库。
The text was updated successfully, but these errors were encountered: