13

我在 Github Enterprise 上有一个 Lerna monorepo,它目前有两个 npm 包,我正试图将它们发布到同一个 repo 下的 Github 包注册表。

作为参考,它们是:

  • github.com/mycompany/package-a
  • github.com/mycompany/package-b

我按照以下说明操作:https ://help.github.com/en/github/managing-packages-with-github-packages/configuring-npm-for-use-with-github-packages#publishing-multiple-packages-to -相同的存储库

所以现在我的 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。

第一个问题:一个是我的公司已经有repos调用package-apackage-b. 似乎您不能与 monorepo 中的包和 monorepo 之外的包发生命名冲突。¹

第二个也是更重要的问题: 这似乎根本不适合我。我在他们各自的package.json文件中重命名了包以避免命名冲突package-a-monopackage-b-mono我真的不想这样做,但我只是想让它工作。尝试在存储库本身lerna publishnpm 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. 但从那时起,我收到错误lerna ERR! E422 Package "package-a" is already associated with another repository.Nothing changed,我无法将另一个版本发布到同一个repo。

4

3 回答 3

8

此错误的另一个可能原因(在原始问题正文中讨论并排除)是如果任何 package 的package.jsonrepository 字段与 repo 的 git URL 不匹配 - 例如,如果您将 repo 转移到不同的组织,或重命名repo,但没有package.json用新的 URL 更新每个包。

https://npm.pkg.github.com/@org/package-name即使问题出在存储库 URL上,错误消息也会报告 404 。

(归功于jonas-reif 的评论

于 2020-06-12T14:47:18.050 回答
4

我遇到了同样的问题,我必须生成一个具有更多权限的新个人访问令牌。只是read:packageswrite:packages不够,你还需要repo.

于 2020-01-27T15:39:50.057 回答
4

这里的问题是我们在组织中有与正在发布的包同名的 repos,它不喜欢这样。

当我回过头来解决这个问题时,我重命名了这些包,以免与组织中的另一个现有 repo 发生冲突,并且它按预期工作。

于 2020-04-07T17:37:50.773 回答