Executando verificação de segurança...
1

Gerenciamento de Dependencias, e raiva com node e yarn

Olá a todos.

A maioria das vezes, como desenvolvedores precisamos usar software de terceiros para construir nossos software. Isso é o que chamados de dependência.

Usamos as dependencias para facilitarmos nossa vida como desenvolvedores e para facilitarmos ainda mais, usamos repositorio da onde acessamos com gerenciadores de pacotes.

Seu sistema operacional também usa gerenciadores de pacotes:

Aka Windows:
- Winget, Chocolatey

Aka Linux:
- Apt, Emerge, Pacman

Aka MacOSX:
- HomeBrew

O motivo de eu colocar raiva com node e yarn é apenas um: Node_Modules

Essa pasta vai aparecer em todos, absolutamente Todos os seus projetos em JS e não apenas isso ela vai "DUPLICAR" todos os componentes que você baixou mesmo se tiver baixado em outro projeto.

Porque ter raiva disso?

Linguagens como Go, C, Cpp, Python. Usam uma tatica inteligente diferente. Eles colocam seus módulos e dependencias no PATH do sistema operacional então podem reaproveitar o código sem gerar uma nova dependencia, apenas adicionar no arquivo de dependencias do projeto.

Carregando publicação patrocinada...
1

o rant é por causa da node_modules por conta do espaço que ocupa ou pq tem que instalar sempre que vai usar?

tanto yarn quanto npm tem um cache local na sua maquina, não necessariamente o gerenciador de dependencias vai baixar o pacote novamente

1

O Ryan Dahl fala exatamente disso ao explicar por que decidiu construir o Deno: https://www.youtube.com/watch?v=M3BM9TB-8yA

Duplicações em outros gerenciadores de pacotes são bem comuns. Ter uma base centralizada de pacotes é uma inovação, e pode ser um problema se você tem dois projetos que precisam ter certas versões diferentes de pacotes, e isso não é explícito na resolução global.

O Pip não trabalha centralizado se você usa um virtualenv, que é a preferência de desenvolvedores para projetos. Ou seja, contempla duplicação de pacotes.

Só acho a raiva justificável se esses pacotes ocupassem gigabytes de espaço, o que pode acontecer apenas em projetos Node.js. Em nenhum outro gerenciador de pacotes a árvore de dependências expande facilmente em milhares de pacotes.

Hoje em dia 1Gb custa um centavo de dólar. https://www.backblaze.com/blog/hard-drive-cost-per-gigabyte/

1

O virtualenv tem uma pequena diferença, ele só presta na hora do desenvolvimento do app para isolar as dependencias que serão usadas no requirement.txt, porém se outra pessoa for usar o pip install -r requirements.txt. Os módulos serão instalados apenas 1 vez no Path do sistema