打包 Elixir CLI 应用程序的最佳方式是什么?

问题描述

假设我有一个带有子命令和参数(如 application foo --bar baz)的 CLI 应用程序。如何在不需要用户安装 Erlang 的情况下打包分发?

我知道有 mix escript Mix 任务,但它构建了一个需要安装 Erlang 的二进制文件,而且 Mix 参考指出 escripts 应该仅用于开发目的。 但是,mix release生成我不想在 dist 中看到的多余 shell 脚本。

那么,有没有办法让 Elixir CLI 应用程序独立分发?

P。 S. 这实际上是我第一次使用 Elixir(以及整个 Erlang 生态系统)

解决方法

Elixir 应用程序可以打包为 Erlang releases,另见 here。这些可以包括 Erlang VM。 Elixir 自 1.9 起支持构建版本而无需额外工具,使用包含的混合任务 mix release - 请查看文档以了解详细信息:https://hexdocs.pm/mix/Mix.Tasks.Release.html

您可能会受益于快速浏览这篇博文以获得灵感和概念概述,并注意到对于简单的 CLI 应用程序,它要简单得多:https://www.cogini.com/blog/best-practices-for-deploying-elixir-apps/

,

Bakeware 生成单个可执行文件。

他们添加了 CLI 应用示例 here