-1

从文档中不清楚 Verdaccio 代理是什么。

@acme/foo如果我为Verdaccio设置代理并尝试发布@acme/foo,我该如何配置行为以及默认值是什么?有三种明显的可能性,但文档中没有涵盖它们,

  1. 发布被拒绝
  2. 发布被代理。
  3. 发布是在本地完成的,不会代理进一步的请求。

我更喜欢第三个选项,但是当我尝试发布到代理的包时,我在 npm 中得到了这个,

npm ERR! code EPUBLISHCONFLICT
npm ERR! publish fail Cannot publish over existing version.
npm ERR! publish fail Update the 'version' field in package.json and try again.
npm ERR! publish fail 
npm ERR! publish fail To automatically increment version numbers, see:
npm ERR! publish fail     npm help version

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/ecarroll/.npm/_logs/2021-11-11T18_45_39_813Z-debug.log
4

1 回答 1

0

发布发生在本地,但仅在本地 Verdaccio 服务器到达远程服务器并验证没有冲突版本之后。

当您尝试发布 package@version 并且定义了上行链接(默认为 npmjs)时,它将:

  1. 询问已定义的上行链路(如果您的包访问中有代理:npmjs)并下载清单(如果存在),如果不存在则不会保留任何内容(跳转到第 3 步)
  2. 如果版本已经存在,将验证是否在该清单中(如果步骤 1 是肯定的)。
  3. 如果存在,将返回 409 http status (http conflict) <--npmjs 将显示的是 EPUBLISHCONFLICT 如果不存在,将发布包。这里有更多信息:https ://verdaccio.org/docs/best#override-public-packages

简而言之,如果包访问部分有代理,它将始终仔细检查上行链路,并且不允许您有重复。

这是从我打开的讨论中摘自GitHub上的Juan Picado

于 2021-12-06T22:04:16.713 回答