Erlang 包可以通过 rebar3 Hex 插件发布。建议将条目放在全局 rebar3 配置中,该配置应设置为 ~/.config/rebar3/rebar.config
。
{plugins, [rebar3_hex]}.
将包发布到 Hex 包括注册 Hex 用户、将元数据添加到项目的 .app.src
文件,最后使用 rebar3
提供程序提交包。
注册用户时,系统会提示您输入用户名、电子邮件和密码。电子邮件用于在注册期间确认您的身份,以及在您的包出现问题时与您联系。电子邮件绝不会与第三方共享。
$ rebar3 hex user register
Username: johndoe
Email: [email protected]
Password:
Password (confirm):
Registering...
Generating API key...
You are required to confirm your email to access your account, a confirmation email has been sent to [email protected]
完成此步骤后,请查看您的电子邮件收件箱以获取确认邮件。在您点击邮件中的链接后,您的帐户就可以使用了。
在发布之前,您需要选择包的名称。请记住,发布到 Hex 的包是公开的,社区中的任何人都可以访问。选择和鼓励良好的包名称也是社区的责任。以下是一些提示
rebar3_plugin
(或 rebar3_somename
),而不是 plugin
(或 somename
)。有了名称后,就可以将适当的元数据添加到您的 <myapp>.app.src
文件中。
src/<myapp>.app.src
包在 src/<myapp>.app.src
文件中进行配置。 见下文 以获取示例文件。应用程序的依赖项位于 rebar.config
中, 见下文。
首先,确保 vsn
属性正确。所有 Hex 包都需要遵循 语义化版本控制。 vsn
和应用程序名称是唯一的必填属性。在您的包版本处于主要版本“0”时,任何重大更改都应通过增加次要版本来表示。例如,0.1.0 -> 0.2.0
。
然后填写 description
属性。它应该是一句话或几句话来描述包。 description
是可选的,但强烈建议填写。
您还可以将以下任何内容添加到应用程序属性列表中
licenses
pkg_name
links
files
include_paths
exclude_paths
exclude_patterns
build_tools
没有 SCM(git
或 hg
)定义的依赖项将自动被视为 Hex 依赖项。有关更多详细信息,请参阅 使用指南。
包的依赖项只能使用 Hex 包。无法上传具有 Git 依赖项的包。此外,仅包含 default
依赖项,就像 rebar3 在获取依赖项的依赖项时只获取 default
依赖项一样。
{deps, [{erlware_commons, "0.15.0"},
{providers, "1.4.1"},
{getopt, "0.8.2"},
{bbmustache, "1.0.3"}
]}.
{application, relx,
[{description, "Release assembler for Erlang/OTP Releases"},
{vsn, "3.5.0"},
{modules, []},
{registered, []},
{applications, [kernel,
stdlib,
getopt,
erlware_commons,
bbmustache,
providers]},
{licenses, ["Apache-2.0"]},
{links, [{"GitHub", "https://github.com/erlware/relx"}]}]}.
rebar3_hex 默认情况下会期望您配置一个文档提供程序。我们建议使用 rebar3_ex_doc 在 hex.pm 上发布您的包的文档,以便获得一致的格式和样式。
{ex_doc, [
{source_url, <<"https://github.com/namespace/your_app">>},
{extras, [<<"README.md">>, <<"LICENSE">>]},
{main, <<"readme">>}
]}.
{hex, [{doc, ex_doc}]}.
或者,或者在低于 OTP-24 的 Erlang 版本上,您可以使用 rebar3 附带的 edoc 提供程序
{hex, [{doc, edoc}]}.
将包元数据和依赖项添加到 src/<myapp>.app.src
后,我们就可以使用 rebar3 hex publish
命令发布包了
$ rebar3 hex publish
Publishing relx 3.5.0
Dependencies:
bbmustache 1.0.3
erlware_commons 0.15.0
getopt 0.8.2
providers 1.4.1
Excluded dependencies (not part of the Hex package):
Included files:
src/relx.app.src
src/relx.erl
src/rlx_app_discovery.erl
src/rlx_app_info.erl
src/rlx_cmd_args.erl
src/...
include/relx.hrl
priv/...
rebar.config
rebar.lock
README.md
LICENSE.md
Proceed? ("Y") Y
Published relx 3.5.0
Running edoc for relx
Running ex_doc for relx
Published docs for relx 3.5.0
恭喜,您已发布您的包!它将出现在 https://hex.org.cn 网站上,并将作为 rebar3 或 mix 项目中的依赖项可用。
发布后,请通过将其作为依赖项添加到 rebar3 项目并获取和编译它来测试您的包。如果出现任何问题,您可以在首次发布后的一小时内再次发布包。也可以使用 rebar3 hex revert NAME VERSION
撤销发布。
运行发布包的命令时,Hex 将创建 files
属性中列出的所有文件和目录的 tar 文件。将 tarball 推送到 Hex 服务器后,它将上传到 CDN,以便用户快速可靠地访问。Hex 还将重新编译所有客户端将在获取依赖项时自动更新的注册表文件。
rebar3 hex 插件文档 包含有关 hex 插件本身和发布包的更多信息。