檢視原始碼 Mix.Release (Mix v1.16.2)

定義發行結構和組裝發行版的便利性。

摘要

函式

Mix.Release 結構具有下列唯讀欄位

將指定的應用程式規格複製到發行版中。

source 的 ebin 目錄複製到 target,並尊重發行版選項,例如 :strip_beams

如果發行版已設定這麼做,則複製 ERTS。

將 cookie 複製到指定的路徑。

建立 start_erl.data 檔案,其中包含 ERTS 版本和發行版版本。

尋找發行版的範本路徑。

為發行版剝離 beam 檔案。

類型

@type application() :: atom()
@type mode() :: :permanent | :transient | :temporary | :load | :none
@type t() :: %Mix.Release{
  applications: %{required(application()) => keyword()},
  boot_scripts: %{required(atom()) => [{application(), mode()}]},
  config_providers: [{module(), term()}],
  erts_source: charlist() | nil,
  erts_version: charlist(),
  name: atom(),
  options: keyword(),
  overlays: [String.t()],
  path: String.t(),
  steps: [(t() -> t()) | :assemble, ...],
  version: String.t(),
  version_path: String.t()
}

函式

Mix.Release 結構具有下列唯讀欄位

  • :name - 發行版的名稱,為原子
  • :version - 發行版的版本,為字串
  • :path - 發行版根目錄的路徑
  • :version_path - 發行版內部發行版版本的目錄路徑
  • :applications - 應用程式的映射,其中包含其定義
  • :erts_source - ERTS 原始碼,為字元清單 (或 nil)
  • :erts_version - ERTS 版本,為字元清單

只要保持其定義的型別,以下欄位就可以修改

  • :boot_scripts - 啟動腳本的映射,其中啟動腳本名稱為鍵,而值為關鍵字清單,包含屬於該腳本的所有應用程式及其模式
  • :config_providers - {config_provider, term} 叢集的清單,其中第一個元素是實作 Config.Provider 行為的模組,而 term 是在 Config.Provider.init/1 中給予它的值
  • :options - 關鍵字清單,其中包含所有其他使用者提供的發行版選項
  • :overlays - 新增到發行版的額外檔案清單。如果您有自訂步驟會將額外檔案新增到發行版,您可以將這些檔案新增到 :overlays 欄位,以便在後續指令 (例如 tar/zip) 中也一併考量。overlays 中的每個項目都是每個檔案相對於發行版根目錄的相對路徑
  • :steps - 接收發行版並傳回發行版的函數清單。也必須包含原子 :assemble,這是內部組裝步驟。也可能包含原子 :tar,以建立發行版的 tarball。
@spec copy_app(t(), application()) :: boolean()

將指定的應用程式規格複製到發行版中。

它假設應用程式存在於發行版中。

連結到此函式

copy_ebin(release, source, target)

檢視原始碼
@spec copy_ebin(t(), Path.t(), Path.t()) :: boolean()

source 的 ebin 目錄複製到 target,並尊重發行版選項,例如 :strip_beams

@spec copy_erts(t()) :: boolean()

如果發行版已設定這麼做,則複製 ERTS。

如果發行版已複製,則傳回 true,否則傳回 false

連結到此函式

make_boot_script(release, path, modes, prepend_paths \\ [])

檢視原始碼
@spec make_boot_script(t(), Path.t(), [{application(), mode()}], [String.t()]) ::
  :ok | {:error, String.t()}

建立開機腳本。

它接收啟動檔案的路徑,不含副檔名,例如 releases/0.1.0/start,而此指令會將 start.relstart.bootstart.script 寫入指定的目錄路徑,傳回 {:ok, rel_path}{:error, message}

啟動腳本使用 RELEASE_LIB 環境變數,必須使用 --boot-var 適當地設定,並指向發行版 lib 目錄。

連結到此函式

make_cookie(release, path)

檢視原始碼
@spec make_cookie(t(), Path.t()) :: :ok

將 cookie 複製到指定的路徑。

如果提供了 cookie 選項,我們會將它與檔案內容 (如果有) 進行比較,並詢問使用者是否要覆寫。

如果沒有選項,我們會在第一次產生一個隨機的選項。

連結到此函式

make_start_erl(release, path)

檢視原始碼
@spec make_start_erl(t(), Path.t()) :: :ok

建立 start_erl.data 檔案,其中包含 ERTS 版本和發行版版本。

連結到此函式

make_sys_config(release, sys_config, config_provider_path)

檢視原始碼
@spec make_sys_config(t(), keyword(), Config.Provider.config_path()) ::
  :ok | {:error, String.t()}

建立 sys.config 結構。

如果存在組態提供者,則會在開機期間將一個值注入到 :elixir 應用程式組態中的 sys_config 中,並觸發提供者。

它使用以下發行選項自訂其行為

  • :reboot_system_after_config
  • :start_distribution_during_config
  • :prune_runtime_sys_config_after_boot

如果沒有組態提供者,它不會變更 sys_config

連結到此函式

rel_templates_path(release, path)

檢視原始碼
@spec rel_templates_path(t(), Path.t()) :: binary()

尋找發行版的範本路徑。

連結到此函式

strip_beam(binary, options \\ [])

檢視原始碼
@spec strip_beam(
  binary(),
  keyword()
) :: {:ok, binary()} | {:error, :beam_lib, term()}

為發行版剝離 beam 檔案。

這只會保留 VM 操作所需的重要區塊,捨棄文件、除錯資訊、編譯資訊和其他內容。

保留的確切區塊未記載,且可能會在未來版本中變更。