首页PrettyClean

我为什么要使用 Tauri 构建 macOS 磁盘清理工具 PrettyClean

2022-10-09 by Andy

我是一名程序员,工作时使用的 MacBook Pro 磁盘只有 256 GB 。以往,我每年都花费数十美金购买 CleanMyMac 帮助我清理磁盘。直到有一天我想把系统升级到 12.x 的时候发现磁盘不够,导致不能升级。我使用 CleanMyMac 彻底清理了我的磁盘,但是空间还不够。经过分析,发现开发工具以及许多项目留下来的编译结果占用了大量的磁盘空间,当时我就写了一段 Shell 脚本做清理工作,结果回收了 30GB 的磁盘空间,系统也顺利升级了。

相对于大部分人来说这段 Shell 脚本不是很易用,因此我就想能不能开发一款软件来帮助我做到极致的垃圾清理。因此我就使用 Rust 编写了这款软件。

在编写软件之前,我列出了几个核心的功能以满足普通用户与开发者用户的清理需求:

为什么选择 Rust 作为开发语言?

PrettyClean 其实不仅仅只使用到了 Rust,我们的客户端界面是使用 TypeScript + React 来编写的。我认为对于开发工具缓存与代码编译缓存的清理不仅仅只体现在 macOS 系统上,使用 Linux 或 Windows 系统编程的开发人员也有同样的清理需求,因此跨平台是我首要考虑的。

另外一个方面就是希望能编译出二进制文件,这样用户可以直接使用 PrettyClean 而不需要单独地安装运行时。

其实在开发的过程中,我发现 Rust 作为生成力工具来说优点远远不止于此,例如 cargo 在处理依赖时并不需要像 Java 项目那样要在依赖管理上花费许多的精力来做依赖项的版本兼容。

为什么选择 Tauri 作为开发框架?

确定了主力开发语言,那么开发框架的选择范围就会小很多,更容易根据自己的情况作出一个好的选择。 经过一段时间的调研,基本上确定了两个技术框架,它们分别是:

这两个框架都是非常优秀的跨平台应用框架,最后我根据自己的实际情况选择了以 TypeScript + React 来构建 GUI 界面逻辑,使用 Rust 实现应用的后台核心逻辑。我之前有 Java Swing 的开发经验,那是一段糟糕的体验,目前我认为 HTML + JS 就是最好的界面开发模式了,所以我放弃了 iced, 而 Tauri 成为我最好的选择。

Tauri 采用的是多进程模式,一个应用被分为核心进程与 WebView 进程,这种模型给我们带来了几个额外的好处:

程序的健壮性与安全性是我认为应用首要考虑的问题,而 Tauri 很好地匹配了我的真实需求。

当然,这仅仅是 Tauri 的众多优点中的一小部分,例如我在开发过程中使用到它其他的特性来解决几个典型的问题:

以上,是我构建 PrettyClean 的主要原因,以及在使用 Rust 与 Tauri 过程中给我带来的一些不错的体验。