node.js - see - npmrc windows
¿Hay alguna manera de configurar múltiples registros en un solo archivo npmrc? (9)
Algunos pasos que puedes probar. (es cómo lo hacemos en mi lugar de trabajo)
- Cree un grupo de registro con dos (o más) direcciones de origen del repositorio. Uno sería su privado interno y el otro un proxy para npmjs dando prioridad al interno.
- Haga de este grupo su registro en el archivo .npmrc. De esta manera, npm siempre intentará obtenerlo del interno, si no se encuentra, obténgalo del proxy
Espero que ayude.
Aquí está mi problema. Tenemos un registro privado de NPM que solo funciona en VPN. Me gustaría tener un registro de respaldo https://registry.npmjs.org para que cuando esté fuera de VPN funcione sin problemas.
PD Actualmente estoy usando npmrc que hace un buen trabajo al cambiar entre archivos .npmrc como solución alternativa
Como han pasado un par de años y no parece posible hacer esto (usando npm solo), una solución a este problema es usar el Administrador de repositorio Nexus (de Sonatype). Nexus admite múltiples repositorios, le permite ordenarlos y también servidores proxy / cachés para mejorar la velocidad.
Existe una versión gratuita y una versión pro / de pago. La característica que admite esto se describe en: https://help.sonatype.com/repomanager3/node-packaged-modules-and-npm-registries
La información relevante se duplica a continuación, de modo que si / cuando la URL / enlace anterior deja de funcionar, la información todavía está aquí.
Un grupo de repositorios es la forma recomendada de exponer todos sus repositorios de registros npm del administrador de repositorios a sus usuarios, sin necesidad de ninguna otra configuración del lado del cliente. Un grupo de repositorio le permite exponer el contenido agregado de múltiples repositorios proxy y alojados con una URL a npm y otras herramientas.
Te permite crear registros privados de npm
Se puede usar un registro privado de npm para cargar sus propios paquetes, así como paquetes de terceros.
Y
Para reducir las descargas duplicadas y mejorar las velocidades de descarga para sus desarrolladores y servidores CI, debe proxy el registro alojado en https://registry.npmjs.org . Por defecto, npm accede a este registro directamente. También puede delegar cualquier otro registro que necesite.
Entonces, una lista rápida con viñetas de las cosas que debe hacer para que esto funcione es:
-
Instalar Nexus
-
Cree un repositorio local / privado (o señale su repositorio privado en otro servidor)
-
Cree un GRUPO que enumere su repositorio privado y el repositorio público.
-
Configure su archivo $ HOME / .npmrc para que apunte al "GRUPO" que acaba de crear.
-
Publique sus paquetes privados de npm en el repositorio local.
-
Los usuarios ahora pueden ejecutar una configuración única.
npm config set registry https://nexus/content/groups/GROUP
-
Luego, los usuarios pueden instalar paquetes públicos o privados a través de
npm install
.npm install my-private-package npm install lodash any-other-public-package
Y tanto sus paquetes públicos como privados se pueden instalar mediante un simple
npm install
.
Nexus encuentra el paquete buscando cada repositorio configurado en el grupo y devuelve los resultados.
Entonces, npm todavía piensa que solo hay un registro, pero detrás de la cortina hay múltiples repositorios que se están utilizando.
NOTA IMPORTANTE: Cuando publique sus componentes, deberá especificar el
npm publish --registry https://nexus/content/repositories/private-repo my-private-package
para que su paquete se publique en el repositorio correcto.
En la versión 4.4.1, si puede cambiar el nombre del paquete, use:
npm config set @myco:registry http://reg.example.com
Donde
@myco
es el alcance de su paquete.
Puede instalar el paquete de esta manera:
npm install @myco/my-package
Para más información: https://docs.npmjs.com/misc/scope
Me encuentro con el mismo problema cuando mi empresa creó su propio registro, por lo que trabajo mucho en proxy-registry proxy-multi-registries en proxy-registry proxy-multi-registries para resolver este problema. Espero que también te ayude.
No es la mejor manera, pero si está utilizando Mac o Linux, incluso en Windows, puede establecer un alias para diferentes registros.
##############NPM ALIASES######################
alias npm-default=''npm config set registry https://registry.npmjs.org''
alias npm-sinopia=''npm config set registry http://localhost:4873/''
Para cualquiera que busque también una solución para la autenticación, agregaría en la solución de paquetes con alcance que puede tener varias líneas en su archivo
.npmrc
:
//internal-npm.example.com:8080/:_authToken=xxxxxxxxxxxxxxx
//registry.npmjs.org/:_authToken=yyyyyyyyyy
Cada línea representa un registro NPM diferente
Puede tener múltiples registros para
paquetes con ámbito
en su archivo
.npmrc
.
Por ejemplo:
@polymer:registry=<url register A>
registry=http://localhost:4873/
Los paquetes bajo el alcance de
@polymer
se recibirán de
https://registry.npmjs.org
, pero el resto se recibirá de su NPM local.
Puede usar la sintaxis de múltiples repositorios para la entrada del
registry
en su archivo
.npmrc
:
registry=http://serverA.url/repository-uri/
//serverB.url/repository-uri/
//serverC.url/repository-uri/:_authToken=00000000-0000-0000-0000-0000000000000
//registry.npmjs.org/
Eso haría que su npm busque paquetes en diferentes servidores.
Yo uso las herramientas cli de Strongloop para eso; ver https://strongloop.com/strongblog/switch-between-configure-public-and-private-npm-registry/ para más información
Cambiar entre repositorios es tan fácil como:
slc registry use <name>