查看源代码 Mix.Release (Mix v1.16.2)

定义发布结构和用于组装发布的便捷方法。

概要

函数

Mix.Release 结构具有以下只读字段

将给定应用程序规范复制到发布中。

source 处的 ebin 目录复制到 target,同时尊重发布选项,例如 :strip_beams

如果发布配置为这样做,则复制 ERTS。

将 cookie 复制到给定路径。

使用 ERTS 版本和发布版本制作 start_erl.data 文件。

查找发布的模板路径。

为发布剥离 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。
链接到此函数

copy_app(release, app)

查看源代码
@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

使用 ERTS 版本和发布版本制作 start_erl.data 文件。

链接到此函数

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 结构。

如果有配置提供者,则会将一个值注入 sys_config 中的 :elixir 应用程序配置中,以便在引导期间读取并触发提供者。

它使用以下发布选项来自定义其行为

  • :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 文件。

这将保留虚拟机运行所需的重要部分,丢弃文档、调试信息、编译信息等。

保留的确切部分没有记录,并且可能会在未来版本中更改。