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
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
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",
}
}
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?
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",
}
}
où 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.
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.
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"
}
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.
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.
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
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"
}
j'utilise ce qui suit avec un dépôt GitHub privé:
npm install github:mygithubuser/myproject
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