我在Github Enterprise上有一个Lerna monorepo,目前有两个npm软件包,我正尝试将它们发布到同一仓库下的Github软件包注册表中。
作为引用,它们是:
我遵循以下指示:https://help.github.com/en/github/managing-packages-with-github-packages/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to-the-same-repository
因此,现在我的2个package.json文件如下所示(出于格式化目的而进行了修剪):
"name": "@mycompany/package-a",
"repository": {
"url": "ssh://git@github.com:mycompany/monorepo.git"
},
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
},
"name": "@mycompany/package-b",
"repository": {
"url": "ssh://git@github.com:mycompany/monorepo.git"
},
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
},
因此,您会注意到,它们两者都具有与建议的存储库相同的URL。
第一个问题:一个问题是我公司已经有名为
package-a
和package-b
的存储库。看来您不可能与monorepo中的软件包和monorepo外部的软件包发生命名冲突。¹第二个也是更重要的问题:这似乎根本不适合我。我在各自的
package.json
文件中重命名了该包,以避免我实际上不想做的package-a-mono
和package-b-mono
的命名冲突,但我只是想使其正常工作。当尝试在存储库本身中运行lerna publish
或npm publish
时,我得到404。就像它实际上并没有试图读取repository.url
字段那样,因为它告诉您进行修改。^事实证明这只是暂时的,或者根本不是一个问题,这仅仅是因为命名冲突。
npm发布输出:
npm ERR! code E404
npm ERR! 404 Not Found - PUT https://npm.pkg.github.com/@mycompany%2fpackage-a - The expected resource was not found.
lerna发布输出:
lerna http fetch PUT 404 https://npm.pkg.github.com/mycompany/@mycompany%2fpackage-a 327ms
lerna ERR! E404 The expected resource was not found.
有没有人遇到这个问题并找到解决方案?
¹更糟糕的是,由于某种原因,我第一次运行此程序时,实际上确实将一个软件包发布到了
package-a
的monorepo中。但是从那以后,我得到了错误lerna ERR! E422 Package "package-a" is already associated with another repository.
,什么都没有改变,所以我无法将另一个版本发布到相同的仓库中。
最佳答案
导致此错误的另一个可能原因(在原始问题正文中进行了讨论和排除)是,如果任何软件包的package.json
的存储库字段与存储库的git URL不匹配-例如,如果您将存储库转移到另一个组织,或者重命名了仓库,但没有使用新的URL更新每个软件包的package.json
。
即使问题出在存储库URL上,该错误消息也将在https://npm.pkg.github.com/@org/package-name
上报告404。
(贷给jonas-reif's comment)
关于github - 发布Monthrepo的Github软件包作为组织的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59618719/