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ê?
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.
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..
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.
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