Comment installer un module NPM privé sans mon propre registre?

j'ai pris du code partagé et je l'ai mis dans un module NPM, que je ne veux pas télécharger dans le registre central. La question est, comment puis-je l'installer à partir d'autres projets?

la manière évidente est probablement de mettre en place mon propre registre NPM, mais selon la documentation, cela implique beaucoup de tracas.

puis-je juste installer un module NPM qui se trouve sur le système de fichiers local, ou peut-être même à partir de git?

npm install --from-git git@server:project
274
demandé sur Yves M. 2012-04-30 19:33:17

12 réponses

cd somedir
npm install .

ou

npm install path/to/somedir

somedir doit contenir le package.json à l'intérieur.

Il sait sur git:

npm install git://github.com/visionmedia/express.git
222
répondu mihai 2012-04-30 21:47:13

dans votre modules npm privés ajouter

"private": true 

sur votre paquet.json

ensuite, pour référencer le module privé dans un autre module, utilisez ceci dans votre paquet.json

{
    "name": "myapp",
    "dependencies": {
        "private-repo": "git+ssh://git@github.com:myaccount/myprivate.git#v1.0.0",
    }
}
466
répondu 250R 2014-05-21 16:27:48

puis-je juste installer un paquet NPM qui se trouve sur le système de fichiers local, ou peut-être même à partir de git?

Oui, vous le pouvez! Extrait du docs https://docs.npmjs.com/cli/install

un colis est:

  • a) un dossier contenant un programme décrit par un paquet.dossier json
  • b) une balle de tarball gzippée contenant (a)
  • C) une url qui se résout à (b)
  • d) un <name>@<version> qui est publié sur le registre avec (c)
  • e) un <name>@<tag> que les points de (d)
  • f) un <name> qui a une "dernière" tag satisfaisant (e)
  • g) un <git remote url> qui résout (b)

n'est-ce pas génial?

57
répondu Colonel Panic 2015-01-14 16:31:37

Mise À Jour Janvier 2016

en plus des autres réponses , il y a parfois le scénario où vous souhaitez avoir des modules privés disponibles dans un contexte d'équipe.

les deux Github et Bitbucket supportent le concept de générer une équipe clé API . Cette clé API peut être utilisée comme le mot de passe pour exécutez les requêtes API comme cette équipe.

dans votre modules npm privés ajouter

"private": true 

à votre paquet .json

ensuite, pour référencer le module privé dans un autre module, utilisez ceci dans votre paquet.json

    {
        "name": "myapp",
        "dependencies": {
            "private-repo":
"git+https://myteamname:aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myprivate.git",
        }
    }

nom de l'équipe = myteamname , et API Key = aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4

ici je me réfère à un Bitbucket repo, mais il est presque identique en utilisant github aussi.

enfin, comme alternative, si vous ne vous gênez pas vraiment de payer $7 par mois (au moment de l'écriture), alors vous pouvez maintenant avoir modules NPM privés de la boîte.

37
répondu arcseldon 2016-01-13 00:11:07

FWIW: j'ai eu des problèmes avec toutes ces réponses lorsque j'ai traité avec un dépôt privé d'organisation.

ce qui suit a fonctionné pour moi:

npm install -S "git+https://username@github.com/orgname/repositoryname.git"

par exemple:

npm install -S "git+https://blesh@github.com/netflix/private-repository.git"

Je ne suis pas entièrement sûr pourquoi les autres réponses ne fonctionnaient pas pour moi dans ce cas-ci, parce qu'ils sont ce que j'ai essayé premier avant que J'ai frappé Google et trouvé cette réponse. Et les autres réponses sont ce que j'ai fait dans passé.

J'espère que ça aidera quelqu'un d'autre.

24
répondu Ben Lesh 2014-06-20 21:45:11

j'ai eu ce même problème, et après quelques recherches, J'ai trouvé Reggie ( https://github.com/mbrevoort/node-reggie ). Il semble assez solide. Il permet la publication légère de modules NPM vers des serveurs privés. Pas parfait (pas d'authentification lors de l'installation), et il est encore très jeune, mais je l'ai testé localement, et il semble faire ce qu'il dit qu'il devrait faire.

C'est-à-dire... cents cinquante et une million neuf cent soixante dix mille neuf cent vingt"

npm install -g reggie
reggie-server -d ~/.reggie

puis cd dans votre répertoire de module et...

reggie -u http://<host:port> publish 
reggie -u http://127.0.0.1:8080 publish 

enfin, vous pouvez installer des paquets à partir de reggie simplement en utilisant cette url soit dans une commande d'installation npm directe, soit à partir d'un paquet.json... comme ainsi

npm install http://<host:port>/package/<name>/<version>
npm install http://<host:port>/package/foo/1.0.0

ou..

dependencies: {
    "foo": "http://<host:port>/package/foo/1.0.0"
}
7
répondu bwest87 2013-11-16 23:04:40

structurez votre code d'une manière accessible comme ci-dessous. Si cela est possible pour vous.

  • NodeProjs\Apps\MainApp\package.json

  • NodeProjs\Modules\DataModule\package.json

Within MainApp @ NodProjs\Apps\MainApp\

npm install --S ../../Modules/DataModule

Vous pouvez avoir besoin de package de mise à jour.json:

 "dependencies": {
       "datamodule": "../../Modules/DataModule"
}

cela a fonctionné pour ma situation.

6
répondu wchoward 2016-09-14 20:32:47

commençant par réponse d'arcseldon , j'ai trouvé que le nom de l'équipe était nécessaire dans L'URL comme ceci:

npm install --save "git+https://myteamname@aQqtcplwFzlumj0mIDdRGCbsAq5d6Xg4@bitbucket.org/myteamname/myprivate.git"

et notez que la clé API n'est disponible que pour l'équipe, pas pour les utilisateurs individuels.

3
répondu neonhomer 2017-05-23 10:31:37

Npm fournit maintenant illimité modules hébergés privés pour 7 $ / Utilisateur / mois utilisé comme si

cd private-project
npm login

dans votre paquet JSON set "name": " @username/private-project"

npm publish

puis de demander votre projet:

cd ../new-project
npm install --save @username/private-project
2
répondu roo2 2015-06-03 06:23:20

configuration à installer à partir du dépôt public Github, même si la machine est sous pare-feu:

dependencies: {
   "foo": "https://github.com/package/foo/tarball/master"
}
1
répondu Alex Belozerov 2015-03-04 10:59:05

j'utilise ce qui suit avec un dépôt GitHub privé:

npm install github:mygithubuser/myproject
1
répondu Lars 2017-02-14 20:58:22

très simple -

npm config set registry https://path-to-your-registry/

il fixe en fait registry = "https://path-to-your-registry" cette ligne à /Users/<ur-machine-user-name>/.npmrc

toutes les valeurs que vous avez définies explicitement ou par défaut peuvent être vues par - npm config list

0
répondu sapy 2017-07-27 09:05:34