2026/7/5

第四个工具:问候语生成器的设计与发布

我做了一个很轻量的 hello 小工具:输入称呼和场景,生成中文或英文问候语,并完整走通 Web、Windows、GitHub Release 和博客平台发布。

第四个工具:问候语生成器的设计与发布

这次的小工具很小,名字也很直接:hello。

如果只看功能,它只是一个问候语生成器。输入称呼、场景、语言和语气,就能得到一段可以复制、收藏或导出的问候文本。但我仍然把它当成一个正式工具来做,因为它可以验证一件很重要的事:我的小工具发布链路能不能快速、稳定地跑完。

项目目录是:

D:\dev\yuan-tools\yuan-hello

中文名称是:

问候语生成器

为什么做这么小的工具

做小工具最容易出现一个问题:总想一次做得很大。

但真正长期做下去,流程本身比单个工具的复杂度更重要。一个简单工具也应该具备完整交付能力:

  • 有清晰的中文界面。
  • 有 Web 在线版。
  • 有 Windows 桌面版。
  • 有用户说明文档。
  • 有 GitHub 仓库。
  • 有版本 tag 和 GitHub Release。
  • 能接入主站在线使用页面。
  • 能形成一篇真实的开发记录文章。

所以这次我故意选择一个很轻的题目,用它来测试从开发到发布的完整链路。

功能范围

第一版没有接入 AI,而是使用固定模板生成问候语。这样能保持工具轻、快、离线可用,也不会引入额外成本。

v0.1.0 包含:

  • 中文和英文两种语言。
  • 温暖、正式、简短、轻松四种语气。
  • 称呼和场景输入。
  • 结果实时生成。
  • 复制到剪贴板。
  • 收藏本次生成结果。
  • 导出 TXT 文本文件。

这个范围不大,但已经是一个可用工具,而不是一个空白 demo。

实现方式

技术栈仍然沿用当前的小工具标准:

flowchart LR
  A["Svelte + TypeScript"] --> B["Web 静态版"]
  A --> C["Tauri Windows 桌面版"]
  D["核心问候语逻辑"] --> A
  B --> E["Yuan Tools 在线使用页面"]
  C --> F["GitHub Release 下载"]

核心逻辑放在:

src/lib/core/greetings.ts

界面放在:

src/App.svelte

发布产物放在:

release/html
release/win

这次遇到的问题

这次有两个小问题值得记录。

第一个是 Tauri 打包时缺少 src-tauri/icons/icon.ico。没有图标文件时,Windows 资源文件生成会失败。最后补上图标后,EXE 正常生成。

第二个是浏览器烟测发现页面空白。构建本身是通过的,但真实打开页面后没有渲染内容。原因是入口文件用了旧的 new App(...) 写法,而当前项目使用 Svelte 5,需要改成 mount(App, ...)

这个问题再次说明:构建通过不等于工具可用。每个工具发布前都需要真实打开一次页面,看首屏是否渲染、按钮是否能点、核心流程是否能跑。

发布结果

仓库地址:

https://github.com/yuan0727/yuan-hello

Release 地址:

https://github.com/yuan0727/yuan-hello/releases/tag/v0.1.0

Release 资产包括:

  • yuan-hello-win-v0.1.0.exe
  • yuan-hello-web-v0.1.0.zip
  • yuan-hello-guide-v0.1.0.md

主站工具页面:

https://www.yuantools.com/tools/hello/

在线使用页面:

https://www.yuantools.com/apps/hello/

下一步

这个工具本身还有很多可扩展方向,比如增加更多模板、节日问候、客户沟通场景、批量生成等。

但对我现在的长期计划来说,它更重要的价值是:进一步验证了一个小工具从本地开发、桌面打包、GitHub Release 到主站上线的完整流程。这个流程越稳定,我后面做更多工具时就越轻松。