Você deve submeter a pasta node_modules para Git?

O JavaScript Full-Stack Bootcamp 2021 está ABERTO PARA SINALIZAÇÕES!

Você deve submeter a pasta node_modules para Git?

>

Eu menciono Git mas o mesmo se aplica a qualquer sistema de controle de versão que você usa

É uma boa pergunta a ser feita. Existem prós e contras.

Eu sugiro que o padrão seja não submeter a pasta de módulos_nó, e em vez disso adicione-a ao seu arquivo..gitignore>

Você pode ter necessidades especiais que revertam esta decisão.

Eu discuto o tópico para que você possa fazer sua própria opinião.

Aqui estão alguns argumentos a favor de não submeter módulos_nó

Você mantém seu histórico do Git limpo. Quando você adiciona um novo pacote, você armazena o arquivo package.json e package-lock.json alterações. Quando você decide atualizar a versão do pacote, tudo que você armazena é o arquivo package-lock.json alterações.

package-lock.json é uma característica relativamente nova do npm, que torna obsoleto o comando shrinkwrap usado no passado

Você evita ter que colocar possivelmente centenas de MB de dependências em seu repositório, e isso significa que com o tempo será mais rápido de se trabalhar com ele. Trocar de branches e verificar o código são 2 operações enormemente afetadas pelo tamanho do repositório.

Quando você trabalha com branches, você pode ter conflitos de merge que vão além do seu código, e ao invés disso, envolvem o código de dependências. Isto não é agradável de se lidar e pode fazer você perder muito tempo. Evitar colocar

Uma solicitação de pull ou merge se mudar as dependências, vai ter muito mais arquivos envolvidos no processo. Ferramentas tornam-se mais lentas ou mesmo decidem não mostrar o diff completo (GitHub, por exemplo)

Módulos de nós nativos precisam ser recompilados se você implantar em uma plataforma diferente da sua máquina de desenvolvimento (caso de uso comum: você desenvolve no Mac, implanta no Linux). Você precisa chamar npm rebuild, o que tira o servidor do sync.

Não submeter módulos_de nó implica que você precisa listar todos os seus módulos em package.json (e package-lock.json) como um passo obrigatório. Isto é ótimo porque você pode não ter a diligência de fazê-lo, e algumas das operações npm podem quebrar se você não o fizer.

Tip: não há necessidade de usar a versão específica no seu arquivo package.json, não mais desde a introdução do arquivo package-lock.json.

Se você usar conjuntos separados dependencies e devDependencies, ao submeter a pasta node_modules você está basicamente submetendo o devDependencies e não há nenhuma maneira (fácil) para o build de produção se livrar deles.

Razões que podem levar você a submeter módulos_de_nó, e como mitigá-los

Um pacote npm pode ser removido pelo seu autor do registro do npm. Isso aconteceu com o famoso left-pad incidente em 2016 (leia mais). Isto é muito raro acontecer com pacotes populares. Se isso acontecer, você pode não ter mais acesso a essa funcionalidade em particular.

Você também pode argumentar que npm não é garantido ficar por aí indefinidamente, ele pode desaparecer, então uma maneira fácil de garantir ter o código completo de sua aplicação no futuro é comprometê-la junto com sua aplicação.

A cada vez que você usar um pacote, crie um garfo no GitHub. De vez em quando, mantenha-o atualizado com a origem (pode ser automatizado).

Isso nem sempre é prático, pois os pacotes podem ter dezenas de dependências próprias.

Você pode usar um servidor de repositório privado para o seu projeto, e usar isso para hospedar todas as suas dependências.

Options include

  • sinopia
  • npm_lazy
  • npm-lazy-mirror
  • artifactory
  • npm Enterprise, da empresa npm

Outra razão para cometer as dependências é a capacidade de editar rapidamente o código, se você encontrar um bug ou se você quiser adicionar algo a uma biblioteca.

Esta é uma espada de dois gumes: se você fizer isso, você perde a habilidade de atualizar o pacote se novos lançamentos forem feitos, e é apenas bom para correções rápidas e temporárias.

A solução ideal é ou submeter um PR que faça o que você quer para o projeto original ou forká-lo e usar seu garfo como uma dependência.

Download my free Node.js Handbook

O JavaScript Full-Stack Bootcamp 2021 AGORA ABERTO PARA SIGNIFICAR ATÉ TERÇA-FEIRA! Não perca esta oportunidade, inscreva-se HOJE!

Outros tutoriais de nó:

  • Como usar promessas e aguardar com as funções baseadas no Node.js callback
  • Os Módulos do Núcleo do Nó
  • Partilhando JSON com Nó.js
  • Trabalhar com descritores de arquivo no Nó
  • Nó.js Streams
  • Como obter a data da última atualização de um arquivo usando Nó.js
  • O Guia do Pug
  • Abter a pasta atual no Nó
  • Como usar o Nó.js REPL

Deixe uma resposta

O seu endereço de email não será publicado.