Executando verificação de segurança...
Em resposta a YARN, NPM ou PNPM?
1

Usei Yarn por muito tempo, atualmente uso apenas NPM.

Muita gente que usa o Yarn, ainda uso na versão 1.22 e se não me engano ele já está na versão 3. Isso pq da versão 1 para a 2, eles mudaram algumas coisas que fizeram muitos projetos com libs antigas pararem de buildar, por isso muita gente ainda se mantém na versão 1 (também chamada de versão clássica).

Tentei usar o NPMN, mas comecei a também ter problemas com builds e não quis ficar perdendo muito tempo nisso.

O NPM funciona bem, dificilmente você terá um problema com o build por conta dele. A desvantagem é o espaço em disco, nem chega a ser um problema tão grande assim, e também eu normalmente apago os diretórios de projetos que já estão no github e tem um tempo que não altero.

Carregando publicação patrocinada...
1

Estive em um projeto que só funcionava com npm install --legacy-peer-deps se fosse da forma comum npm install as libs quebravam, sabe dizer o porquê?

1

O comando npm install --legacy-peer-deps é usado para contornar a funcionalidade de instalação automática de peerDependency ao instalar pacotes. Ele diz ao NPM para ignorar as dependências de pares e instalar apenas o pacote.

No NPM v7+, por padrão, npm install falhará quando encontrar peerDependencies conflitantes. Isso não era assim antes. Se você já tem um peerDependency instalado, mas não com uma versão nomeada pelo módulo, então o NPM v7+ lançará um erro. Adicionar --legacy-peer-deps ignora esse novo requisito, com o risco de introduzir mudanças que quebram a funcionalidade.

Portanto, se o seu projeto estava quebrando com npm install, é provável que houvesse algum conflito de dependência que estava sendo ignorado com o uso de --legacy-peer-deps. Isso pode acontecer quando diferentes pacotes no seu projeto dependem de diferentes versões da mesma biblioteca. Com --legacy-peer-deps, o NPM ignora esses conflitos e prossegue com a instalação.

1

E uma vez usado o --legacy-peer-deeps, como tratar as peerdependecies manualmanente no package.json e nao precisar usar ele projeto?

Falo isso por quê na empresa subimos docker com legacy-peer-deps e vez ou outra temos que mudar versao na mao,corre o risco de quebrar algua feature no sistema..

1

Eu não sei se entendi sua pergunta, se você diz em deixar o "legacy-peer-deeps" ligado por padrão, você pode criar um arquivo .npmrc no mesmo nível de diretórios que o package.json e no conteúdo dele colocar:

legacy-peer-deps=true

Com isso não precisaria passar esse parâmetro ao npm install ou npm ci.
Mas novamente, não sei se entendi sua pergunta corretamente.

1

Bem, quero eu mesmo resolver as peer dependences para cada pacote.

Caso eu tenha um pacote com conflito de dependencias, basta criar uma peerDependencies com os pacotes listados no erro. Segue exemplo abaixo:

"peerDependencies": { "@angular/core": "^6.0.0" "@angular/core": "^7.0.0" }

Outra forma de adicionar a dependencia no projeto é executar o comando abaixo com a dependencia a ser adicionada e sua respectiva versão:

npm install --save-peer react^16.8.3 || ^17