NPM 锁文件/shrinkwrap 获取附加到 "dl"URL 的随机 "resolved"参数

标签 npm artifactory lockfile npm-shrinkwrap

我们公司使用 Artifactory 存储库来存储内部发布的包并作为 NPM 注册表的代理。有时 resolved lockfiles/shrinkwrap 文件中的字段与预期的一样,包含我们内部存储库的 URL,但有时它们会显示为这样的内容(为清晰起见添加了换行符):

https://our.repository.com/artifactory/api/npm/some-repo/lodash/-/lodash-3.10.1.tgz
  ?dl=https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz

然后,从拉取请求到拉取请求,这些dl参数不断波动以显示或删除取决于哪个开发人员执行 npm install ,导致大量拉取请求和提交噪音。

我猜是 Artifactory 添加了这个 dl param,因为我在 npm 代码库中的代码搜索中没有看到它。

为什么会发生这种情况?我们可以禁用这种行为吗?将此参数剥离为 postshrinkwrap 是否安全?脚本解决方法?

最佳答案

我认为您问题的根源可能是缓存。

NPM 缓存已下载的包,因此不必再次下载它们,甚至可以在必要时离线重新安装。它还缓存解析的值以供以后使用。如果已经解析并下载了相同版本的包,则无需再次获取并获取更新的下载/解析URL。

您可以使用以下命令手动清除此缓存。

npm cache clean --force

或者,可能是不同版本的 NPM 计算已解析字段的方式不同(是否遵循 Location header )。但是我认为缓存更有可能受到指责。

关于NPM 锁文件/shrinkwrap 获取附加到 "dl"URL 的随机 "resolved"参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53127140/

相关文章:

gradle - Gradle cacheDynamicVersions对于无效

maven - 什么应该存储在 "plugins-release-local"和 "plugins-snapshot-local"存储库中

npm - Electron :与运行 Electron 生成器后相比,应用程序的图标分辨率下降

javascript - Node mustache 渲染服务器端

artifactory - 如何将 Nexus 迁移到 Artifactory?任何手动或自动化流程步骤?

c - Windows C Web服务器上的独占锁定文件

linux - 获取 shell 脚本的 pid 并将其保存到一个锁定文件中

macos - npm 全局路径前缀

node.js - 我们可以在node.js中使用process.hrtime()作为UUID吗?

C++ 锁定文件 Windows 阻塞模式