Yarn 3 - 如何将安装程序指向正确的注册表

Yarn 3 - How to point installer to correct registry

在我当前使用 NPM Enterprise 的项目(即具有内部 npm 注册表)中,我正在按照 migrate from Yarn Classic to Modern 的步骤进行操作。第 7 步说 运行 yarn install。这样做时,安装会失败,因为它正在 public 注册表中查找库:

➤ YN0035: │ AppolloReact@npm:^2.3.21: The remote server failed to provide the requested resource
➤ YN0035: │   Response Code: 404 (Not Found)
➤ YN0035: │   Request Method: GET
➤ YN0035: │   Request URL: https://registry.yarnpkg.com/AppolloReact

请求 URL 应该列出我们的内部注册表 https://npme.<name>.com。我通过 运行ning

检查 npm 是否具有正确的注册表
yarn config get registry

顺便说一句,Error Codes 部分没有列出 YN0035 错误代码,尽管我猜这意味着 http 错误。

有人有过将安装程序重定向到内部注册表的经验吗?

我很确定这目前行不通。我的调查让我找到了这个 issue thread,这几乎很有帮助。

线程中的所有建议都有效,假设您属于以下两类之一:

  1. 您的私有主机用于所有依赖项(即使有些只是镜像,在 public 情况下)
  2. 您正在使用范围内的依赖项,例如 (@Scope/AppolloReact)

使用 npmScopes 字段,在那里定义注册表,会让你成功一半。然后您需要 yarn login --scope @scope 并使用您的用户名,以及 API 密钥或密码。 (我使用的是 artifactory 并使用了绑定到我的 SSO 帐户的 API 密钥)。

一旦成功,将创建一个全局 yarnrc.yml,对我来说在 macOs 中是 ~/Users/<me>/.yarnrc.yml

这将有 npmAuthToken 字段,您可以复制该字段的值并将其放入项目的 yarnrc.yml

要求示波器似乎很奇怪,但这对我个人来说似乎是最大的障碍,如果我没看错你的问题,可能也是你自己的最大障碍。

对于 yarn modern,我了解到配置参数已重命名为 npmRegistryServer。所以对于 set/get,命令将是 yarn config set|get npmRegistryServer <url>