如何在纱线中指定本地注册表?

How to specify local registry in yarn?

我有一个本地的nexus服务器,我希望yarn在上线之前看一下,基本上prefer-offline

yarn install \
  --prefer-offline \
  --cache-folder C:\folder\yarn-cache \
  --preferred-cache-folder C:\folder\yarn-cache \
  --non-interactive \
  --no-lockfile \
  --registry http://server/repository/npm-group

Yarn 离线找不到依赖然后上线失败。不知道能不能解决。

  • 创建一个 npm(托管) 存储库以用作您的私有注册表。 我相信你已经做到了。
  • 创建一个 npm(代理) 指向您选择的外部存储库的存储库 (https://registry.yarnpkg.com or https://registry.npmjs.org/).
  • 创建一个 npm(组),将您的私有注册表放在第一位,将代理注册表放在第二位。
  • yarn 指向您的组存储库:yarn config set registry http://nexus.local/repository/npm-group/。如果您的 Nexus 配置需要,请验证 yarn:yarn login.

还要警惕 yarn 使用任何 npm 配置,你可能拥有自己的配置:https://github.com/yarnpkg/yarn/issues/4862

Yarn v2+ 更新:

Yarn v2+ 使用不同的配置密钥来更新 NPM 注册表,称为 npmRegistryServer(有关详细信息,请参阅其 Migration 页面):

yarn config set npmRegistryServer http://nexus.local/repository/npm-group/

您可以使用以下命令在 yarn 中设置不同的注册表:

yarn config set registry <url-to-your-registry>

通过键入以下命令验证是否已设置:

yarn config get registry

对于注册表中的一次性更改,您可以像这样使用变量 YARN_REGISTRY

YARN_REGISTRY="<url-to-your-registry>" yarn config get registry

YARN_REGISTRY="<url-to-your-registry>" yarn publish

注意!

如果您在 package.json 中定义 publishConfig.registry

  "publishConfig": {
    "registry": "https://registry.npmjs.org"
  },

它将仍然覆盖 注册表,即使 --registry 参数被提供给 yarn publish!

您可以使用 .yarnrc 文件并添加 registry "<your repo URL>" 参考 - yarnrc

另外不要忘记在更改注册表后重新生成 yarn.lock 文件。这是必要的,因为 yarn.lock 包含指向旧注册表的链接,并将尝试从该链接安装依赖项。