Garn kann keine private Github npm-Registrierung finden


8

Ich habe mich für die Beta-Version der privaten npm-Registrierung von Github angemeldet und deren Anweisungen befolgt: https://github.com/features/package-registry

Funktioniert hervorragend mit npm, aber ich würde lieber Garn verwenden. Und während npm keine Probleme hat, das registrierte Paket zu finden, kann Garn es überhaupt nicht finden.

yarn add @omniphx/adminite-adminite-ui-components Ausgänge:

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.

Nachdem ich mich über private Repos mit Garn informiert hatte, dachte ich, der Trick liege daran, dass Garn ein etwas anderes RC-Format hat. Leider hat das auch nicht funktioniert und Garn kann die private Registrierung immer noch nicht finden.

.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"

Außerdem wurde bestätigt, dass mein Github-Token ebenfalls gesetzt ist mit 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'
}

Irgendeine Idee?


Aufgelöst

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

Hilft dieses Update in Ihrem Fall? stackoverflow.com/questions/58430182/…
peterevans

Antworten:


9

Ich bin gerade in eine ähnliche Situation geraten. Es schien, dass yarnnur in der Hauptregistrierung des Garnpakets nach dem privaten Paket meiner Organisation gesucht wurde. Ich hatte die Beispiele aus der GitHub-Paketdokumentation zum Erstellen Ihrer .npmrcDatei direkt in die .yarnrcDatei im Projekt kopiert, die die App verbraucht, ohne zu wissen, dass die Formate unterschiedlich waren (ich musste mich noch nie mit .yarnrcDateien befassen ).

Nachdem Sie die .yarnrcDatei jedoch mit dem oben erwähnten korrekten Format aktualisiert haben (das ich auch beim Googeln gefunden habe), haben yarnSie das private Paket erfolgreich gefunden und korrekt installiert.

Als Heads-Up meine yarnVersion: 1.17.3

Schritte, die ich unternommen habe

  1. Neue Terminalsitzung starten
  2. cd zum Projekt
  3. nvm use (wenn Sie eine bestimmte Knotenversion verwenden möchten)
  4. Fügen Sie .yarnrcdem Projekt die korrekt formatierte Datei hinzu. Unten sehen Sie, wie es aussieht.
  5. Fügen Sie das Paket und den Versionsbereich manuell package.jsonzu meinem privaten Paket hinzu
  6. Lauf npm login --registry=https://npm.pkg.github.com --scope=@MyOrg
    • Siehe den Hinweis unten zu scope / org gotcha's
  7. Lauf yarn

Das hat bei mir funktioniert.

.yarnrc

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

Hinweis : Im Folgenden finden Sie einen Hinweis zum Org / Scope-Namen gotcha's

Weitere Hinweise

Ich weiß, dass es den Anschein hat, dass Sie angesichts Ihres oben genannten GH-Benutzernamens / -Bereichs keine Probleme damit haben, aber für alle anderen, die hierher kommen, ist die Dokumentation zu GH in Bezug auf die Zuordnung Ihres Benutzernamens / Organisationsnamens etwas spärlich ein Bereich im Paketnamen. Denken Sie daran, diese kleinen Fallstricke hier:

  • Der Name Ihres Pakets muss immer auf Ihre Organisation (oder Ihren Benutzernamen) abgestimmt sein.
    • Z.B, name: @johndturn/my-package
  • Wenn Ihre Organisation Großbuchstaben enthält MyOrg, ersetzen Sie diese einfach im Namen des Pakets in Ihrer package.json und Ihrer .yarnrcdurch Kleinbuchstaben
    • Z.B, name: @myorg/my-package
    • Hinweis : Bei der Authentifizierung mit habe npm loginich die Großbuchstaben im --scope=Argument beibehalten .
  • Der Name Ihres Pakets muss nicht mit dem Namen des Repos übereinstimmen.
    • Beispielsweise können Sie für ein genanntes Repo eine Datei für das Projekt selbst in Ihrer Datei MyOrg/random-prefix.js-libhaben . Dann sieht die Installation in anderen Projekten ungefähr so ​​aus .name: @myorg/js-libpackage.json@myorg/js-lib: 1.0.0

