檢視原始碼 函式庫指南
這份文件概述了為其他開發人員撰寫和發布 Elixir 函式庫的一般指南。
開始使用
你可以執行 mix new
指令來建立新的 Elixir 函式庫
$ mix new my_library
專案名稱採用 snake_case
慣例,其中所有字母均為小寫,字詞之間以底線分隔。這是 Elixir 中變數、函式名稱和原子的慣例。有關更多資訊,請參閱 命名慣例 文件。
每個專案都有 mix.exs
檔案,其中包含如何建置、編譯、執行測試等的說明。函式庫通常有 lib
目錄,其中包含 Elixir 原始碼,以及 test
目錄。Erlang 原始碼也可能存在 src
目錄。
有關執行專案的更多資訊,請參閱官方 Mix 和 OTP 指南 或 Mix 文件。
具有監督樹狀結構的應用程式
mix new
指令也允許使用 --sup
選項來建立具有監督樹狀結構的應用程式。我們稍後在討論撰寫函式庫時常見的反模式時,會談到監督樹狀結構。
發布
撰寫程式碼只是發布套件的許多步驟中的第一步。我們強烈建議開發人員
選擇版本控制架構。Elixir 要求版本格式為
MAJOR.MINOR.PATCH
,但這些數字的意義由你決定。大多數專案選擇 語意化版本控制。選擇 授權條款。Elixir 社群中最常見的授權條款為 MIT 授權條款 和 Apache 授權條款 2.0。後者也是 Elixir 本身使用的授權條款。
執行 程式碼格式化程式。程式碼格式化程式會根據你的程式庫和整個社群共用的固定樣式格式化你的程式碼,讓其他開發人員更容易了解你的程式碼並做出貢獻。
撰寫文件。Elixir 社群引以為傲的是將文件視為一級公民,並讓文件易於取得。程式庫透過提供模組、類型和函式的完整 API 文件,連同範例,為現狀做出貢獻。請參閱入門指南的 撰寫文件 章節以取得更多資訊。像 ExDoc 等專案可用於從文件產生 HTML 和 EPUB 文件。ExDoc 也支援「額外頁面」,例如你正在閱讀的這個頁面。這些頁面會以教學課程、指南、參考文件,甚至秘笈等內容擴充文件。
遵循最佳實務。Elixir 專案文件記載 一系列反模式,你可能希望在程式碼中避免這些反模式。與處理程序相關的反模式 和 元程式設計反模式 特別受到程式庫作者的關注。
專案通常透過 發布 Hex 套件 提供給其他開發人員。Hex 也 支援組織的私人套件。如果已為 Mix 專案設定 ExDoc,在 Hex 上發布套件也會自動將產生的文件發布到 HexDocs。
相依性處理
當你的函式庫發布並作為相依性使用時,其lockfile(通常命名為mix.lock
)會被主機專案忽略。在主機專案中執行mix deps.get
會嘗試取得函式庫相依性的最新可能版本,如mix.exs
中deps
區段的要求所指定。這些版本可能大於儲存在mix.lock
中(因此用於測試/CI)的版本。
另一方面,函式庫的貢獻者需要確定性的建置,這表示版本控制系統(VCS)中要有mix.lock
。
因此,處理mix.lock
檔案的最佳實務是將其保留在VCS中,並執行兩個不同的持續整合(CI)工作流程:一個是常見的確定性工作流程,另一個從mix deps.unlock --all
開始,並始終編譯函式庫並針對相依性的最新版本執行測試。後者甚至可以每晚或其他重複的方式執行,以隨時了解相依性更新的任何可能問題。