我们有一个私有的JFrog工件(下面匿名的名称),npm是在项目根目录中配置的。npmrc-文件:
registry=https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/
开发者之间通过Git共享的package-lock.json文件中的解析字段在运行“npm安装”之间不断变化,而不会对package.json.进行任何更改
有时会将dl查询参数(指向完全相同的URL)添加到解析的URL中:
- "resolved": "https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/@sailshq/lodash/-/lodash-3.10.3.tgz",
+ "resolved": "https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/@sailshq/lodash/-/lodash-3.10.3.tgz?dl=https://artifactory.jfrog.private.com/@sailshq/lodash/-/lodash-3.10.3.tgz",
有时,查询参数指向NPMJ。组织注册处:
- "resolved": "https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/aproba/-/aproba-1.2.0.tgz",
- "resolved": "https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/aproba/-/aproba-1.2.0.tgz?dl=https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
有时字段直接指向npmjs.org存储库:
- "resolved": "https://artifactory.jfrog.private.com:443/api/npm/npm-registry-virtual/acorn/-/acorn-3.3.0.tgz",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
这些变化中的任何一个也可能走向相反的方向。
这真是令人恼火,因为这意味着我们在包锁中不断地进行无意义的更改。json,这会导致合并冲突,并经常阻止npm ci正确执行。npm缓存清理——强制似乎没有帮助。我知道npm安装可以解决包锁问题。json合并会自动发生冲突,但这对npm ci没有帮助(因为关键是不要在ci环境中运行npm安装)。而且,不管怎样,看到虚拟npm注册表如何在内部解析包有什么好处(我怀疑这里正在发生这种情况)?
是否有某种配置选项可以防止JFrog Artifactory对虚拟npm注册表中解析的包URL进行此类更改?或者它可能是npm中的一个bug?
环境:
这种事情通常是由开发人员安装了稍微不同版本的npm引起的。npm的版本7刚刚发布,所以现在是确保团队都安装了完全相同的版本的最佳时机。
如果这不起作用,尝试将团队切换到纱线或pnpm。
我们的团队成功地首先运行了npm ci
,以确保我们本地下拉和缓存的依赖项与package-lock.json
文件匹配。
然后,进一步的npm安装
s应按预期解决。
我不知道为什么会出现这些备选URL,也不知道如何让它们停止。但是你可以减少(甚至消除!)通过使用npm合并驱动程序
,为开发人员带来了合并冲突的痛苦。它是由一位受雇于NPMCLI团队多年的开发人员编写的,其唯一目的是自动化包锁。json
合并冲突。
问题内容: 通常,在建立团队的过程中,我遇到了合并冲突,而我的快速解决方案一直是删除文件并使用重新生成文件。我没有认真考虑此修复程序的含义,因为它以前没有引起任何可察觉的问题。 删除文件并以这种方式重新创建而不是手动解决冲突是否存在问题? 问题答案: 是的,它可能并且将以非常糟糕的方式影响所有项目。 如果您的团队在每次使用后都没有运行,则你们都使用不同的依赖项版本。因此,其结尾为“但对我有用!!”
我错过了什么?如何让npm真正尊重我的锁文件?
问题内容: 我最近才升级到 npm @ 5 。我现在有一个 package-lock.json 文件,其中包含 package.json中的 所有内容。我希望当我运行该程序时,将从锁定文件中提取依赖项版本,以确定应该在我的 node_modules 目录中安装什么。奇怪的是,它实际上最终修改并重写了 package-lock.json 文件。 例如,锁定文件的打字稿指定为版本 2.1.6 。然后,
有没有办法检查一个文件是否与兼容,而不运行?兼容意味着指定的版本可以通过来实现。 当前方法 我目前正在通过运行并检查是否更改为: 用例 我想在持续集成中添加一个测试,以确保如果开发人员修改了,他们也会相应地更新。这一点很重要的原因是我们的持续集成使用了,而不是仅引用,因此如果开发人员不更新锁文件,持续集成设置将与他们期望的不匹配。
我正在使用google cloud build来构建我的maven项目,并使用JFrog antifactory registry来存储maven工件。云中构建需要这些工件。我尝试了几部纪录片[1],[2]。但有时会出现很多错误。我可以带上最新的指南来集成云构建和JFrog antifactory吗。正确的身份验证方法需要使用用户名密码以外的其他方法。可以使用API密钥方法。 [1].https:
我试图建立一个使用firebase数据库和存储的社交媒体应用程序。下面是预期的流量。 > 用户上传存储在当前用户文件夹中的firebase存储中的个人资料图片和存储在firebase数据库中的URL以便快速访问。(很好) 用户发表他们的想法。这样可以在数据库中保存用户信息,如邮件、用户名和配置文件图像URL。(很好)。 现在的问题是,如果一个用户更新了他或她的个人资料图片,这将覆盖firebase