糸はプライベートGithub npmレジストリを見つけることができません


8

Githubプライベートnpmレジストリベータ版にサインアップし、その指示に従いました:https : //github.com/features/package-registry

npmでうまく動作しますが、糸を使用したいと思います。そして、npmは登録済みパッケージを見つけることに問題はありませんが、yarnはそれをまったく見つけることができません。

yarn add @omniphx/adminite-adminite-ui-components 出力:

yarn add v1.19.0
info No lockfile found.
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] 🔍  Resolving packages...
error Couldn't find package "@omniphx/adminite-ui-components" on the "npm" registry.
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

ヤーンを使ってプライベートレポについて読んだ後、トリックはヤーンがわずかに異なるrcフォーマットを持っているためだと思いました。残念ながら、それもうまくいかず、yarnはまだプライベートレジストリを見つけることができません。

.npmrc

registry=https://registry.npmjs.org
@omniphx:registry=https://npm.pkg.github.com/omniphx

.yarnrc

registry "https://registry.npmjs.org"
"@omniphx:registry" "https://npm.pkg.github.com/omniphx"

私のgithubトークンも設定されていることも確認しましたyarn config list

yarn config v1.19.0
info yarn config
{
  'version-tag-prefix': 'v',
  'version-git-tag': true,
  'version-commit-hooks': true,
  'version-git-sign': false,
  'version-git-message': 'v%s',
  'init-version': '1.0.0',
  'init-license': 'MIT',
  'save-prefix': '^',
  'bin-links': true,
  'ignore-scripts': false,
  'ignore-optional': false,
  registry: 'https://registry.npmjs.org',
  'strict-ssl': true,
  'user-agent': 'yarn/1.19.0 npm/? node/v12.11.1 darwin x64',
  email: 'mattjmitchener@gmail.com',
  lastUpdateCheck: 1570679687836,
  username: 'omniphx',
  '@omniphx:registry': 'https://npm.pkg.github.com/omniphx'
}
info npm config
{
  '//npm.pkg.github.com/:_authToken': 'fake12345',
  registry: 'https://registry.npmjs.org',
  '@omniphx:registry': 'https://npm.pkg.github.com/omniphx',
  python: '/usr/bin/python'
}

何か案が?


解決した

Changed "@myorg:registry" "https://npm.pkg.github.com/myorg"
To      "@myorg:registry" "https://npm.pkg.github.com"

この修正はあなたの場合に役立ちますか?stackoverflow.com/questions/58430182/...
peterevans

回答:


9

私はちょうど同じような状況に遭遇しました。それはyarn私の組織のプライベートパッケージのメインのYarnパッケージレジストリのみを探しているように見えました。.npmrcファイルを直接作成するためのGitHubのパッケージドキュメントの例.yarnrcを、アプリを使用するプロジェクトのファイルにコピーしました。形式が異なることを知りませんでした(.yarnrc以前にファイルを処理する必要がありませんでした)。

ただし、.yarnrcファイルを上記で説明した正しい形式(私がグーグルで見つけたもの)で更新するとyarn、プライベートパッケージが正常に見つかり、正しくインストールされました。

ヘッドアップとして、私のyarnバージョン:1.17.3

私が取った手順

  1. 新しいターミナルセッションを開始
  2. cd プロジェクトへ
  3. nvm use (使用する特定のノードバージョンがある場合)
  4. 正しくフォーマットされた.yarnrcファイルをプロジェクトに追加します。それがどのように見えるかは以下を参照してください。
  5. パッケージとバージョン範囲をpackage.json自分のプライベートパッケージに手動で追加する
  6. 走る npm login --registry=https://npm.pkg.github.com --scope=@MyOrg
    • スコープ/組織の落とし穴については、以下のメモを参照してください
  7. 走る yarn

それでうまくいきました。

.yarnrc

"@myorg:registry" "https://npm.pkg.github.com"

:組織/スコープ名の注意点については、以下を参照してください

その他の注意事項

