Elixir修改Hex镜像源及相关配置

在 Elixir 项目中,我们通过运行 mix deps.get 获取依赖,如果使用默认的国外镜像源,下载依赖时可能会遇到网络问题。我们可以通过下面的命令查看自己的 Hex 镜像源:

> mix hex.config mirror_url
"https://hexpm.upyun.com"

这里我已经配置成国内镜像源了。

要修改 Hex 镜像源,既可以通过 mix hex.config 命令,也可以通过命令行配置。

> mix hex.config mirror_url https://hexpm.upyun.com

环境变量是 HEX_MIRROR 。其实在 Phoenix入门篇 的“修改镜像源”一节我也介绍了如何配置 Elixir 的镜像源。

除了 mirror_url ,Hex 还有许多其他配置,我们可以通过 mix hex.config 来查看:

> mix hex.config
api_key: nil (default)
api_url: "https://hex.pm/api" (default)
cacerts_path: nil (default)
cache_home: "c:/Users/kaka/.hex" (default)
config_home: "c:/Users/kaka/.hex" (default)
data_home: "c:/Users/kaka/.hex" (default)
debug_solver: false (default)
diff_command: "git diff --no-index __PATH1__ __PATH2__" (default)
http_concurrency: 8 (default)
http_proxy: nil (default)
http_timeout: nil (default)
https_proxy: nil (default)
mirror_url: "https://hexpm.upyun.com" (using `HEX_MIRROR`)
no_proxy: nil (default)
no_short_urls: false (default)
no_verify_repo_origin: false (default)
offline: false (default)
repos_key: nil (default)
resolve_verbose: false (default)
trusted_mirror_url: nil (default)
unsafe_https: false (default)
unsafe_registry: false (default)

以上是 Hex 2.0.6 版本的配置。

Hex配置

  • api_key - 访问仓库的API密钥。如果已认证,此配置会覆盖用于认证用户的API密钥。可以通过环境变量 HEX_API_KEY 来覆盖。
  • api_url - Hex API URL。可以通过环境变量 HEX_API_URL 来覆盖(默认:"https://hex.pm/api"),这个URL会返回一些 json 格式的配置,如下:
    {
        "documentation_url": "http://docs.hexpm.apiary.io",
        "key_url": "https://hex.pm/api/keys/{name}",
        "keys_url": "https://hex.pm/api/keys",
        "package_owners_url": "https://hex.pm/api/packages/{name}/owners",
        "package_release_url": "https://hex.pm/api/packages/{name}/releases/{version}",
        "package_url": "https://hex.pm/api/packages/{name}",
        "packages_url": "https://hex.pm/api/packages"
    }
    
  • offline - 如果设置为 true,Hex将优先使用本地缓存的包(如果可用)。可以通过环境变量 HEX_OFFLINE 来覆盖(默认:false)。
  • unsafe_https - 如果设置为 true,Hex将不会验证HTTPS证书。可以通过环境变量 HEX_UNSAFE_HTTPS 来覆盖(默认:false)。
  • unsafe_registry - 如果设置为 true,Hex将不会验证仓库签名与存储库公钥是否匹配。可以通过环境变量 HEX_UNSAFE_REGISTRY 来覆盖(默认:false)。
  • no_verify_repo_origin - 如果设置为 true,Hex将不会验证仓库源。可以通过环境变量 HEX_NO_VERIFY_REPO_ORIGIN 来覆盖(默认:false)。
  • http_proxy - HTTP代理。可以通过环境变量 HTTP_PROXY 来覆盖。
  • https_proxy - HTTPS代理。可以通过环境变量 HTTPS_PROXY 来覆盖。
  • no_proxy - 不使用代理的域名名列表,用逗号分隔,支持使用星号作为通配符。可以通过环境变量 no_proxyNO_PROXY 来覆盖。
  • http_concurrency - 限制HTTP请求的并发数量。可以通过环境变量 HEX_HTTP_CONCURRENCY 来覆盖(默认:8)。
  • http_timeout - 设置HTTP请求的超时时间(秒)。可以通过环境变量 HEX_HTTP_TIMEOUT 来覆盖。
  • mirror_url - Hex镜像源地址。可以通过环境变量 HEX_MIRROR 来覆盖。
  • trusted_mirror_url - Hex镜像源地址。与 mirror_url 不同,这个镜像源是“受信任的”,会发送认证信息等敏感信息到镜像源。可以通过环境变量 HEX_TRUSTED_MIRROR 来覆盖。
  • cacerts_path - CA证书中PEM的文件的路径。如果没有设置,将使用Hex自带的CA证书。可以通过环境变量 HEX_CACERTS_PATH 来覆盖。
  • no_short_urls - 如果设置为 true,Hex将不会使用短链接。可以通过设置环境变量 HEX_NO_SHORT_URLS 来覆盖(默认:false)。

注意官方文档上说 mirror_url 对应的环境变量是 HEX_TRUSTED_MIRROR,其实是笔误,写错了,正确的应该是 HEX_MIRROR

Hex还支持下面这些额外的环境变量:

  • HEX_HOME - Hex存储缓存和配置的目录(默认:~/.hex
  • MIX_XDG - 要求Hex遵循XDG目录规范来设置其主目录和配置文件。HEX_HOME 的优先级高于 MIX_XDG。如果这些变量都没有设置,将使用默认目录 ~/.hex

配置优先级

以上Hex配置部分的所有配置都可以被覆盖。

Hex在计算给定键的值时使用以下优先级顺序:

  1. 系统环境变量
    例如 HEX_API_URL 环境变量对于 api_url 配置键总是具有最高优先级。
  2. 项目配置
    Hex允许在 mix.exs 文件中针对每个项目进行配置。例如,要覆盖 api_url 配置,添加以下内容:
    # mix.exs
    defmodule MyApp.MixProject
      def project() do
        [
          # ...
          deps: deps(),
          hex: hex()
        ]
      end
      defp hex() do
        [
          api_url: "https://hex.myorg/api"
        ]
      end
    end
    
  3. 使用 mix hex.config KEY VALUE 的全局配置
  4. 默认值

hex.config命令

列出所有配置:

> mix hex.config

获取 KEY 对应的配置:

> mix hex.config KEY

删除 KEY 对应的配置:

> mix hex.config KEY --delete

设置配置:

> mix hex.config KEY VALUE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值