Hat auch für mich gearbeitet, danke. Finden Sie jetzt heraus, wie Sie es in meinem CI einstellen können, das nicht auf Github-Aktionen, sondern auf Jenkins ausgeführt wird.
Dhwaneet Bhatt

@ DhwaneetBhatt große Frage, und es sollte ziemlich einfach sein, mit einigen Annahmen. Wenn Sie in Jenkins mit Pipelines und a ausgeführt werden Jenkinsfile, gehe ich davon aus, dass Sie die obigen Befehle (wie npm login ...) einfach Jenkinsfilein einem vorgefertigten Schritt zu Ihrem hinzufügen können . Dies setzt auch voraus, dass Sie Jenkins bei einem Benutzer in Ihrer GitHub-Organisation authentifiziert haben, der über die richtigen Berechtigungen zum Abrufen von Paketen aus Ihrer Organisation verfügt. Das heißt, ich habe es noch nicht für unsere Jenkins-Boxen implementiert, aber ich werde Sie wissen lassen, wann ich es tue (wenn es von dem abweicht, was ich erwähnt habe).
John T

2
Danke für die Antwort! Sieht so aus, als hätte ich "@myorg:registry" "https://npm.pkg.github.com/myorg"stattdessen ein Problem "@myorg:registry" "https://npm.pkg.github.com". Seltsam, dass dieselbe URL in meinem.npmrc
Matthew Mitchener

@MatthewMitchener sieht so aus, als hätten Sie die einfachste Antwort gefunden: Lassen /myorgSie das Ende einfach in Ihrem .npmrc, und dann funktioniert die GitHub-Paketregistrierung entweder mit Garn oder mit npm. (Ohne dass eine separate erforderlich ist .yarnrc.)
medmunds

2

Ich bin kein Experte für npm / Garn, daher verstehe ich möglicherweise falsch, was hier passiert, aber ich denke, dass das Proxy-Paket aus der npm-Registrierung noch nicht mit Garn funktioniert. Könnte das zusammenhängen? Als das Paket-Proxy für npm veröffentlicht wurde, erinnere ich mich, dass ich auf Twitter Kommentare von Leuten gelesen habe, die es mit Garn versucht haben und es nicht funktioniert hat.

Den Twitter-Thread finden Sie hier: https://twitter.com/github/status/1171832034580451328

Es funktioniert nicht mit Garn. Sobald ich die Registrierungs-URL ändere -> Paket konnte nicht gefunden werden.


1

Das Problem, das ich hatte, ist etwas anders.

Nachdem ich versucht habe, was John vorgeschlagen hat, kann ich immer noch keine privaten Registrierungspakete hinzufügen yarn(aber vollkommen in Ordnung mit npm)

Dann erkenne ich zwei Dinge:

Für GitHub-Pakete npmist beides in Ordnung

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

oder

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

aber yarnnur die letztere Syntax zulassen.

Dokumente von der Github-Website zeigen nur die erste Syntax, die für Garnbenutzer Probleme verursachen kann.

Eine andere Sache ist, dass wenn Sie npm loginzur privaten Registrierung gehen, aber eine .yarnrcDatei in Ihrem Projekt verwenden, Garn Ihre npmAnmeldeinformationen nicht wirklich damit mischen kann. Obwohl es scheint, sich in verschiedenen Umgebungen unterschiedlich zu verhalten.

Es scheint jedoch eine bewährte Methode zu sein, sich entweder an yarn login+ .yarnrcoder npm login+ zu halten .npmrc(in beiden Fällen können Sie weiterhin Garn verwenden, um Ihre Pakete zu verwalten).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.