¿puedes alojar un repository privado para que tu organización lo use con npm?

NPM suena como una gran plataforma para usar dentro de una organización, curioso si es posible un repository privado, como con Nexus / Maven. Nada sale en Google 🙁

No creo que haya una manera fácil de hacer esto.

Una mirada a la documentación de npm nos dice que es posible:

¿Puedo ejecutar mi propio registro privado?

¡Sí!

La forma más fácil es replicar la base de datos del sofá y usar el mismo documento de diseño (o similar) para implementar las API.

Si configura la replicación continua desde el CouchDB oficial y luego configura su CouchDB interno como la configuración del registro, podrá leer los paquetes publicados, además de los privados, y de forma predeterminada solo publicará internamente. Si luego desea publicar un paquete para que todo el mundo lo vea, simplemente puede anular la configuración de --registry para ese comando.

También hay un excelente tutorial sobre cómo crear un repository npm privado en el blog del reloj.

EDITAR (2017-02-26):

No es realmente nuevo, pero ahora hay planes pagados para alojar paquetes privados en NPM.

A lo largo de los años, NPM también se ha convertido en un factor para muchas empresas que no pertenecen a Node.js, a través del enorme ecosistema frontend construido sobre NPM. Si su empresa ya está ejecutando Sonatype Nexus para alojar proyectos de Java internamente, también puede usarlo para alojar paquetes internos de NPM.

Otras opciones incluyen JFrog Artifactory e Inedo ProGet , pero no las he usado.

https://github.com/isaacs/npmjs.org/ : en la versión npm v1.0.26, puede especificar urls de repositorys git privados como una dependencia en sus archivos package.json. No lo he usado, pero me encantaría recibir comentarios. Aquí está lo que tú necesitas hacer:

 { "name": "my-app", "dependencies": { "private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1", } } 

La siguiente publicación habla de esto: Debuggable: módulos Private Npm

Hay un paquete npm fácil de usar para hacer esto. https://www.npmjs.org/package/sinopia

En pocas palabras, Sinopia es un servidor de repository npm privado / en caché que puede configurar con cero configuración.

Sinopia se puede usar para:

  • publicar paquetes privados propios sin exponerlo al público
  • almacenar en caché solo los paquetes públicos que se utilizan (no es necesario tener que replicar todo el registro público)
  • anular paquetes públicos con una versión modificada que se haya producido internamente.

El 14 de abril (2015), se introdujeron módulos privados de npm .

Cuando pagas por módulos privados, puedes:

  • Aloja tantos paquetes privados como quieras
  • Dar acceso de lectura o acceso de lectura y escritura para esos paquetes a cualquier otro usuario pago
  • Instale y use cualquier paquete que otros usuarios pagados le hayan dado acceso de lectura a
  • Colabore en cualquier paquete que otros usuarios pagados le hayan otorgado acceso de escritura a

Por supuesto, no es gratis, actualmente 7 $ por mes, por usuario.

Y sigue siendo un servicio bastante nuevo. Por ejemplo, falta soporte para las cuentas de la organización (desde junio de 2015):

Actualmente, los paquetes privados solo están disponibles para usuarios individuales, pero el soporte para las cuentas de la organización llegará pronto. Siéntase libre de crear un usuario para su organización mientras tanto, y podemos actualizarlo a una organización cuando el soporte esté aquí.

Entonces, aunque no es perfecto, es la solución oficial de npm para mantener paquetes privados, y eso mismo hace que valga la pena mencionarlo.

ACTUALIZAR

Los paquetes privados de Npm ya están disponibles, con planes para usuarios individuales y organizaciones :

  • Número ilimitado de paquetes públicos y privados
  • $ 7 / mes / desarrollador
  • Incluye un nombre de ámbito, basado en el nombre de la organización
  • Publicar y controlar el acceso a @ org-name / foo

(descargo de responsabilidad: ni remotamente afiliado de ninguna manera con npm, Inc. )

Administradores de repositorys con soporte para registros privados de npm:

  • Sonatype Nexus 2.10
  • Artifactory 3.2

