本文在 草梅友仁的博客 发布和更新,并在多个平台同步发布。如有更新,以博客上的版本为准。您也可以通过文末的
原文链接查看最新版本。
前言
欢迎来到草梅周报!这是一个由草梅友仁基于 AI 整理的周报,旨在为您提供最新的博客更新、GitHub 动态、个人动态和其他周刊文章推荐等内容。
本周给 草梅 Auth 和 cmyr-template-cli 添加了测试覆盖率报告,可以更加清晰的衡量项目中测试覆盖的情况。


虽然说测试覆盖率高其实并不能说明项目的测试用例就写的完备了,但也能在一定程度上显示项目的代码质量是否合格。
以这次重构的 cmyr-template-cli 为例。
在添加测试用例的同时,也对项目进行了一次重构。
主要是进行了代码的拆分,以避免单文件过大。
而在这之前,核心逻辑都在一个文件里,可超过 2000 行。

而现在经过拆分后,单个文件行数都在 500 行以下,初步达到要求。
最后,对拆分出来的函数编写测试用例,测试用例就直接放在原文件边上,这样也方便查看测试用例和被测函数的具体内容。

在本地执行 npm run test 之后就可查看测试情况。

在本地执行 npm run coverage 之后就是生成测试报告,可以查看测试覆盖率。
cmyr-template-cli 是 61%,算是勉强达到了及格线。

之后,就是将报告上传到 Codecov ,就可以在页面上看到覆盖率情况了。
当然,还可以在 GitHub Action 中添加 codecov-action,以实现自动上报。
yml
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
with:
token: ${\{ secrets.CODECOV_TOKEN }}
在这次重构 cmyr-template-cli 的过程中,自然也是使用了 AI。
而提示词方面则参考了《我用 AI 重构了一段 500 行的屎山代码,这是我的 Prompt 和思考过程》 。
应该说效果不错。
提示词改动后如下:
你是一个资深的 TypeScript 架构师。请分析下面这段代码。
告诉我它做了几件主要的事情?(职责分析) 找出所有的副作用。 找出所有的纯逻辑。 评价它的可维护性和可测试性。
非常好。现在,请你只针对纯逻辑部分进行重构。
把这些逻辑,从原函数中提取出来,变成独立的、可导出的纯函数。 这些函数必须是纯的:不能有任何副作用。 使用 TypeScript,为这些新函数的入参和返回值,提供清晰的类型定义。
你现在是一个 QA 工程师。请使用 Vitest,为你刚才提取的函数,编写全面的单元测试用例。 必须覆盖所有边界情况,包括正常、异常、和边缘值。
干得漂亮。现在,我们来重构那个原始的函数/文件。
它现在唯一的职责是协调。 调用我们刚才创建的纯函数。 把所有的副作用清晰地编排起来。 使用 async/await,让异步流程更清晰,用 try/catch 处理错误。
重构的目的还是为了更好的组织代码,而纯函数相比带副作用的函数,会更好编写测试用例。
因此,在重构的时候要优先考虑提取出纯函数逻辑,再编写副作用函数,这样一来无论是代码结构上,还是测试上都会更加友好。
后续,对 草梅 Auth 、RSS Impact 等项目也会做类似重构,以减少"屎山"代码。
对 cmyr-template-cli 的重构不能说完全满意,但考虑到这项目之前就是个"屎山"代码,所以从结果来说也还算不错。
近期研究了下 Tauri,这是一个基于 JavaScript 和 Rust 的跨平台开发框架。

不仅支持 Linux、macOS、Windows 等桌面端,也支持 Android 和 iOS 等手机端。

除此之外,考虑到 Tauri 还支持使用 Next.js 和 Nuxt 等全栈框架作为前端,因此用同一套代码开发出 Web 端也不是难事。
目前笔者已经在 tauri-template 中跑通了 Linux、macOS、Windows、Android 等环境的下的构建,如果有希望了解项目结构的,可以参考一下。
当然了,跨平台也不是没有代价的,从技术选型中看出,Tauri 并没有走原生开发那一套,而是选择了内嵌 webview ,通过前端技术来构建 UI。
这一点跟 uni-app 存在类似的问题
虽然说节约了原生开发的时间,但论性能的话,是比不上原生开发的(比如 Swift 和 Kotlin ),所以不适用于需要高性能 UI 的项目。
所以,如果项目真的很在意性能的话,那就选择原生开发;而如果需要跨平台,以及节约开发时间的话,Tauri 一定是个不错的选择。
GitHub Release
cmyr-template-cli
v1.42.0 - 2025-11-15 20:20:31
摘要: 版本 1.42.0 摘要:
新功能:
- 重构核心模块结构
- 重构 GitHub 和 Docker 初始化功能,包含工作流和依赖管理
Bug 修复:
- 更新获取 npm 包版本的逻辑,支持提取语义版本号
代码重构:
- 重构工具函数结构
- 重构 git 相关功能和测试用例
- 重构 README.md 和贡献指南初始化逻辑,提取公共模板渲染函数
最新 GitHub 加星仓库
- CaoMeiYouRen starred dmca - 2025-11-15 16:46:08 GitHub 存储库收录收到的 DMCA 删除通知文本。GitHub 不认可或采纳这些通知中的任何主张。通知中提及的用户在被证实有罪前均视为无辜。更多关于 DMCA 政策的信息可在 GitHub 官网查询。该存储库主要使用 DIGITAL Command 语言,获得 5868 个星标。
- CaoMeiYouRen starred blivechat - 2025-11-10 20:23:56 这是一个用于 OBS 软件的 JavaScript 插件,能够模拟 YouTube 风格的评论栏显示 bilibili 直播平台的观众互动内容。该项目在 GitHub 上获得了 2525 个星标,表明其受欢迎程度较高。该工具主要面向使用 OBS 进行 bilibili 直播的主播,帮助他们以 YouTube 的界面风格展示观众评论。
其他博客或周刊推荐
阮一峰的网络日志
- 科技爱好者周刊(第 373 期):数据模型是新产品的核心 - 2025-11-14 08:06:44
- 国产大模型接入 Claude Code 教程:以 Doubao-Seed-Code 为例 - 2025-11-11 15:30:25
阿猫的博客
- Docker 服务器磁盘满排查思路 - 2025-11-11 16:43:23
潮流周刊
- 第 244 期 - 飞机飞过 - 2025-11-10 08:00:00
二丫讲梵的学习周刊
- 学习周刊-总第 237 期-2025 年第 46 周 - 2025-11-13 22:05:23
总结
本周的更新和动态如上所示。感谢您的阅读! 您可以通过以下方式订阅草梅周报的更新:
往期回顾
- 草梅 Auth 1.11.0 发布与 GitHub 依赖安全更新 | 2025 年第 45 周草梅周报 - 2025-11-09 23:19:22
- RSS Impact 1.17.0 发布与 Docker 服务器迁移经验 | 2025 年第 44 周草梅周报 - 2025-11-02 19:03:26
- Npm 安全更新与千星沙箱 | 2025 年第 43 周草梅周报 - 2025-10-26 21:10:36
本文作者:草梅友仁
本文地址:blog.cmyr.ltd/archives/20...
版权声明:本文采用 CC BY-NC-SA 4.0 协议 进行分发,转载请注明出处!