上記のGHユーザー名/スコープを考えると、これには問題がないように見えますが、ここに来る他の誰にとっても、GHのドキュメントは、ユーザー名/組織名のマッピングに関して少しまばらですパッケージ名のスコープ。ここにあるこれらの小さな問題を覚えておいてください。

  • パッケージの名前は常に組織(またはユーザー名)をスコープとする必要があります
    • 例えば、 name: @johndturn/my-package
  • あなたの組織がそれで大文字を持っている場合は、のようにMyOrg、ちょうどあなたのパッケージの名前でそれらを交換package.json し、あなたの.yarnrc小文字で
    • 例えば、 name: @myorg/my-package
    • :で認証する場合npm login--scope=引数に大文字を残しました。
  • パッケージの名前は、リポジトリの名前と同じである必要はありません。
    • たとえば、というリポジトリのMyOrg/random-prefix.js-lib場合、プロジェクト自体のファイルに含めることができname: @myorg/js-libますpackage.json。その後、他のプロジェクトにインストールすると、次のようになり@myorg/js-lib: 1.0.0ます。

おかげで私も働いた。次に、それを私のCIに設定する方法を考え出します。CIはGithubアクションではなく、ジェンキンスで実行されます。
Dhwaneet Bhatt

@DhwaneetBhatt素晴らしい質問です。いくつかの前提がありますが、かなり簡単なはずです。パイプラインとを使用してJenkinsで実行している場合Jenkinsfile私の想定では、ビルド前のステップで上記のコマンド(などnpm login ...)をに追加するだけJenkinsfileです。これは、組織からパッケージをプルするための適切な権限を持つGitHub組織内のある種のユーザーでJenkinsが認証されていることも前提としています。とは言っても、私たちのJenkinsボックスにはまだ実装していませんが、いつ実装するかをお知らせします(説明した内容と異なる場合)。
ジョンT

2
返信いただきありがとうございます!私の問題は、の"@myorg:registry" "https://npm.pkg.github.com/myorg"代わりに私が持っていたものであるように見え"@myorg:registry" "https://npm.pkg.github.com"ます。その同じURLが私の中でうまく機能したのは奇妙です.npmrc
Matthew Mitchener

@MatthewMitchenerはあなたが最も簡単な答えを見つけたように見えます:で/myorg終わりをそのままにしておく.npmrcと、GitHub Package Registryは、yarnまたはnpmのいずれかで動作します。(別途必要はありません.yarnrc。)
medmunds

2

私はnpm / yarnの専門家ではないので、ここで何が起こっているのか誤解しているかもしれませんが、npmレジストリからのパッケージプロキシは、yarnでまだ機能しないと思います。それは関係がありますか?npmでパッケージプロキシがリリースされたとき、私はTwitterで毛糸を使って試してみたが機能しなかった人々のコメントを読んだことを覚えている。

ここにTwitterスレッドが見つかりました:https : //twitter.com/github/status/1171832034580451328

Yarnでは機能しません。レジストリのURLを変更するとすぐに、>パッケージが見つかりませんでした。


1

私が抱えていた問題は少し異なります。

ジョンが示唆したことを試した後、私はまだプライベートレジストリパッケージを追加することはできませんyarn(しかし完全にうまくいきますnpm

次に、2つのことを認識します。

GitHubパッケージの場合、npmどちらでも問題ありません

registry=https://npm.pkg.github.com/my-org

または

@my-org:registry=https://npm.pkg.github.com

ただしyarn、後者の構文のみを許可します。

Github Webサイトのドキュメントには、yarnユーザーに問題を引き起こす可能性がある最初の構文のみが表示されます。

もう1つはnpm login、プライベートレジストリに.yarnrcアクセスしても、プロジェクトでファイルを使用する場合、yarnは実際にnpm資格情報とそれを混合できないことです。環境によって動作が異なります。

ただし、yarn login+ .yarnrcまたはnpm login+を.npmrc使用することがベストプラクティスのようです(どちらの場合でも、yarnを使用してパッケージを管理できます)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.