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 arquivopackage-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