
Antecedentes
Decidí vender a un precio alto, terminé en el empleador, donde no hay Internet no solo en el circuito industrial, sino también en la doncella (la situación en realidad no es infrecuente en muchas, por así decirlo, "empresas"). Hay IE en la consola donde, por supuesto, mi querido lector, puede mirar Habr o stackoverflow, pero no más. En general, repito, la situación no es excepcional, puedes vivir con ella: aquí está, mi computadora portátil personal en la que la escribo, está sobre la mesa ... ¿muchos empleados la han levantado wifi, es un módem celular, en general, si no es una defensa? / cualquier servicio de tres letras (aquí le aconsejo que siga las formas oficiales caras, como se verá a continuación) y no hay un servicio de monitoreo de radio, entonces puede hacer cualquier cosa con su computadora portátil personal (dentro de lo permitido :)), bueno, al menos así es como se ve con nosotros. Existe la posibilidad de arrastrar archivos al entorno de desarrollo, pero realmente no me gustó la decisión de mantener node_modules en la base del código y me arremangué (me arremangué muchas veces sobre pasar de TFS a git y sobre el repositorio nuget local, pero estas son historias separadas, también no sin drama, sino sobre ellas de alguna manera la próxima vez). Hay varias soluciones bastante costosas para el problema, es posible que incluso pueda avanzar a través de algún artefacto, pero cuando imaginé cuánto tomaría esto y lo más importante, cuánto tiempo se decidiría, coordinaría e implementaría, se decidió actuar de manera barata y enojada.
Descargo de responsabilidad: dado que tenía un entorno de Windows, describo en detalle exactamente el trabajo en la consola de Windows, sin embargo, en esencia, las diferencias solo estarán al final cuando desee aumentar el resultado final como un servicio / demonio.
No Tomi, alma gemela, ¿cómo?
En la acción involucrada:
- Una computadora con acceso a internet - llámalo fuente
- Una computadora sin acceso, en una red corporativa: llámela máquina de destino
Debe haber node.js en la máquina de origen y en la máquina de destino (la forma más fácil es si hay una o versiones similares).
Crea un papá en la fuente, en algún lugar y llámalo, por ejemplo, verdaccio:
mkdir verdaccio cd verdaccio
Después de instalar Verdaccio localmente, esto es algo muy útil, basado en el antiguo proyecto de sinopia. Lea más aquí: https://verdaccio.org/ .
En resumen, este es un proxy para npm, que puede almacenar en caché. Para tantos usuarios de este paquete, la oportunidad clave es la posibilidad de publicar en privado, pero mi caso es un poco diferente, quería almacenar en caché todo lo que necesito para trabajar y un poco más, y luego transferirlo todo a la máquina de destino. Mirando hacia el futuro, diré que todo salió bastante bien, excepto por la transferencia de node-sass. Fue la raíz de sus tarballs lo que pasé un día y medio (hay una parte nativa que se carga desde el github durante el proceso de instalación o se va a enredar, si de repente no funciona, piense, se construirá en cada máquina de desarrollo local, lo cual es completamente incómodo), pero probablemente Otra historia también.
Aquí todo es simple:
npm i verdaccio
En general, el manual recomienda que instale globalmente, pero de hecho esto no es necesario en absoluto, además, queremos localizar toda esta desgracia en una carpeta, para que luego pueda copiarse convenientemente. Porque si ...
Ejecute el paquete, creará el almacenamiento y la configuración predeterminados:
.\node_modules\.bin\verdaccio.cmd

Luego, todos nos dijeron dónde está la configuración, en qué puerto estamos colgando.
En principio, ya puede ir a la dirección especificada y ver algo como esto:

Ahora tenemos que hacer algunas cosas:
Borrar npm-cache ( más detalles aquí , en resumen, elimine el contenido de % AppData% / npm-cache )
Correr
npm set registry http://localhost:4873/
Copie config.yaml a nuestra acogedora carpeta verdaccio
Asegúrese de que la sección de enlaces ascendentes de este archivo se vea así:
uplinks: npmjs: url: https://registry.npmjs.org/ cache: true
Al final de la configuración, agregue:
listen: - 0.0.0.0:4873
Si no se hace esto, no podrá comunicarse con la dirección local más adelante en la máquina de destino.
En realidad estamos listos, ahora todos los paquetes que llevamos a través de npm install se instalarán en ./storage, que es lo que necesitamos. Restauramos el proyecto de destino, establecemos adicionalmente:
npm i node-windows
Eso es todo, después de eso tomamos la carpeta y la enviamos a la máquina de destino de cualquier manera posible para usted (se necesitan derechos de administrador allí, sí). Ya puede allí, puede crear inmediatamente un archivo en la raíz de la carpeta installservice.js:
var Service = require('node-windows').Service; var svc = new Service({ name: 'VerdaccioSvc', description: 'Verdaccio - npm local repository', script: ' < >\\node_modules\\verdaccio\\bin\\verdaccio', nodeOptions: [] }); svc.on('install', function() {svc.start();}); svc.install();
Lanzamos:
node installservice.js
¡A disfrutar!
En general, logramos obtener un repositorio local con bastante poca sangre, las construcciones están construyendo, los desarrolladores están desarrollando todo en este mundo en sus lugares. Y sí, la sincronización posterior se reduce a copiar el contenido de ./storage .
Todo esto se escribió en parte como una nota, y en parte para ahorrarle tiempo (es poco probable que la tarea se resuelva con demasiada frecuencia), porque si no sale una flor de piedra, siéntase libre de escribir, existe la posibilidad de que se me haya olvidado describir algún tipo de detalle, y si no lo olvido, de repente, entonces ayudaré ...