【问题标题】:Yarn with .npmrc and authentication带有 .npmrc 和身份验证的纱线
【发布时间】:2020-03-11 21:48:57
【问题描述】:

我遇到了一个不知道如何以最佳方式解决的问题。这里是:

我们最近开始使用私有 NPM 包,并试图弄清楚如何将我们的本地开发循环与 CI 和部署管道联系起来。

我已经查看并开始利用 NPM_TOKEN 变量。 在 CI 中,我们正在执行以下操作:

echo "//registry.yarnpkg.com/:_authToken=$NPM_TOKEN" >> ~/.npmrc

这很好用,但是在 Heroku 上部署期间,我们无法访问主页。所以为了让它在 Heroku 上工作,我们在项目目录中添加了一个 .npmrc 文件。这很有效,因为 npm 使用环境变量来填充它。

问题在于,在本地,所有 yarn 命令都因缺少变量而失败。 NPM 网站 (https://blog.npmjs.org/post/118393368555/deploying-with-npm-private-modules) 上的建议方法是将令牌添加到 .profile 中的环境中。这似乎不是最好的解决方案,因为该设置现在是全局的,并且应该保留在每个存储库中。

我在这里发现了一个使用 npm 的类似问题,但它似乎不适用于 yarn。 Using auth tokens in .npmrc 那里的评论还提到它不适用于 npm,并且没有提到 dotenv 文件的文档。

有没有更好的方法来解决这个问题?似乎是一个很久以前就应该解决的常见问题......

【问题讨论】:

  • 你用的是哪个版本的纱线

标签: node.js authentication npm yarnpkg


【解决方案1】:

今天使用 Azure Artifacts 遇到了这个问题。

按照他们的documented project setup,Azure DevOps 上的自动生成代码将<FEED_NAME> 中的@ 符号编码为%40,这导致yarn add artifacts_package_name 返回401 Unauthorized 错误:

# .npmrc doc example
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/
# .npmrc auto generated code on AzureDevOps
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<ORGANIZATION_NAME%40Local>/npm/registry/

问题已通过将所有出现的%40 替换为@ 来解决,例如:

//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<ORGANIZATION_NAME@Local>/npm/registry/

source

【讨论】:

    【解决方案2】:

    根据我的经验,这可能有点棘手。感觉您提供的资源应该提供最好的指导。我猜有一个 .yarnrc 文件也链接到 npmrc 文件。无论如何,我至少可以分享一个我在一个对我有用的项目中使用的设置:(这是来自一个较旧的项目,所以它可能不再相关。如果不是,请告诉我,我可以删除这个答案)

    .npmrc 文件:

    _auth = token
    registry = http://example.com
    ca = null
    email = email@example.com
    always-auth = true
    

    .yarnrc 文件:

    registry "http://example.com"
    

    【讨论】:

      猜你喜欢
      • 2019-04-05
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2020-11-11
      • 2021-12-20
      • 1970-01-01
      相关资源
      最近更新 更多