NPM锁定文件/收缩包装将随机的“ dl”参数附加到“已解析的” URL

时间:2018-11-02 23:57:18

标签: npm artifactory lockfile npm-shrinkwrap

我们公司使用Artifactory存储库来存储内部发布的软件包,并作为NPM注册中心的代理。有时,lockfiles / shrinkwrap文件中的resolved字段符合预期,包含我们内部存储库的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来出现或删除,从而导致很多拉取请求和提交噪音。 / p>

我猜是在Artifactory中添加了此dl参数,因为在npm代码库的代码搜索中看不到它。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

urls.py

或者,可能是NPM的不同版本计算解析字段的方式不同(是否遵循Location标头)。但是,我认为更可能归咎于缓存。