【问题标题】:How does verdaccio work when you try to publish to a proxied packaged?当您尝试发布到代理打包时,verdaccio 是如何工作的?
【发布时间】:2021-12-07 06:04:16
【问题描述】:

从文档中并不清楚 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

【问题讨论】:

    标签: node.js npm verdaccio


    【解决方案1】:

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

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

    1. 询问已定义的上行链路(如果您的包访问中有代理:npmjs)并下载清单(如果存在),如果不存在则不会保留任何内容(跳转到第 3 步)
    2. 如果版本已经存在,将验证是否在该清单中(如果第 1 步是肯定的)。
    3. 如果存在,将返回409 http状态(http冲突)https://verdaccio.org/docs/best#override-public-packages

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

    这取自Juan Picado on GitHub 来自a discussion that I opened up

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-03
      • 2020-05-01
      • 2021-05-04
      • 1970-01-01
      • 2021-01-18
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多