web-dev-qa-db-fra.com

utilisation de myproject / .npmrc avec registre

Comment puis-je installer un fichier .npmrc dans mon projet où je peux définir mon propre registre privé? Je ne veux pas avoir ce genre de configuration dans mon utilisateur config .npmrc. Tout autre développeur devrait pouvoir simplement git clone le projet et lancez npm install.

Voici ce que j'ai jusqu'à présent:

// .npmrc
registry=https://npm.fury.io/AUTH_TOKEN/me/

// package.json:
{
  "name": "webapp",
  "description": "",
  "version": "1.0.0",
  "private": true,
  "dependencies": {
    "jquery": "1.2.3",
    "myPrivateLibFromNpmFury": "0.0.4"
  }
}

npm install myPrivateLibFromNpmFury

résultats

npm ERR! 404 Registry returned 404 for GET on https://registry.npmjs.org/myPrivateLibFromNpmFury

31
antpaw

Comme cela a été souligné par @Paulpro et @Alexey B., la plupart de ses fonctions fonctionnaient déjà, mais je ne pouvais pas les voir tout de suite, peut-être parce que je n'avais pas rechargé correctement mon environnement bash. Mais après cela, j’ai fait face à un autre problème avec npm outdated qui a été causé par l'URL du registre. Il s'avère que npm ne peut avoir qu'une seule URL de registre (ce qui est assez fou) et si vous souhaitez utiliser npm-modules privés et publics, vous devez utiliser un proxy pour le registre public npm-module via votre registre privé. Heureusement, fury.io soutient cela, donc dans mon cas, au lieu d’utiliser ceci:

//.npmrc
registry=https://npm.fury.io/AUTH_TOKEN/me/

je dois utiliser ceci:

//.npmrc
registry=https://npm-proxy.fury.io/AUTH_TOKEN/USER_NAME/

[~ # ~] update [~ # ~] : il est possible de contourner le problème (npm est lié à un seul registre). Vous devez d’abord ajouter un scope à tous vos paquets privés. Maintenant avec .npmrc vous pouvez relier les registres pour les portées et vous n’avez plus besoin de mandataires.

//.npmrc
@project_a:registry=https://npm.fury.io/AUTH_TOKEN/USER_NAME/
@project_b:registry=https://npm.fury.io/AUTH_TOKEN/USER_NAME/
@company_a:registry=https://npm.fury.io/AUTH_TOKEN/USER_NAME/
23
antpaw

Remarqué à la docs

Fichier de configuration par projet

Lorsque vous travaillez localement dans un projet, un fichier .npmrc à la racine du projet (c.-à-d. Un frère de node_modules et package.json) définira des valeurs de configuration spécifiques à ce projet.

Notez que cela ne s'applique qu'à la racine du projet dans lequel vous exécutez npm. Cela n'a aucun effet lorsque votre module est publié. Par exemple, vous ne pouvez pas publier un module qui s'oblige à installer globalement ou à un emplacement différent.

J'ai essayé de créer les fichiers que vous avez spécifiés dans la question (package.json et .npmrc), tout fonctionne bien. Peut-être que vous avez fait une faute de frappe quelque part?

frgt$ npm i myPrivateLibFromNpmFury --verbose

npm info using [email protected]
npm info using [email protected]
npm verb request uri https://npm.fury.io/AUTH_TOKEN/me/myPrivateLibFromNpmFury
npm verb request no auth needed
npm info attempt registry request try #1 at 14:36:10
npm verb request id 23f09acc4e7021c7
npm http request GET https://npm.fury.io/AUTH_TOKEN/me/myPrivateLibFromNpmFury
npm http 403 https://npm.fury.io/AUTH_TOKEN/me/myPrivateLibFromNpmFury
13
Alexey B.

Vous devriez utiliser le proxy transparent:

registry=https://npm-proxy.fury.io/AUTH_TOKEN/me/
3
Paulpro