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.
3 Réponses :
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).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.yarn add @GITHUB_USERNAME/PACKAGE_NAME
ou l'équivalent npm.registry=https://registry.yarnpkg.com/
pour le fil ou registry=https://registry.npmjs.org/
pour npmJ'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.
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?
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.
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:
@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
.
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
.
Votez sur cette proposition pour atténuer la confusion des tags.