7

本文建议.npmrc在您的项目中添加配置以将作用域与私有注册表相关联,以降低 npm 替换攻击的风险(其中有人可能故意发布具有相同名称的恶意公共包)。

我们如何在 Yarn 2 项目中实现类似的效果?我尝试.yarnrc.yml在我的项目根目录中添加一个文件:

npmScopes:
  someScope:
    npmRegistryServer: https://npm.pkg.github.com

我们还~/.yarnrc.yml为每个具有类似配置的开发人员提供了一个主目录,但另外还有一个适当npmAuthToken的身份验证。

但是,当我执行 a 时,该范围内的包yarn install会出现Invalid authentication (as an anonymous user)错误。大概项目特定.yarnrc.yml覆盖了 per-user 的设置~/.yarnrc.yml,所以身份验证信息不再存在?

我所寻求的缓解措施是,如果开发人员忘记运行yarn npm login,那么它不会检查公共注册表中特定范围内的包。有没有办法在 Yarn 2 中做到这一点?

4

1 回答 1

0

我只是有同样的问题。问题是您必须定义每个部分的身份验证(如本问题评论中指出的那样)。这也适用于npmRegistries.

npmScopes:
  someScope:
    npmRegistryServer: <your-registry-server>
    npmAuthToken: <your-token>
    npmAlwaysAuth: true

请注意,分层定义中的重复配置.yarnrc.yml不会被合并而是被替换(请参阅此评论)。因此,如果npmScopes已经在主目录中声明,它会被项目中的声明覆盖。

于 2021-11-25T09:44:18.417 回答