对于本周的实验室,我现在要发布 GENEREADME。
欢迎为 GENEREADME 做出贡献!请查看 CONTRIBUTING.md 以获取有关设置环境、如何运行和测试该工具以及提交更改的指南。
GENEREADME 是一个命令行工具,它接收文件、处理它并生成一个 README 文件,其中包含文件内容的解释或文档。该工具利用 OpenAI 聊天完成来分析文件并生成内容。
通过运行以下命令安装该工具:
npm i -g genereadme
该工具目前支持 Groq 和 OpenRouter,默认使用 Groq。必须提供相应提供商的有效 API 密钥。
通过创建 .env 文件或在使用命令时通过 -a 或 --api-key 标志来提供有效的 API 密钥:
API_KEY=API_KEY or genereadme <files> -a API_KEY genereadme <files> --api-key API_KEY
使用现有示例文件运行该工具或开始使用您自己的:
发布工具本身一点也不麻烦,但是,我必须采取一些额外的步骤来确保正确发布。
在关注发布过程之前,我花了一些时间研究将包发布到 npm 注册表的最佳实践和步骤。这是我学到的:
1。如何将包发布到 npm
为了了解基本流程,我参考了 npm 官方文档。本指南概述了基本步骤,包括设置 package.json、运行 npm 发布和管理版本。
2。使用语义版本控制
版本控制在向用户发出变更信号方面发挥着至关重要的作用。我研究了语义版本控制的原理,它使用 MAJOR.MINOR.PATCH 格式来描述重大更改、新功能和错误修复。这确保了我的工具每个版本都有一个有意义的版本号。
3。管理 .npmignore
我研究了如何有效地使用 .npmignore 文件来确保我的 npm 包仅包含最终用户必需的文件。通过仔细创建此文件,我能够排除已发布的包中不需要的特定于开发的文件,例如配置文件、测试和文档。这不仅减小了软件包的大小,而且通过只关注用户运行该工具实际需要的内容,使其更加专业。正确管理 .npmignore 是准备完善版本的关键步骤。
完成研究后,我仔细检查了所有要求、任何可能的错误以及任何失败的测试。
在我看来一切顺利后,我继续通过运行来发布包:
npm i -g genereadme
注意:运行此命令将要求用户通过运行以下命令登录其 npm 帐户:
API_KEY=API_KEY or genereadme <files> -a API_KEY genereadme <files> --api-key API_KEY
现在我已经发布了 GENEREADME v1.0.0,是时候请一些最终用户测试该包是否有效。
正如预期的那样,有一些错误得以解决。一种不会影响工具的性能,另一种会真正破坏工具的性能。
发现的简单错误与使用命令genereadme -v有关。此命令应打印工具的名称和当前版本。但是,我编码这部分的方式是从当前目录中的 package.json 中检索项目名称和版本。这意味着,如果最终用户运行此命令,它将显示 THEIR 项目的名称和版本,而不是我的。因此,这是一个简单的修复,只需确保它始终从正确的项目中检索它。
现在这是一个错误,破坏了在我的本地测试中技术上有效的工具,但我忘记了一个简单的测试用例。
项目的文件夹结构只考虑了开发人员和贡献者,因此项目中应该有输出文件夹,我也将其推送到包含输出示例结果的主存储库。
现在,我必须记住,对于最终用户来说,它会略有不同。
以前,代码编写为仅写入outputs/目录,而不检查其是否存在,如果不存在则创建一个。这导致对已发布包的手动测试失败,因为最终用户没有outputs/目录,如果它不存在,该工具将失败而不是创建一个。
有了这个发现,我觉得很简单吧?
直到我尝试推动更改,心想“好吧,问题解决了!”但令我惊讶的是,我的 CI 失败了!
罪魁祸首:
npm i -g genereadme
这就是我检查和创建outputs/目录的方式。然而,在我的端到端测试中,我嘲笑 fs.existsSync() 返回 false 值,原因如下:
API_KEY=API_KEY or genereadme <files> -a API_KEY genereadme <files> --api-key API_KEY
这个函数检查使用 fs.existsSync() 的 toml 配置文件,我不想使用 toml 配置文件进行端到端测试,我模拟这个方法返回 false,现在是与我所做的错误修复相冲突。
我还没有掌握模拟,也没有找到在不同条件下为同一方法制作不同模拟值的方法。因此,在我了解该过程之前,我进行了临时修复,以确保在每个测试用例之前删除outputs/目录。
npm publish
我制作的重要补丁到此结束! GENEREADME 现已可供使用!
以上是发布 GENEREADME的详细内容。更多信息请关注PHP中文网其他相关文章!