查看源代码 库指南

本文档概述了为其他开发人员编写和发布 Elixir 库的一般指南。

入门

您可以通过运行 mix new 命令来创建一个新的 Elixir 库

$ mix new my_library

项目名称使用 snake_case 约定,所有字母都小写,单词之间用下划线分隔。这与 Elixir 中变量、函数名和原子使用的约定相同。有关更多信息,请参见 命名约定 文档。

每个项目都有一个 mix.exs 文件,其中包含有关如何构建、编译、运行测试等的说明。库通常具有一个 lib 目录,其中包含 Elixir 源代码,以及一个 test 目录。一个 src 目录也可能存在于 Erlang 源代码中。

有关运行项目的更多信息,请参阅官方 Mix & OTP 指南Mix 文档

具有监督树的应用程序

The mix new 命令还允许使用 --sup 选项来构建一个带有监督树的应用程序。我们将在后面讨论编写库时的常见反模式之一时讨论监督树。

发布

编写代码只是发布软件包的众多步骤中的第一步。我们强烈建议开发人员

  • 选择版本控制方案。Elixir 要求版本为 MAJOR.MINOR.PATCH 格式,但这些数字的含义由您决定。大多数项目选择 语义版本控制

  • 选择一个 许可证。Elixir 社区中最常见的许可证是 MIT 许可证Apache 许可证 2.0。后者也是 Elixir 本身使用的许可证。

  • 运行 代码格式化程序。代码格式化程序会根据您的库和整个社区共享的统一风格格式化您的代码,使其他开发人员更容易理解您的代码并进行贡献。

  • 编写测试。Elixir 附带一个名为 ExUnit 的测试框架。由 mix new 生成的项目包含示例测试和文档测试。

  • 编写文档。Elixir 社区很自豪地将文档视为一等公民,并使文档易于访问。库通过为其模块、类型和函数提供完整的 API 文档以及示例来为现状做出贡献。有关更多信息,请参阅入门指南中的 编写文档 章节。像 ExDoc 这样的项目可以用来从文档中生成 HTML 和 EPUB 文档。ExDoc 还支持“额外页面”,例如您正在阅读的此页面。此类页面使用教程、指南、参考和甚至备忘单来补充文档。

  • 遵循最佳实践。Elixir 项目记录了 一系列反模式,您可能希望在代码中避免这些反模式。对于库作者来说,与进程相关的反模式元编程反模式 尤其要注意。

项目通常通过 发布 Hex 包 使其他开发人员可以使用。Hex 还 支持组织的私有包。如果 ExDoc 为 Mix 项目配置,则在 Hex 上发布一个包还会自动将生成的文档发布到 HexDocs

依赖项处理

当您的库被发布并用作依赖项时,它的 锁文件(通常名为 mix.lock会被主机项目忽略。在主机项目中运行 mix deps.get 会尝试获取您的库依赖项的最新可能版本,如您的 mix.exsdeps 部分中的要求所指定。这些版本可能大于存储在您的 mix.lock 中的版本(因此在您的测试/CI 中使用)。

另一方面,您的库的贡献者需要一个确定性的构建,这意味着在您的版本控制系统 (VCS) 中存在 mix.lock

因此,处理 mix.lock 文件的最佳做法是在 VCS 中保留它,并运行两个不同的持续集成 (CI) 工作流程:一个通常的确定性工作流程,以及另一个工作流程,该工作流程以 mix deps.unlock --all 开始,并且始终编译您的库并针对最新版本的依赖项运行测试。后者甚至可能在夜间或其他周期性地运行,以便在依赖项更新方面遇到任何问题时通知您。