Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gerenciador de dependência com NPM

Avatar for BIANCA BIANCA
February 17, 2020

Gerenciador de dependência com NPM

Apresentação base sobre o conceito de gerenciadores de dependência + usando gerenciador de dependencia para Javascript, o NPM.

Avatar for BIANCA

BIANCA

February 17, 2020
Tweet

More Decks by BIANCA

Other Decks in Programming

Transcript

  1. Dependências são códigos desenvolvidos para resolver algum problema comum de

    outras pessoas desenvolvedoras, facilitar a nossa vida. Podem ser frameworks, bibliotecas, pacotes, plugins etc em qualquer linguagem!
  2. Alguns exemplos são a biblioteca Math.h de funções matemáticas do

    C ou a própria biblioteca React, para desenvolvimento web. As dependências são essenciais quando pensamos em projetos grandes e complexos, ajudando a resolver alguns problemas: 1. Não precisar reinventar a roda 2. Códigos mais simples, menos complexos 3. Desenvolvimento mais rápido e focado 4. Reutilização de código
  3. Blz, e o gerenciador de dependência? Ferramenta que ajuda a

    instalar, atualizar e remover bibliotecas de forma simples & automatizada
  4. Com o gerenciador de dependência conseguimos então resolver vários outros

    problemas: 1. Não precisar reinventar a roda 2. Códigos mais simples, menos complexos 3. Desenvolvimento mais rápido e focado 4. Reutilização de código 5. Atualização das novas versões de dependências 6. Atualização e gerenciamento dependências das dependências 7. Ambiente de desenvolvimento facilmente replicável nas máquinas 8. Origem dessas dependências são seguras e confiáveis
  5. Os gerenciadores de dependência utilizam arquivos de configuração para cada

    projeto. Nesses arquivos são listadas as informações do projeto, versão atual e suas dependências utilizadas.
  6. O NPM, que é o gerenciador javascript de pacotes, utiliza

    um arquivo de configuração chamado package.json Podemos criá-lo com um editor de texto ou por linha de comando
  7. É um formato de arquivo amplamente utilizado por ser fácil

    de ser, manusear programaticamente, leve e rápido para ser trocado entre sistemas json____ { “titulo”: “JSON x XML”, “descricao”: “o duelo de dois modelos”, “ano”: 2012, “genero”: [“aventura”, “ação”, “ficção”] }
  8. Quando executado o comando npm init, o package.json é criado

    e algumas informações do projeto são pedidas: • name é o nome do projeto • version é a versão inicial do projeto • description breve resumo sobre o que é o projeto • dependencies lista de dependência que o projeto utiliza • author quem criou o projeto • license informa as outras pessoas o que podem fazer com o seu código * Quando você não colocar nada, o valor default será adicionado nos campos!
  9. O diretório /node_modules criado no projeto é onde o npm

    salva as dependências que foram instaladas até então node_modules
  10. Geralmente o formato das versões de uma dependência são composto

    por “MAJOR.MINOR.PATCH” • MAJOR é a versão com alterações incompatíveis com a versão anterior • MINOR é a versão com adição de novas funcionalidades de maneira compatível com a versão anterior • PATCH é a versão incrementada quando tiver correções de bugs
  11. Isso significa que PATCHes são correções de bugs e MINORs

    adicionam novos recursos, mas nenhum deles quebra o que funcionava antes. Já os MAJORs adicionam alterações que não funcionam com versões anteriores.
  12. "package": "~MAJOR.MINOR.PATCH" ~ adicionado na versão do package fixa o

    MAJOR.MINOR da dependência e busca atualizações somente para os PATCHes Ou seja, não quebra o projeto por incompatibilidade de versão anterior mas também não perde as correções de bugs
  13. "package": "^MAJOR.MINOR.PATCH" ^ permite a atualização do MINOR.PATCH da dependência,

    fixando sempre a versão do MAJOR. Ou seja, não quebra o projeto por incompatibilidade de versão anterior mas também não perde as novas features e as correções de bugs
  14. É um campo do package.json que permite configurar dependências que

    utilizamos só no ambiente de desenvolvimento devDependencies____ "devDependencies": { "eslint": "^6.4.0", "mocha": "^6.2.0", }