
Antecedentes
Decidindo vender a um preço alto, acabei no empregador, onde não há Internet não apenas no circuito industrial, mas também na donzela (a situação não é incomum em muitas, por assim dizer, "empresas"). Existe o IE no console em que você, meu caro leitor, pode, é claro, olhar para o Habr ou o stackoverflow, mas não mais. Em geral, repito, a situação não é excepcional, você pode conviver com ela - aqui está, meu laptop pessoal no qual eu escrevo, está sobre a mesa ... é o wifi levantado por muitos funcionários, é celular como modem, em geral, se não é uma defesa / quaisquer serviços de três letras (aqui eu aconselho você a seguir maneiras caras e oficiais, como serão algumas das palavras abaixo) e não houver serviço de monitoramento de rádio, você poderá fazer qualquer coisa com seu laptop pessoal (dentro do permitido): pelo menos é assim que parece conosco. Existe a possibilidade de arrastar arquivos para o ambiente de desenvolvimento, mas eu realmente não gostei da decisão de manter node_modules na base de código e arregaçou as mangas (enrolei as mangas muitas vezes sobre mudar de TFS para git e sobre o repositório local de nuget, mas estas são histórias separadas, também não sem drama, mas sobre elas de alguma forma da próxima vez). Existem várias soluções bastante caras para o problema, é bem possível que eu consiga avançar com algum artefato, mas quando imaginei o quanto isso levaria e, o mais importante, quanto tempo seria decidido, coordenado e implementado, foi decidido agir de forma barata e com raiva.
Isenção de responsabilidade: como eu tinha um ambiente Windows, descrevo em detalhes exatamente o trabalho no console do Windows; no entanto, em essência, as diferenças só estarão no final quando você desejar aumentar o resultado final como um serviço / daemon.
Não Tomi, alma gêmea, como?
Na ação envolvida:
- Um computador com acesso à Internet - chame-o de origem
- Um computador sem acesso, em uma rede corporativa - chame-o de máquina de destino
Deve haver node.js na origem e na máquina de destino (a maneira mais fácil é se houver uma ou uma versão similar).
Crie um pai na fonte, em algum lugar e chame-o, por exemplo, verdaccio:
mkdir verdaccio cd verdaccio
Depois de instalar o Verdaccio localmente, isso é uma coisa muito útil, com base no antigo projeto sinopia. Leia mais aqui: https://verdaccio.org/ .
Em resumo, este é um proxy para o npm, que pode armazenar em cache. Para muitos usuários deste pacote, a principal oportunidade é a capacidade de publicar em particular, meu caso é um pouco diferente, eu queria armazenar em cache tudo o que preciso para trabalhar e um pouco mais e depois transferir tudo para a máquina de destino. Olhando para o futuro, direi que tudo correu bem sem dor, exceto pela transferência de nó-sass. Foi a raiz de seus tarballs que passei um dia e meio (há uma parte nativa que é carregada no github durante a instalação ou vai para o gyp, se não der certo, pense bem, ela será construída em cada máquina de desenvolvimento local, o que é completamente desconfortável), mas provavelmente outra história também.
Tudo é simples aqui:
npm i verdaccio
Em geral, o manual recomenda a instalação global, mas, na verdade, isso não é necessário; além disso, queremos localizar toda essa desgraça em uma pasta, para que mais tarde possa ser convenientemente copiada. Porque assim ...
Execute o pacote, ele criará o armazenamento e a configuração padrão:
.\node_modules\.bin\verdaccio.cmd

Então, todo mundo nos disse onde está a configuração, em qual porta estamos pendurados.
Em princípio, você já pode ir para o endereço especificado e ver algo assim:

Agora precisamos fazer algumas coisas:
Limpar npm-cache ( mais detalhes aqui , resumindo, elimine o conteúdo de % AppData% / npm-cache )
Executar
npm set registry http://localhost:4873/
Copie config.yaml para a nossa aconchegante pasta verdaccio
Verifique se a seção de uplinks desse arquivo se parece com isso:
uplinks: npmjs: url: https://registry.npmjs.org/ cache: true
No final da configuração, adicione:
listen: - 0.0.0.0:4873
Se isso não for feito, você não poderá acessar o endereço local posteriormente na máquina de destino.
Na verdade, estamos prontos, agora todos os pacotes que instalamos no npm install serão instalados em ./store, que é o que precisamos. Restauramos o projeto de destino, definimos adicionalmente:
npm i node-windows
Depois disso, pegamos a pasta e a enviamos para a máquina de destino da maneira que for possível (direitos de administrador são necessários lá, sim). Já é possível, você pode criar imediatamente um arquivo na raiz da pasta 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();
Lançamos:
node installservice.js
Aproveite!
Em geral, conseguimos um repositório local com muito pouco sangue, builds estão sendo construídos, desenvolvedores estão desenvolvendo tudo neste mundo em seus lugares. E sim, a sincronização subsequente se resume a copiar o conteúdo de ./store .
Tudo isso foi escrito em parte como um memorando e em parte para economizar tempo para você (é improvável que a tarefa seja resolvida com muita frequência), porque se uma flor de pedra não aparecer, sinta-se à vontade para escrever, há uma chance de eu esquecer de descrever algum tipo de detalhe e, se não esqueci, de repente, ajudarei ...