十六进制包管理
rebar3
包管理使用hex.pm,这是Erlang和Elixir包的包管理器。有关发布包的说明,请参见发布包教程。以下是hex
名称空间的每个子任务及其作用的条目。
配置
rebar3 hex <key> [<value>]
读取或更新十六进制配置文件。
Key | 描述 |
---|---|
username | 十六进制用户名 |
key | 十六进制 API key |
api_url | 十六进制 API 基本 URL |
cdn_url | 十六进制 CDN 基本 URL |
http_proxy | HTTP代理服务器 |
https_proxy | HTTPS代理服务器 |
cut
rebar3 hex cut [-i major|minor|patch]
递增版本号并发布程序包。
系统将询问您要对版本进行哪种类型的增量,或者可以将其作为命令的参数提供-i major|minor|patch
。
docs
rebar3 hex docs
发布当前项目和版本的文档。
该文档可从访问http://hexdocs.pm/my_package/1.0.0
,http://hexdocs.pm/my_package
始终将重定向到最新发布的版本。
将通过运行rebar3 hex docs
任务来生成文档,该任务将通过发布任务来生成文档rebar3 edoc
。docs
默认情况下提供此任务,但是可以使用任何库。或者可以使用别名来扩展文档的生成。该任务的预期结果是生成的文档位于文件中的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 帐户设置
包的元数据可以在应用程序的规范中找到,而相关性可以在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
文件:
{application, rebar3_hex,
[{description, "Hex.pm plugin for rebar3"}
,{vsn, "0.1.0"}
,{registered, []}
,{applications,
[kernel
,stdlib
,providers
,erlware_commons
,jsx
]}
,{env,[]}
,{modules, []}
,{licenses, ["MIT"]}
,{links, [{"Github", "https://github.com/tsloughter/rebar3_hex"}]}
]}.
例
对于示例,让我们看一下插件本身rebar3_hex,从rebar.config
开始:
{deps, [{erlware_commons, "0.12.0"}
,{ssl_verify_hostname, "1.0.4"}
,{jsx, "2.6.1"}
,{providers, "1.3.1"}
]}.
现在rebar3_hex.app.src
:
{application, rebar3_hex,
[{description, "Hex.pm plugin for rebar3"}
,{vsn, "0.1.0"}
,{registered, []}
,{applications,
[kernel
,stdlib
,providers
,erlware_commons
,jsx
]}
,{env,[]}
,{modules, []}
,{licenses, ["MIT"]}
,{links, [{"Github", "https://github.com/tsloughter/rebar3_hex"}]}
]}.
运行hex publish:
$ rebar3 hex publish
Publishing rebar3_hex 0.1.0
Dependencies:
providers 1.3.1
erlware_commons 0.12.0
ssl_verify_hostname 1.0.4
jsx 2.6.1
Excluded dependencies (not part of the Hex package):
Included files:
src/rebar3_hex.app.src
src/rebar3_hex.erl
src/rebar3_hex.hrl
src/rebar3_hex_cacerts.erl
src/rebar3_hex_config.erl
src/rebar3_hex_docs.erl
src/rebar3_hex_http.erl
src/rebar3_hex_info.erl
src/rebar3_hex_key.erl
src/rebar3_hex_owner.erl
src/rebar3_hex_pkg.erl
src/rebar3_hex_search.erl
src/rebar3_hex_tar.erl
src/rebar3_hex_user.erl
src/rebar3_hex_utils.erl
priv/ca-bundle.crt
rebar.config
README.md
LICENSE
Proceed? ("Y")> Y
===> Published rebar3_hex 0.1.0
最后,发布您的应用程序的文档:
$ rebar3 hex docs
===> Verifying dependencies...
===> Running edoc for rebar3_hex
===> Published docs for rebar3_hex 0.1.0