Npm semble être une excellente plateforme à utiliser au sein d’une organisation, curieux de savoir si un dépôt privé est possible, comme avec Nexus/Maven. Rien ne vient sur Google :(
Je ne pense pas qu'il y ait un moyen facile de faire cela.
A regardez la documentation de npm nous dit qu'il est possible:
Puis-je gérer mon propre registre privé?
Oui!
Le moyen le plus simple consiste à répliquer la base de données de canapé et à utiliser le même document de conception (ou un document similaire) pour implémenter les API.
Si vous configurez la réplication continue à partir de CouchDB officiel, puis configurez votre CouchDB interne comme configuration de registre, vous pourrez alors lire tous les packages publiés, en plus de vos paquets privés, et ne publieront par défaut que de manière interne. Si vous souhaitez ensuite publier un paquet destiné au monde entier, vous pouvez simplement remplacer le
--registry
config pour cette commande.
Il existe également un excellent tutoriel sur comment créer un référentiel privé npm dans le blog de l'horloge.
EDIT (2017-02-26):
Pas vraiment nouveau, mais il existe maintenant des forfaits payants Héberger des packages privés sur NPM.
Au fil des ans, le NGP est également devenu un facteur pour de nombreuses sociétés non-Node.js, grâce à l’énorme écosystème frontal qui est construit sur NPM. Si votre entreprise exécute déjà Sonatype Nexus pour l'hébergement interne de projets Java, vous pouvez également l'utiliser pour héberger des packages NPM internes.
Les autres options incluent JFrog Artifactory et Inedo ProGet , mais je ne les ai pas utilisées.
https://github.com/isaacs/npmjs.org/ : Dans npm version v1.0.26, vous pouvez spécifier des URL de référentiels git privés en tant que dépendance dans vos fichiers package.json. Je ne l'ai pas utilisé mais j'adorerais recevoir des commentaires. Voici ce que tu dois faire:
{
"name": "my-app",
"dependencies": {
"private-repo": "git+ssh://[email protected]:my-app.git#v0.0.1",
}
}
Le post suivant parle de ceci: Debuggable: Private npm modules
Pour cela, il est facile d'utiliser le paquet npm . https://www.npmjs.org/package/sinopia
En un mot, Sinopia est un serveur de référentiel npm privé/en cache que vous pouvez configurer sans configuration.
Sinopia peut être utilisé pour:
Le 14 avril (2015), les modules privés de npm ont été introduits.
Lorsque vous payez pour des modules privés, vous pouvez:
- Hébergez autant de paquets privés que vous le souhaitez
- Donnez un accès en lecture ou un accès en lecture-écriture pour ces packages à tout autre utilisateur payant
- Installez et utilisez tous les packages auxquels d’autres utilisateurs payants vous ont accordé un accès en lecture.
- Collaborez sur tous les packages auxquels d'autres utilisateurs payants vous ont accordé un accès en écriture.
Bien sûr, ce n'est pas gratuit - actuellement 7 $ par mois, par utilisateur.
Et c'est toujours un joli nouveau service. Par exemple, le support pour les comptes d'organisation est manquant (à partir de juin 2015):
Actuellement, les packages privés ne sont disponibles que pour des utilisateurs individuels, mais la prise en charge des comptes d’organisation arrive bientôt. N'hésitez pas à créer un utilisateur pour votre organisation entre-temps, et nous pouvons le mettre à niveau vers une organisation lorsque l'assistance est disponible.
Ainsi, bien qu’elle ne soit pas parfaite, c’est la solution officielle npm permettant de conserver les paquets privés, ce qui mérite d’être mentionnée.
METTRE À JOUR
Les packages privés Npm sont maintenant disponibles, avec des plans pour les utilisateurs individuels et les organisations:
- Nombre illimité de forfaits publics et privés
- 7 $/mois/développeur
- Inclut un nom d'étendue, basé sur le nom de l'organisation
- Publier et contrôler l'accès à @ org-name/foo
(disclaimer: pas même affilié à distance de quelque manière que ce soit avec npm, Inc.)
Verdaccio est ce que je cherchais et il mérite sa propre réponse;) C’est un fork activement maintenu de Sinopia (réponse hautement votée ici ). C'est un registre npm sous la forme d'un paquet npm, et peut être trouvé
ici: https://github.com/verdaccio/verdaccio ,
ici: https://www.verdaccio.org ,
ici: pnpm i -g verdaccio
, ou
ici: docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio
Gestionnaires de référentiels prenant en charge les registres npm privés:
Je suppose que ce fil nécessite une mise à jour. Si vous regardez l'un des registres npm disponibles, ils sont extrêmement lourds et ils ont besoin de couchdb. Gemfurry et d’autres ont besoin que vous vous retiriez des pensions publiques. Certains des npm, comme shadow-npm, n'ont pas de commits récents .
Ensuite, nous avons trouvé Reggie . Il possède une bonne activité de commit, extrêmement facile à installer et à utiliser et bénéficie d’un très bon support community . Il est extrêmement léger et vous n'avez pas à vous soucier de couchdb, etc.
C’est le moyen le plus simple que je connaisse: l’héberger dans le cloud avec le registre Gemfury private npm.
C'est gratuit et vous pouvez vous connecter avec votre compte Github. Cela devrait vous faire gagner beaucoup de temps par rapport à la création de votre propre base de données.
Pardonnez-moi si je ne comprends pas bien votre question, mais voici ma réponse:
Vous pouvez créer un module npm privé et utiliser les commandes normales de npm pour l'installer. La plupart des utilisateurs de node.js utilisent git comme référentiel, mais vous pouvez utiliser le référentiel qui vous convient.
Une fois votre colis fabriqué, utilisez
npm install * tarball_url *
Un peu tard pour la fête, mais NodeJS (à partir du 14 novembre je suppose) supporte les référentiels NPM d'entreprise - vous pouvez en savoir plus sur leur site officiel .
D'un simple coup d'œil, il semblerait que npmE autorise la mise en miroir automatique du référentiel NPM. En d'autres termes, il recherchera les packages dans le référentiel real NPM s'il ne parvient pas à en trouver un dans votre référentiel interne. Semble très utile!
npm Enterprise est une solution sur site permettant de partager et de distribuer en toute sécurité des modules JavaScript au sein de votre organisation, à partir de l'équipe qui gère npm et le registre public npm. Il est conçu pour les équipes qui ont besoin de:
partage interne aisé des modules privés pour un meilleur contrôle du développement et la sécurité plus stricte du flux de travail de déploiement autour du déploiement de sources ouvertes modules de conformité avec les exigences légales pour Host code sur site npmE est un npm privé
npmE est un registre npm qui fonctionne avec le même client npm standard vous utilisez déjà, mais fournit les fonctionnalités requises par plus grande organisations qui adoptent maintenant avec enthousiasme le nœud. C'est construit par npm, Inc., le sponsor du projet open source npm et l’hôte du registre public npm.
Malheureusement, ce n'est pas gratuit. Vous pouvez obtenir un essai, mais ce sont des logiciels commerciaux. Ce n'est pas très bien pour les développeurs en solo, mais si vous êtes un développeur en solo, vous avez GitHub :-)
Cet article explique comment installer un registre privé
Répliquer npmjs.org utilise la commande suivante
curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true}' -H "Content-Type: application/json"
Notez que la commande contient "continuous":true
. Elle utilise l’API _changes de CouchDB et extrait toutes les nouvelles modifications lorsque cette API est notifiée.
Si vous souhaitez arrêter ces réplications, vous pouvez facilement ajouter "cancel":true
. Alors le script serait
curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true, "cancel":true}' -H "Content-Type: application/json"
Ensuite, allez à npmjs.org readme pour installer npm (assurez-vous que nodejs
et git
sont installés). Coup est toutes les étapes
git clone git://github.com/isaacs/npmjs.org.git
cd npmjs.org
Sudo npm install -g couchapp
npm install couchapp
npm install semver
couchapp Push registry/app.js http://localhost:5984/registry
couchapp Push www/app.js http://localhost:5984/registry
Je serai peut-être un peu en retard à la fête, mais l’un ou l’autre de ces deux-là pourrait fonctionner pour vous:
Vous pouvez également utiliser Aragon Package Manager si vous préférez une approche décentralisée: