Cette question est liée à ceux-ci. Mais aucune des solutions n'a fonctionné pour moi.
Je peux installer un package sans problème avec npm install @scope/package
mais je ne peux pas faire la même chose avec yarn: yarn add @scope/package
yarn renvoie l'erreur suivante: An unexpected error occurred: "https://npm.pkg.github.com/download/@scope/package/1.2.8/089b08cffb16074c210ec3a59b04de268ae1c7b3a0492dce110adee3ada05bdd: Request failed \"401 Unauthorized\"".
mon fichier .npmrc ressemble à ceci: (essayé avec et sans ci-dessous .yarnrc)
registry=https://registry.yarnpkg.com/ @scope:registry=https://npm.pkg.github.com //npm.pkg.github.com/:_authToken=MY_AUTHTOKEN always-auth=true
J'ai essayé d'ajouter ce fichier .yarnrc:
registry "https://registry.npmjs.org" "@scope:registry" "https://npm.pkg.github.com"
(sans .yarnrc) J'ai essayé ce fichier .npmrc
registry=https://registry.npmjs.org/ //npm.pkg.github.com/:_authToken=MY_AUTHTOKEN @scope:registry=https://npm.pkg.github.com/
Où MY_AUTHTOKEN
est mon Personal Access Token
que j'ai généré à partir de Github. (il a accès à tout dans les packages)
J'ai essayé de:
npm login
utilisant mon PAT comme mot de passeyarn login
En cas de confusion, je n'essaye pas réellement @scope et / package, mais ma portée réelle et le nom du package.
J'ai accès à la portée et au package sur Github.
et encore une fois ma première configuration fonctionne très bien avec npm. Mais je ne peux pas faire fonctionner cela avec du fil, et je ne peux pas trouver de solution existante valide sur SO.
3 Réponses :
Il vous suffit d'utiliser .npmrc à la racine de votre projet avec ce contenu:
//npm.pkg.github.com/:_authToken=GITHUB_PERSONAL_TOKEN @OWNER:registry=https://npm.pkg.github.com
Gardez à l'esprit que GITHUB_PERSONAL_TOKEN a besoin des autorisations de portée read: packages afin de lire les packages à partir de votre dépôt privé.
Ce qui suit a fonctionné pour moi dans .npmrc
yarn add v1.22.4 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... success Saved lockfile. success Saved 1 new dependency. info Direct dependencies ââ @mvce-superstars/hello-world-npm@1.1.1 info All dependencies ââ @mvce-superstars/hello-world-npm@1.1.1 Done in 1.08s.
En utilisant yarn v2 , ce qui suit a fonctionné pour moi dans .yarnrc.yml
:
yarn remove v1.22.4 [1/2] Removing module @mvce-superstars/hello-world-npm... [2/2] Regenerating lockfile and installing missing dependencies... success Uninstalled packages. Done in 0.06s.
Tout d'abord, notez le nom de la portée en minuscules . C'est censé être le nom du propriétaire du référentiel ( MVCE-Superstars
) où le package a été publié, mais le nom doit être entièrement en minuscules.
.npmrc
OU .yarnrc.yml
ci-dessus dans le repoository.npm login --registry=https://npm.pkg.github.com/
OU de la commande yarn npm login --scope=mvce-superstars
read:package
, write:package
et repo
)npm publish
OU yarn npm publish
. âââ node_modules â  âââ @mvce-superstars âââ package.json âââ yarn.lock
npm init
( use-hello-world-npm
).npmrc
ci-dessus à la racine du dossiernpm logout --registry=https://npm.pkg.github.com/
) et je me reconnecte ( npm login --registry=https://npm.pkg.github.com/
), juste pour être sûryarn
et comme c'était censé le faire, ça a marché!⤠YN0000: â Resolution step ⤠YN0014: â @mvce-superstars/hello-world-npm@npm:^1.1.1: Only some patterns can be imported from legacy lockfiles (not "https://npm.pkg.github.com/download/@mvce-superstars/hello-world-npm/1.1.1/426126f89734c2c76bfac0342c1de9c95ad003b6e905a7b9f9f745892c86da7a#5379c8030fa9c5f57e5baef67f2a8a784ce93361") ⤠YN0000: â Completed in 0.55s ⤠YN0000: â Fetch step ⤠YN0013: â @mvce-superstars/hello-world-npm@npm:1.1.1::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40mvce-superstars%2Fhello-world-npm%2F1.1.1%2F426126f89734c2c76bfac0342c1de9c95ad003b6e905a7b9f9f745892c86da7a can't be found in the cache and will be fetched from the remote server ⤠YN0000: â Completed in 1.3s ⤠YN0000: â Link step ⤠YN0031: â One or more node_modules have been detected and will be removed. This operation may take some time. ⤠YN0000: â Completed ⤠YN0000: Done with warnings in 1.87s
fil v2
yarn install v1.22.4 info No lockfile found. [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... success Saved lockfile. Done in 0.55s.
yarn
npm notice npm notice ð¦ @mvce-superstars/hello-world-npm@1.1.1 npm notice === Tarball Contents === npm notice 16.3kB example.gif npm notice 89B bin.js npm notice 175B lib/index.js npm notice 734B package.json npm notice 2.0kB yarn-error.log npm notice 570B Readme.md npm notice 167B init.sh npm notice === Tarball Details === npm notice name: @mvce-superstars/hello-world-npm npm notice version: 1.1.1 npm notice package size: 14.3 kB npm notice unpacked size: 20.0 kB npm notice shasum: 5379c8030fa9c5f57e5baef67f2a8a784ce93361 npm notice integrity: sha512-FAI/Wuy4gHW8C[...]FINQeIlZ+HDdg== npm notice total files: 7 npm notice + @mvce-superstars/hello-world-npm@1.1.1
Et pour faire bonne mesure, je le supprime ( yarn remove @mvce-superstars/hello-world-npm
):
npmScopes: "mvce-superstars": npmAlwaysAuth: true npmRegistryServer: "https://npm.pkg.github.com"
et ajoutez-le à nouveau ( yarn add @mvce-superstars/hello-world-npm
):
@mvce-superstars:registry=https://npm.pkg.github.com
Le référentiel est situé ici , donc si vous voulez voir par vous-même que cela a fonctionné comme je l'ai expliqué, commentez ci-dessous avec votre nom d'utilisateur sur github et je vous enverrai une invitation.
@MLyck l'exemple que j'ai montré essaie de reproduire votre problème en utilisant les informations que vous avez fournies. Il utilise un référentiel privé comme vous l'avez dit, j'ai également utilisé un PAT comme vous, et j'utilise du fil. Si cela a fonctionné pour moi, le problème n'est pas avec le fil, mais avec quelque chose d'autre dans votre configuration. Vous devez peut-être inclure plus d'informations sur votre configuration dans votre question.
peut-être, bien que j'en doute fortement. J'ai pu le résoudre avec Yarn2 et en utilisant le nouveau fichier yarnrc.yml assez facilement (sans autres changements), ce qui suggère qu'il s'agit d'un problème de Yarn. Cependant, votre réponse est absolument fantastique et sera probablement utile aux autres, vous avez clairement déployé des efforts pour cela et vous la testez, vous méritez donc certainement la réponse acceptée à cette question. Mais si cela ne fonctionne pas pour quelqu'un d'autre aussi. Essayez de passer à Yarn 2 :)
@MLyck Super. J'ai mis à jour ma réponse avec les résultats de l'utilisation de yarn v2.
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 cette solution :
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
.