node.js - Care este diferența dintre npm install --force și npm install --legacy-peer-deps?


Încerc să instalez node_modules pentru un proiect folosind npm install. Dar aceasta eșuează.

Jurnal de erori :

npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: [email 
npm ERR! Found: @angular/[email 
npm ERR! node_modules/@angular/compiler
npm ERR!   @angular/compiler@"~11.0.0" from the root project
npm ERR!   peer @angular/compiler@"11.0.9" from @angular/[email 
npm ERR!   node_modules/@angular/compiler-cli
npm ERR!     dev @angular/compiler-cli@"~11.0.0" from the root project
npm ERR!     peer @angular/compiler-cli@"^11.0.0" from @angular-devkit/[email 
npm ERR!     node_modules/@angular-devkit/build-angular
npm ERR!       dev @angular-devkit/build-angular@"~0.1100.0" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer @angular/compiler@"11.1.2" from @angular/[email 
npm ERR! node_modules/@angular/localize
npm ERR!   peerOptional @angular/localize@"^11.0.0" from @angular-devkit/[email 
npm ERR!   node_modules/@angular-devkit/build-angular
npm ERR!     dev @angular-devkit/build-angular@"~0.1100.0" from the root project
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR! 
npm ERR! See /Users/amit/.npm/eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/amit/.npm/_logs/2021-02-04T17_58_24_981Z-debug.log

Jurnalele sugerează să folosiți fie npm install --force, fie npm install --legacy-peer-deps

Vreau să înțeleg diferența de bază dintre npm install --force și npm install --legacy-peer-deps.

De asemenea, care dintre ele este mai preferabil de utilizat, doar în caz că performanța lui --force este mai bună decât --legacy-peer-deps sau invers?

Orice sugestii/sfaturi sunt foarte apreciate. Mulțumesc!

Răspuns #1

Diferențele dintre cele două sunt mai jos

--legacy-peer-deps : ignoră toate peerDependencies la instalare, în stilul versiunii npm 4 până la versiunea 6

--strict-peer-deps: eșuează și oprește procesul de instalare pentru orice peerDependencies conflictuale întâlnite. În mod implicit, npm se va opri din funcționare doar pentru conflictele de peerDependencies cauzate de dependențele directe ale proiectului rădăcină.

--forces : va forța npm să preia resursele de la distanță chiar dacă există o copie locală pe disc.