我在Github Enterprise上有一个Lerna monorepo,目前有两个npm软件包,我正尝试将它们发布到同一仓库下的Github软件包注册表中。
作为参考,他们是:
- github.com/mycompany/package-a
- github.com/mycompany/package-b
所以现在我的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",
因此,您会注意到它们的存储库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.
,但没有任何变化,因此我无法将另一个版本发布到相同的仓库中。