在现代 Yarn 中为选定主机使用不同的代理
当一个软件包源需要与默认不同的中间代理时,使用现代 Yarn 的按主机网络设置。
一个通用代理未必适合所有软件包源。现代 Yarn 支持按主机名配置网络设置,让选定的主机可以使用与默认不同的路由。
例如,项目可以保留一条通用路由,并为内部仓库选择另一条路由:
httpsProxy: "http://203.0.113.10:8080"
networkSettings:
"registry.example.internal":
httpsProxy: "http://203.0.113.20:8080"
这两个地址都是占位符。对于通往公共软件包源的通用路由,在允许使用公共代理的情况下,HTTP 代理列表可以提供候选。内部仓库的覆盖设置应继续使用其已批准的代理。请把配置写入适用于现代 Yarn 版本的 .yarnrc.yml 中。这个例子选择了两个代理;它并没有说内部主机应当直连。
匹配请求的主机名
networkSettings 条目作用于主机名模式,而不是软件包作用域或任意 URL 路径。如果你想要的是单主机规则,就把它写得精确。只有当你确实希望额外的主机共享该配置时,通配符才有用。
软件包作用域和网络主机名是不同的选择器。带作用域的软件包可以从一个与其他软件包共享主机的仓库获取,而被重定向的构件可能来自完全不同的主机名。
跟踪完整的下载路径
如果元数据使用一个主机,而归档下载使用另一个主机,它们可能匹配到不同的网络设置。在扩大规则范围之前,先记录真正失败的 URL。“仓库能用”并不能说明后续请求选择了哪条路由。
Yarn 的按主机设置还可以包含 CA 和其他 TLS 配置。请把这些决定分开:选择代理地址本身并不提供审查环境所需的信任。
让覆盖设置可见
使用该 Yarn 版本支持的工具检查项目的实际生效配置,然后测试预期的请求。如果完整配置转储包含凭据,就避免分享它。
当各主机确实需要不同路由时,这个功能很有用。如果每个请求都应使用同一个端点,那么单一通用设置比不断增长的一串相同主机名覆盖更易于维护。