web-dev-qa-db-ja.com

組織の一部としてのモノレポのGithubパッケージの公開

Github EnterpriseにLerna monorepoがあり、現在2つのnpmパッケージがあり、同じリポジトリの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-the-same-repository

したがって、私の2つのpackage.jsonファイルは次のようになります(フォーマットのためにトリミングされています)。

"name": "@mycompany/package-a",
"repository": {
    "url": "ssh://[email protected]:mycompany/monorepo.git"
  },
  "publishConfig": {
    "registry": "https://npm.pkg.github.com/"
  },
"name": "@mycompany/package-b",
"repository": {
    "url": "ssh://[email protected]:mycompany/monorepo.git"
  },
  "publishConfig": {
    "registry": "https://npm.pkg.github.com/"
  },

そのため、推奨されるように、両方ともリポジトリのURLが同じであることがわかります。

最初の問題:1つは、私の会社がpackage-aおよびpackage-bと呼ばれるリポジトリをすでに持っていることです。モノレポ内のパッケージとモノレポ外のパッケージとの名前の衝突はあり得ないようです。¹

2番目およびより重要な問題: これは私にはまったくうまくいかないようです。 package.jsonpackage-a-monoへの名前の衝突を回避するために、それぞれのpackage-b-monoファイルでパッケージの名前を変更しました。 。リポジトリ内でlerna publishまたはnpm publishを実行しようとすると、404が表示されます。それは実際にそのrepository.urlフィールドを読み取ろうとしているわけではないので、変更するように指示します。

^これは一時的なものであることが判明したか、実際には問題にならないことがわかりました。これは、名前の競合が原因でした。

npm publish出力:

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.

誰かがこれに遭遇して解決策を見つけましたか?

somewhatやや悪いことに、何らかの理由により、これを初めて実行したときに、実際にpackage-aのmonorepoにパッケージを公開しました。しかし、それ以降、エラーlerna ERR! E422 Package "package-a" is already associated with another repository.は発生せず、同じリポジトリに別のバージョンを公開できませんでした。

5
MVarrieur

このエラーのもう1つの考えられる原因(元の質問の本文で説明および除外)は、パッケージのpackage.jsonのリポジトリフィールドがリポジトリのgit URLと一致しない場合(たとえば、リポジトリを別の組織に転送した場合)です、またはリポジトリの名前を変更したが、すべてのパッケージのpackage.jsonを新しいURLで更新しなかった。

問題がリポジトリのURLにある場合でも、エラーメッセージはhttps://npm.pkg.github.com/@org/package-nameで404を報告します。

jonas-reifのコメントへのクレジット