Github EnterpriseにLerna monorepoがあり、現在2つのnpmパッケージがあり、同じリポジトリのGithubパッケージレジストリに公開しようとしています。
参考までに、次のように言ってください。
したがって、私の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.json
とpackage-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.
は発生せず、同じリポジトリに別のバージョンを公開できませんでした。
このエラーのもう1つの考えられる原因(元の質問の本文で説明および除外)は、パッケージのpackage.json
のリポジトリフィールドがリポジトリのgit URLと一致しない場合(たとえば、リポジトリを別の組織に転送した場合)です、またはリポジトリの名前を変更したが、すべてのパッケージのpackage.json
を新しいURLで更新しなかった。
問題がリポジトリのURLにある場合でも、エラーメッセージはhttps://npm.pkg.github.com/@org/package-name
で404を報告します。