33

我们公司使用 Artifactory 存储库来存储内部发布的包并作为 NPM 注册表的代理。有时resolvedlockfiles/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参数,因为我在 npm 代码库的代码搜索中看不到它。

为什么会这样?我们可以禁用此行为吗?将这个参数作为postshrinkwrap脚本解决方法剥离是否安全?

4

1 回答 1

0

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

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

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

npm cache clean --force

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

于 2019-12-24T18:37:59.267 回答