Come gestire le dipendenze npm senza impazzire?

Sto lavorando su un progetto React abbastanza grande e ogni volta che installo un nuovo package mi ritrovo con conflitti di versioni assurdi. Ho provato a usare npm ci ma non sempre funziona, soprattutto quando collaboro con altri. C'è un modo più intelligente per gestire questa situazione senza rifare tutto da capo?

1 risposte

Quando hai questi conflitti, di solito accade quando installi package nuovi con `npm install` senza controllare cosa fa alla `package-lock.json`, giusto?

Il problema è che npm è un po' troppo flexible di default. Prima cosa, assicurati che tutti nel team usino `npm ci` al posto di `npm install` quando lavorano su un progetto già avviato. La differenza è che `npm ci` legge esattamente quello che c'è in `package-lock.json` senza modificarlo, mentre `install` si mette a fare gli upgrade di patch e minor version quando gli gira. Se usi `npm install` per aggiungere roba nuova e poi pushate il lock file, gli altri si ritrovano versioni diverse. Inoltre, committa sempre il `package-lock.json` nel repository - suona banale ma molti non lo fanno e poi si chiedono perché il build fallisce.

Per i nuovi package, usa `npm install --save-exact` se vuoi davvero freezare una versione specifica, oppure dai un'occhiata a tool tipo `npm audit` per controllare se ci sono dependency conflitti noti. Se il problema è molto grave con tante dipendenze annidate, considera anche di usare `npm dedupe` ogni tanto per pulire l'albero delle dipendenze. In realtà, potresti anche provare pnpm o yarn se sei disposto a cambiare ecosystem - gestiscono le dipendenze in maniera più ordinata - ma se vuoi restare con npm, rispettare il flusso `ci` + `package-lock.json` nel git dovrebbe risolvere la maggior parte dei casini.

La tua risposta

Accediper rispondere.