2017 年 6 月 16 日由 Lukas Spieß 发布
如今,Yarn 已支持各种不同的包信息源,以便获取和下载依赖项。到目前为止,还有一小部分 Yarn 尚不能很好地处理的公共和私有包信息源提供商。其中一个尚未支持的此类包信息源提供商是 Visual Studio Team Services (VSTS)。
来解释一下原因
注册表和包位置 URL 的差别
某些注册表(例如 VSTS)使用两个略有不同的 URL 结构来定位包信息源和定位实际包存档二进制文件本身。
例如,私有信息源的 URL 如下所示
// Package feed URL
https://$ACCOUNT_NAME.pkgs.visualstudio.com/_packaging/$FEED_NAME/npm/registry
但信息源将以这种格式返回用于获取实际 tar 存档的 URL
// Package archive URL
https://$ACCOUNT_NAME.pkgs.visualstudio.com/_packaging/da6e033f-20ad-4ee1-a784-8995dd6836b72/npm/registry/@scope/package-name/-/package-name-0.0.1.tgz
如您所见,存档的 URL 不再包含实际的信息源名称,而是一个随机 GUID,后跟包名称和版本。URL 的路径部分这种不一致的布局导致 Yarn 无法识别这两个 URL 实际上都属于对同一注册表的请求,因此会拒绝下载包。
推出自定义主机后缀
从 0.26.0
版本开始,Yarn 已了解一项称为 custom-host-suffix
的新配置选项。此选项让您可以针对大多数包 URL 保持相同的严格 URL 验证,但也可以选择性地放松特定注册表提供商的该项检查,以便 Yarn 现在可以匹配主机部分以新选项的值结尾的 URL。
只需将 custom-host-suffix
添加到全局用户级别的 .npmrc
或项目的各个 .npmrc
中,即可由 Yarn 根据需要下载包。在 Visual Studio Team Services 的上述示例中,.npmrc
应包含如下条目
custom-host-suffix='pkgs.visualstudio.com'
我们希望您发现此新选项很有用,并且很高兴 Yarn 现在可以用于更多项目!