Supongo que este hilo necesita una actualización. Si observa alguno de los registros npm que están disponibles, son extremadamente pesados ​​y necesitan couchdb. Gemfurry y otros necesitan que te desvíes de los repos públicos. Algunas de las npm como shadow-npm no tienen confirmaciones recientes .

Entonces, encontramos a Reggie . Tiene una buena actividad de compromiso, es extremadamente fácil de instalar y utilizar, y tiene un buen apoyo de la comunidad . Es extremadamente liviano y no tienes que lidiar con couchdb, etc.

Verdaccio es lo que estaba buscando y merece su propia respuesta;) Es un tenedor activamente mantenido de Sinopia (respuesta muy votada aquí ). Es un registro npm como un paquete npm , y se puede encontrar aquí: https://github.com/verdaccio/verdaccio , aquí: https://www.verdaccio.org , o aquí: pnpm i verdaccio .

Perdóname si no entiendo bien tu pregunta, pero esta es mi respuesta:

Puede crear un módulo npm privado y usar los comandos normales de npm para instalarlo. La mayoría de los usuarios de node.js usan git como su repository, pero puedes usar cualquier repository que te funcione.

  1. En su proyecto, querrá el esqueleto de un paquete de NPM. La mayoría de los módulos de nodos tienen repositorys de git donde puedes ver cómo se integran con NPM (el archivo package.json, creo que es parte de esto y el sitio web de NPM te muestra cómo hacer un paquete de npm)
  2. Use algo similar a Make para hacer que su paquete esté disponible en Internet o en su red para crear las descargas de instalación de npm.
  3. Una vez que su paquete esté hecho, entonces use

    npm install * tarball_url *

Esta es la forma más fácil que conozco: alojarlo en la nube con el registro privado de Gemfury npm.

Es gratis y puede iniciar sesión con su cuenta de Github. Debería ahorrarle mucho tiempo, en comparación con la configuración de su propia base de datos.

Un poco tarde para la fiesta, pero NodeJS (a partir del ~ 14 de noviembre, supongo) admite repositorys corporativos de NPM; puede encontrar más información en su sitio oficial .

A partir de una mirada superficial, parece que npmE permite la duplicación fallida del repository de NPM, es decir, buscará paquetes en el repository de NPM real si no puede encontrar uno en el repository interno. ¡Parece muy útil!

npm Enterprise es una solución local para compartir y distribuir de forma segura módulos de JavaScript dentro de su organización, desde el equipo que mantiene npm y el registro público de npm. Está diseñado para equipos que necesitan:

fácil intercambio interno de módulos privados mejor control del flujo de trabajo de desarrollo e implementación Seguridad más estricta en cuanto a la implementación de módulos de código abierto Cumplimiento de los requisitos legales para el código de host local npmE es npm privado

npmE es un registro npm que funciona con el mismo cliente npm estándar que ya utiliza, pero proporciona las características que necesitan las organizaciones más grandes que ahora están adoptando con entusiasmo el nodo. Está construido por npm, Inc., el patrocinador del proyecto de código abierto npm y el anfitrión del registro público de npm.

Desafortunadamente, no es gratis. Puede obtener una versión de prueba, pero es un software comercial. Este no es tanto para desarrolladores solistas, pero si eres un desarrollador en solitario, tienes GitHub 🙂

Este post habla sobre cómo configurar un registro privado

  • asegúrese de que el sofá esté instalado en su sistema
  • Replicando npmjs.org use el siguiente comando

     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" 

Tenga en cuenta que es "continuous":true en el comando, esto utiliza la API _changes de CouchDB y extraerá cualquier cambio nuevo cuando se notifique a esta API.

Si alguna vez desea detener estas repeticiones, puede agregar fácilmente "cancel":true . Entonces el script sería

  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" 

Luego vaya a npmjs.org readme para instalar npm (asegúrese de que nodejs y git estén instalados). Blow es todos los pasos

 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 

Podría llegar un poco tarde a la fiesta, pero cualquiera de estos dos podría funcionar para usted:

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

estamos utilizando el Sonatype Nexus, la versión es Nexus Repository ManagerOSS 3.6.1-02. Y estoy seguro de que es compatible con el repository privado de NPM y almacena el paquete en caché.

enter image description here

    Intereting Posts