Nós participamos da primeira edição da NodeConf da América Latina e nesse post vamos compartilhar com você o conteúdo da palestra de Kat Marchán, intitulada “NPM: beyond basic notions”.
Conhecendo o npm
O npm consiste muito mais em um kit de ferramentas para desenvolvimento do que somente um instalador de pacotes. Através do npm config é possível realizar uma série de tarefas, como efetuar o login/logout do npm.org para controlar pacotes próprios por exemplo. Enquanto isso, através de um arquivo .npmrc é possível ter acesso as configurações diretamente para uso no shell, interagindo automaticamente com o binário sem a necessidade de enviar parâmetros extras. Com o .npmrc, é possível ter configurações exclusivas para diferentes projetos em uso, o que torna a solução flexível para quando se possui diversos ambientes/projetos simultâneos. Através do npm config também são feitas configurações padrões com o comando para nomes de autoria, licença de software e outras informações.
Alguns comandos importantes
Com NPM dist-tag é possível gerar a nomenclatura de múltiplas releases do módulo, fazendo que seja possível gerar um branch release e outro testing, facilitando o controle de branchs diferentes na publicação dos módulos. Por padrão, o npm adicionará a tag @latest e é esta a versão baixada quando um módulo é instalado. O npm em si segue esse padrão no próprio npm, gerando tags conforme a necessidade de, tags chamadas next são usadas para controlar os próximos releases, permitindo os usuários a testarem as novas versões antes do lançamento oficial como latest que é considerada a versão stable (até mesmo a versão LTS possui uma versão next de upgrade).
NPM scripts
Usando npm scripts é possível gerar comandos extras após a chamada, que podem ser usados para, por exemplo, rodar testes e fazer limpeza de diretórios temporários. Os scripts possuem configurações da possível inicialização da app, com eles é possível rodar comandos de inicialização de publicação, rodar comandos extras para gerar o conteúdo estático e muitas outras possibilidades. Com npm scripts ‘preversion’ é possível agendar testes, assim, na hora de fazer um upgrade em uma versão de seu módulo, o upgrade será executado sem sua interação direta, aprovando ou não o upgrade de modo automatizado. É possível dizer que existem $PATHs específicos de módulos para os projetos, o que é especialmente útil quando existem diversos módulos no repositório global do servidor, facilitando a manutenção de múltiplos projetos com múltiplas versões dos mesmos módulos.
Dependências
As ferramentas do npm para gerenciamento de dependências, o comando npm shrinkwrap, criam a lista de dependências de uma app, gerando um arquivo chamado npm-shrinkwrap.json que pode ser lido para facilitar a reprodução do ambiente e, ao mesmo tempo, garantir versões específicas do módulo do projeto. O shrinkwrap não usa cache também, fazendo com que você sempre baixe os módulos do repositório em uma forma de reprodução mais real. Por não usar cache, o build completo pode falhar por causa de apenas um módulo que está nas dependências e falhou. Usando npm instal –save –save-bundle, o buildDependencies irá gerar o package.json quando se faz um npm publish, gerando uma redução no consumo da rede e reduzindo o tempo de instalação.
Controle
Para controlar os módulos de maneira mais prática em redes com velocidade baixa, é possível fazer um npm config get cache para verificar em qual diretório o cache está sendo armazenado, npm cache rm é usado para remover caches de módulos que você já baixou (os módulos nunca são removidos se não solicitado) e para limpar todos os módulos instalados, pode-se usar o comando npm cache clear. Com o npm install –cache-min=999999 é possível dizer para o npm que os últimos módulos instalados disponíveis devem ser usados.
Importante:
O npm deixou de suportar a versão v0.12 ou mais antigas, segue o padrão LTS, devendo manter o suporte a versões acima da v4.x na versão 3 dele. O processo de LTS é separado do NodeJS e segue padrões próprios, pois é parte de uma organização diferente. Ajudar a documentar o NPM lhe dá direito a meias exclusivas do projeto como forma de agradecimento. No momento a documentação se mantém somente em inglês.
O que você achou deste conteúdo?