本文建议在项目中添加配置.npmrc,将范围与私有注册表关联起来,以降低 npm 替换攻击的风险(有人可能会故意发布同名的恶意公共包)。
如何在 Yarn 2 项目中实现类似的效果?我尝试.yarnrc.yml在项目根目录中添加一个文件:
npmScopes:
someScope:
npmRegistryServer: https://npm.pkg.github.com
Run Code Online (Sandbox Code Playgroud)
~/.yarnrc.yml我们还为每个开发人员提供了一个具有类似配置的主目录,但还具有适当的npmAuthToken身份验证功能。
但是,当我执行 a 时yarn install,我收到Invalid authentication (as an anonymous user)该范围内的包的错误。据推测,特定于项目的.yarnrc.yml设置会覆盖每个用户的设置~/.yarnrc.yml,因此身份验证信息不再存在?
我所寻求的缓解措施是,如果开发人员忘记运行yarn npm login,那么它不会检查公共注册表中特定范围内的包。在 Yarn 2 中有办法做到这一点吗?
对于上下文:我在我的 React 应用程序中遇到了一个问题(使用npm+ Create React App + TypeScript),应用程序中似乎有多个 React 副本。这是基于React 文档中给出的诊断片段,您可以在其中进行测试window.React1 === window.React2。
这个问题并不要求解决这个问题(我将单独调查)。相反,我想知道拥有库的副本意味着什么。它最终如何作为 CRA 生成的大捆绑脚本的一部分传递到浏览器,以及当我import React from 'react'在源代码中编写时选择哪个副本?重复的库是如何发生的,为什么npm允许这种情况发生?
答案可能是,“去了解 JS 包管理和捆绑是如何工作的”,这可能非常合理,但如果有人有任何具体的答案并指向更多学习资源,我将非常感激。TIA。