十六进制包管理

rebar3包管理使用hex.pm,这是Erlang和Elixir包的包管理器。有关发布包的说明,请参见发布包教程。以下是hex名称空间的每个子任务及其作用的条目。

配置

rebar3 hex <key> [<value>]

读取或更新十六进制配置文件。

Key描述
username十六进制用户名
key十六进制 API key
api_url十六进制 API 基本 URL
cdn_url十六进制 CDN 基本 URL
http_proxyHTTP代理服务器
https_proxyHTTPS代理服务器

cut

rebar3 hex cut [-i major|minor|patch]

递增版本号并发布程序包。

系统将询问您要对版本进行哪种类型的增量,或者可以将其作为命令的参数提供-i major|minor|patch

docs

rebar3 hex docs

发布当前项目和版本的文档。

该文档可从访问http://hexdocs.pm/my_package/1.0.0http://hexdocs.pm/my_package始终将重定向到最新发布的版本。

将通过运行rebar3 hex docs任务来生成文档,该任务将通过发布任务来生成文档rebar3 edocdocs默认情况下提供此任务,但是可以使用任何库。或者可以使用别名来扩展文档的生成。该任务的预期结果是生成的文档位于文件中的docs/目录中index.html

信息

rebar3 hex [<package> [<version>]]

打印十六进制软件包或系统信息。

如果package未给出,则打印系统信息。这包括注册表的最新更新时间和当前系统版本。

如果package给出,则打印有关包装的信息。这包括所有发行的版本和程序包元数据。

如果package和版本给出了打印发行信息。这包括远程Git URL和Git ref,以及所有软件包依赖项。

key

移除或列出与您的帐户关联的API keys。

移除 Key

从帐户中移除指定的API key。该密钥不能再用于验证API请求。

rebar3 hex key remove <key_name>

列出 Keys

列出与您的帐户关联的所有API keys。

rebar3 hex key list

发布

发布您的包的新版本并更新包。

rebar3 hex publish

如果它是要发布的新包,则将创建它,并且其中指定的用户username将是包拥有者。只有包拥有者可以发布。

拥有者

新增,移除或列出包拥有者。

一个包拥有者对包具有完全权限。它们可以发布和还原发行版,甚至移除其它软件包拥有者。

新增拥有者

指定新拥有者的包名和邮箱来添加一个包的拥有者

rebar3 hex owner add <package> <email>

移除拥有者

指定新拥有者的包名和邮箱来移除一个包的拥有者。

rebar3 hex owner remove <package> <email>

列出拥有者

列出指定包的所有拥有者。

rebar3 hex owner list

用户

十六进制用户任务。

注册新用户

rebar3 hex user register

打印当前用户

rebar3 hex user whoami

授权新用户

通过生成新的API密钥并将其存储在十六进制配置中来授权本地计算机上的新用户。

rebar3 hex user auth

取消授权用户

通过从十六进制配置中删除API密钥,从本地计算机取消对用户的授权。

rebar3 hex user deauth

重置用户密码

rebar3 hex user reset_password

搜索

指定search查询显示匹配的包。

rebar3 hex search

发布包

🚧Hex.pm 帐户设置

本教程假定您已按照说明进行设置并登录到hex.pm帐户。有关详细信息,请参见“十六进制包管理用户”小节。

包的元数据可以在应用程序的规范中找到,而相关性可以在rebar.config/中找到rebar.lock。

  • name:软件包名称是在您的.app.src或.app文件中找到的应用程序的名称。

  • version:使用或中的vsn条目。.app.src.app

  • description:使用或中的description条目。.app.src.app

  • requirements:作为包(十六进制)依赖项的0级锁定依赖项被用作要求。

可以提供的其他元数据.app.src包括:

  • licenses:适用于应用程序代码的许可证列表

  • links:与项目相关的链接的元组列表。

  • exclude_files:相对于项目根目录的文件路径列表,不应发布

示例.app.src文件:

  1. {application, rebar3_hex,
  2. [{description, "Hex.pm plugin for rebar3"}
  3. ,{vsn, "0.1.0"}
  4. ,{registered, []}
  5. ,{applications,
  6. [kernel
  7. ,stdlib
  8. ,providers
  9. ,erlware_commons
  10. ,jsx
  11. ]}
  12. ,{env,[]}
  13. ,{modules, []}
  14. ,{licenses, ["MIT"]}
  15. ,{links, [{"Github", "https://github.com/tsloughter/rebar3_hex"}]}
  16. ]}.

对于示例,让我们看一下插件本身rebar3_hex,从rebar.config开始:

  1. {deps, [{erlware_commons, "0.12.0"}
  2. ,{ssl_verify_hostname, "1.0.4"}
  3. ,{jsx, "2.6.1"}
  4. ,{providers, "1.3.1"}
  5. ]}.

现在rebar3_hex.app.src

  1. {application, rebar3_hex,
  2. [{description, "Hex.pm plugin for rebar3"}
  3. ,{vsn, "0.1.0"}
  4. ,{registered, []}
  5. ,{applications,
  6. [kernel
  7. ,stdlib
  8. ,providers
  9. ,erlware_commons
  10. ,jsx
  11. ]}
  12. ,{env,[]}
  13. ,{modules, []}
  14. ,{licenses, ["MIT"]}
  15. ,{links, [{"Github", "https://github.com/tsloughter/rebar3_hex"}]}
  16. ]}.

运行hex publish:

  1. $ rebar3 hex publish
  2. Publishing rebar3_hex 0.1.0
  3. Dependencies:
  4. providers 1.3.1
  5. erlware_commons 0.12.0
  6. ssl_verify_hostname 1.0.4
  7. jsx 2.6.1
  8. Excluded dependencies (not part of the Hex package):
  9. Included files:
  10. src/rebar3_hex.app.src
  11. src/rebar3_hex.erl
  12. src/rebar3_hex.hrl
  13. src/rebar3_hex_cacerts.erl
  14. src/rebar3_hex_config.erl
  15. src/rebar3_hex_docs.erl
  16. src/rebar3_hex_http.erl
  17. src/rebar3_hex_info.erl
  18. src/rebar3_hex_key.erl
  19. src/rebar3_hex_owner.erl
  20. src/rebar3_hex_pkg.erl
  21. src/rebar3_hex_search.erl
  22. src/rebar3_hex_tar.erl
  23. src/rebar3_hex_user.erl
  24. src/rebar3_hex_utils.erl
  25. priv/ca-bundle.crt
  26. rebar.config
  27. README.md
  28. LICENSE
  29. Proceed? ("Y")> Y
  30. ===> Published rebar3_hex 0.1.0

最后,发布您的应用程序的文档:

  1. $ rebar3 hex docs
  2. ===> Verifying dependencies...
  3. ===> Running edoc for rebar3_hex
  4. ===> Published docs for rebar3_hex 0.1.0