9
votes

L'installation d'un package privé à partir du registre de packages Github échoue avec introuvable / non autorisé

J'ai créé et publié un package Github privé. En essayant de l'installer avec du fil au début, je suis confronté au problème suivant:

Que j'essaye avec yarn ou npm, il ne trouve pas du tout le package bien que suivant les étapes exactes documentées par Github ( https://help.github.com/en/github/managing-packages-with-github-package-registry/ configuration-npm-à-utiliser-avec-le-registre-de-paquet-github ).

Mon .yarnrc :

registry "https://npm.pkg.github.com/OWNER"

Avec yarn, il essaie en permanence de rechercher le package sur https://registry.yarnpkg.com/@GITHUB_USERNAME au lieu du registre que j'ai entré ci-dessus.

Remarque: dans .yarnrc registres doivent être ajoutés en suivant une syntaxe légèrement différente:

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

Jusqu'à présent, j'ai commencé à jouer avec un mélange de configurations .npmrc et .yarnrc mais pas de chance.

-

EDIT (partiellement résolu)

J'ai compris comment accéder au package, à la fois en utilisant npm ou - dans mon cas - yarn. Maintenant, je suis confronté au problème d'une erreur Request failed \"401 Unauthorized\" , bien que j'aie ajouté les informations d'identification au-dessus de .yarnrc :

//npm.pkg.github.com/:_authToken=AUTH_TOKEN

Faire la même chose dans .npmrc ne fonctionne pas non plus.


1 commentaires

Votez sur cette proposition pour atténuer la confusion des tags.


3 Réponses :


21
votes

J'ai trouvé la solution qui n'est malheureusement pas bien documentée, mais un mélange de différentes ressources - et c'est assez simple.

Que vous utilisiez npm ou yarn, ayez simplement le .npmrc suivant en place (yarn inclura également ceci):

registry=https://registry.yarnpkg.com/

@GITHUB_USERNAME:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=AUTH_TOKEN
always-auth=true

Certains commentaires:

  • always-auth est nécessaire, au moins lors de l'utilisation de yarn (pas testé avec npm)
  • L'ajout de ce qui précède dans le .yarnrc place ne fonctionne pas. D'une manière ou d'une autre, le fil a des problèmes lorsque l'authentification est nécessaire.
  • Vous pouvez désormais installer facilement vos packages privés avec yarn add @GITHUB_USERNAME/PACKAGE_NAME ou l'équivalent npm.
  • Incluez registry=https://registry.yarnpkg.com/ pour le fil ou registry=https://registry.npmjs.org/ pour npm

J'espère que cette solution fonctionne également dans votre cas. Sinon, faites-moi savoir quels problèmes vous rencontrez et je serai heureux de partager certaines des recherches sur ce sujet et où la solution pourrait se cacher.


1 commentaires

Merci, travaillé comme un charme. Sauf que je n'avais pas besoin de la partie always-auth . Peut-être que quelque chose a changé dans le fil depuis?



1
votes

Ce que vous devez faire est de spécifier où récupérer CHAQUE paquet, avec quelque chose comme ça dans votre .npmrc (je ne connais pas la syntaxe de yarn, mais cela fonctionne avec yarn quand il lit le .npmrc):

//registry.npmjs.org/:_authToken=<token-npm-read>
//npm.pkg.github.com/:_authToken=<token-github-package-read>
@foo:registry=https://npm.pkg.github.com
@far:registry=https://registry.npmjs.org

Et puis, Yarn recherchera @ foo / mypackage1 dans Github, où @ far / mypackage2 sera recherché dans npmjs. Le registre par défaut sera conservé pour les autres, quel que soit votre réglage.


0 commentaires

0
votes

J'ajoute une réponse ici car après une journée à essayer différentes variantes de solutions ici et ailleurs, j'ai trouvé que mon problème était autre chose.

Mon problème était que, bien que npm ne soit pas sensible à la casse en ce qui concerne les noms de paquet, le yarn est quand il s'agit d'authentification! 🤦⠀ â ™ ‚ï¸

Donc, en utilisant l'exemple de la solution acceptée ci-dessus:

registry=https://registry.yarnpkg.com/

@GITHUB_USERNAME:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=AUTH_TOKEN
always-auth=true

J'avais besoin de m'assurer de deux choses:

  1. @GITHUB_USERNAME doit correspondre à la casse que vous voyez sur github et au nom sous lequel le package a été publié. Par exemple, si votre nom d'utilisateur est Pickle-Rick, vous devez mettre @Pickle-Rick:registry=https://npm.pkg.github.com , pas @pickle-rick ou @Pickle-rick .

  2. Vous devez faire correspondre ce boîtier dans votre package.json ou dans votre commande yarn add - selon ce que vous utilisez. Par exemple:

    "@Pickle-Rick/schwifty": "^1.0.0" dans package.json ou yarn add @Pickle-Rick/schwifty .

J'ai trouvé cette solution en explorant les problèmes de github de yarn .


0 commentaires