web-dev-qa-db-fra.com

pouvez-vous héberger un référentiel privé que votre organisation utilisera avec npm?

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 :(

187
adam

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.

92
pvorb

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

182
ebdr

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:

  • publier ses propres paquets privés sans les exposer au public
  • ne cache que les paquets publics utilisés (il n'est pas nécessaire de répliquer tout le registre public)
  • écrasez les paquets publics avec une version modifiée qui ont été produits en interne.
86
TiQP

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.)

27
bardzusny

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

18
kub1x

Gestionnaires de référentiels prenant en charge les registres npm privés:

17
Abel Pastur

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.

9
Pradeep Mahdevu

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.

6
alex urdea

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.

  1. Dans votre projet, vous voulez le squelette d'un package NPM. La plupart des modules de nœud .__ ont des référentiels git où vous pouvez voir comment ils s'intègrent à NPM (le fichier package.json, je crois, fait partie de This et le site Web de NPM vous explique comment créer un package npm).
  2. Utilisez quelque chose de semblable à Make pour créer et archiver votre paquet afin qu'il soit disponible sur Internet ou votre réseau et le préparer pour npm Installer des téléchargements.
  3. Une fois votre colis fabriqué, utilisez

    npm install * tarball_url *

6
EhevuTov

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 :-)

5
Dan Pantry

Cet article explique comment installer un registre privé

  • assurez-vous que couchdb est installé sur votre système
  • 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 
3
nickleefly

nous utilisons le Sonatype Nexus, la version est Nexus Repository ManagerOSS 3.6.1-02. Et je suis sûr qu'il prend en charge le référentiel privé NPM et met le paquet en cache. 

 enter image description here

3
Xin Meng

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:

  1. http://www.jfrog.com/confluence/display/RTF/Npm+Repositories
  2. https://github.com/krakenjs/kappa
2
Prabhat

Vous pouvez également utiliser Aragon Package Manager si vous préférez une approche décentralisée:

  1. Utiliser APM: http://blog.aragon.one/using-apm-to-replace-npm-and-other-centralized-package-package-managers/
  2. Déploiement d'APM: https://github.com/aragon/aragonOS#apm
0
countTheRow