Como Criar um Registro de Pacotes de NPM Privado com o Verdaccio – Modulos de Node JS
Muitas vezes usamos o mesmo código em programas diferentes. Para evitar copiar e colar a mesma coisa, uma boa prática é extrair o código e criar um novo pacote. Este então é adicionado como dependência dos projetos. Como cada projeto referencia o mesmo pacote, qualquer mudança do código repetido é refletida neles.
No ecosistema do JavaScript ou Node.js, é comum baixar pacotes de código aberto do registro público oficial, https://www.npmjs.com. Embora a publicação de pacotes de código aberto no registro público sirva para muitos dos casos, alguns preferem ter mais privacidade e deixar os pacotes como particulares ao seu projeto ou empresa. A companhia do NPM permite a publicação de pacotes privados, mas esses ficam armazenados em seus servidores. Além disso, quem estiver interessado na publicação de pacotes privados também têm que pagar uma quantia periódica à companhia do npm.
Para aqueles que desejam mais privacidade e o controle de como os seus pacotes são armazenados, recomenda-se a criação de um registro privado de NPM. Existe um registro de código aberto chamado Verdaccio. Ele próprio é um pacote de NPM e pode ser instalado globalmente com npm install --global verdaccio
. Para quem gosta de Docker, há uma imagem já pronta no DockerHub.
Neste curso usaremos a imagem de Docker para criar um container e rodar o Verdaccio de maneira conveniente.
Video Transcript
Olá pessoal, esse curso vai te ensinar a como criar o seu próprio registro privado de
NPM.
Mas por que criar um registro privado de NPM?
Bem, vamos imaginar o seguinte, que você tem um projeto, certo?
E no seu projeto há vários aplicativos.
No meu exemplo aqui, eu tenho dois aplicativos.
Eu não supo que tenha aplicativo 1 e aplicativo 2.
Aplicativo 1 é um aplicativo que usa JavaScript ou Node.js, depende se for cliente ou servidor.
Se for cliente, seria o JavaScript.
Se for servidor, seria chamado de Node.js.
Mas em ambos os casos, a gente usa o gerenciador de pacotes chamado NPM para poder instalar
dependências para utilizar código de terceiras, código de open source, ferramentas e tal.
Por exemplo, se você tem um aplicativo do lado do cliente, por exemplo, um web app
que usa biblioteca React, a gente usa o NPM para poder instalar, dentre outras coisas,
o pacote React.
A gente fala NPM e instala React.
E aí a gente pode usar o código do React no nosso aplicativo, no nosso projeto.
Bem, vamos supor que você tenha o seu projeto privado da sua companhia, do seu projeto pessoal
e você tem vários aplicativos como eu disse antes e certo código desses aplicativos é a mesma coisa.
Então, em vez de repetir o mesmo código no aplicativo 1, por exemplo, app1.js
e no aplicativo 2, app2.js, você poderia fazer o quê?
Você poderia extrair aquele código em um arquivo separado para que possa ser reutilizado em ambos o app1.js e app2.js.
Mas vamos suboquear uma separação entre esses dois aplicativos.
Por exemplo, se você usa o get, você poderia ter dois repositórios separados.
E aí, como é que vai fazer para você poder compartilhar esse código entre dois repositórios separados?
Esse que é o grande problema aqui.
Então, o ecossistema do Node.js
no ecossistema do Node.js predomina o gerenciador de pacotes chamado NPM.
Claro que tem o yarn também, mas iria dar no mesmo problema.
Então, normalmente, quando a gente precisa compartilhar código no ecossistema NPM,
a gente cria um pacote separado que a gente puxa como dependência através do NPM install.
Então, como é que seria a gente compartilhar o nosso código?
Bem, a gente poderia publicar o nosso código para o registro público do NPM, que é o padrão.
Esse aqui que eu estou na linha 11, na linha 12 tem esse link aqui.
Toda vez que você fala NPM install, o nome do pacote, ele vai bater lá no registro público,
que todo mundo tem acesso.
Registry.npm.js.org.
Se você ver aqui no site do NPM.js.org, aqui que ele vai parar.
Por exemplo, React, né?
O pacote do React é público. Qualquer pessoa pode baixar e estar aqui o React, né?
E tem um código e tal e tal.
Agora, a gente poderia compartilhar o nosso código com todo mundo,
mas há instâncias em que você quer deixar isso privado.
Bem, o NPM permite você fazer pacotes privados, mas o problema é que
o seu pacote privado vai ter que ser publicado através do próprio NPM.js.com, que é um site comercial.
Então, eles cobram, você clicar em price no preço, eles cobram, por exemplo,
no mais barato, sete dólares por mês, só para você ter a funcionalidade,
a capacidade para poder publicar um pacote privado.
E esse pacote privado vai ficar no servidor deles, certo?
Então, se você não quiser pagar, é por isso que eu estou fazendo essa aula.
Então, a gente não vai pagar sete dólares por mês, a gente vai fazer o nosso próprio registro privado,
que só as pessoas que estão trabalhando no nosso projeto terão acesso,
que só as pessoas do seu projeto, das suas companhias, terão acesso.
Ninguém mais terá acesso, porque você quer tornar esse código,
essa peça de código, a ser compartilhada como algo privado que somente você tem acesso.
Então, por isso que a gente vai criar o próprio registro privado de NPM.
Então, para poder criar isso, na verdade, é bem simples hoje em dia, porque?
Porque já tem um registro, um aplicativo que serve como registro.
Se eu for nesse site que verdatio.org, verdadeio,
v-r-d-a-c-c-i-o.org.
Então, o verdade é um aplicativo de registro que a gente pode usar como registro privado.
Você pode dar uma olhada aqui.
Você pode instalar o verdade através do NPM, na verdade, é um pacote público de NPM.
Mas o que é que eu vou fazer aqui nesse curso?
Eu vou usar o Docker, uma imagem de Docker para poder criar um container
e rodar o verdade sem nenhum boilerplate.
Eu não quero fazer muita coisa só para fazer isso funcionar.
Por isso que eu vou usar uma imagem de Docker.
Então, a gente vai usar o Docker.
O Docker nos permite empacotar de certa maneira de falar certas aplicativas, certos serviços,
dentro de uma imagem que a gente pode baixar.
E da imagem, a gente cria um container.
E o container vai rodar na sua máquina.
E já vai estar tudo configurado em termos de infraestrutura.
Porque a imagem do Docker já vem em todos os comandos para poder estabelecer a infraestrutura
necessária para poder rodar aquele aplicativo.
E para poder achar essa imagem do Docker, você pode ir no Docker Hub,
hub.docker.com e dar uma busca por verdácio.
Qualquer maneira que você queira falar.
E tem imagem aqui do verdade, barra-verdácio.
Essa é a imagem que a gente vai usar.
E essa imagem é a que a gente pode criar um container.
Ele já vai rodar que o aplicativo, você tem um aplicativo do navegador,
aplicativo web que já te mostra a interface.
É como se fosse um equivalente do npm.js.org na busca lá pelos pacotes.
Tá bom? Então essa foi a introdução.
E eu te vejo na próxima, onde a gente vai começar a pôr a mão na massa.