Devi impegnare la cartella node_modules in Git?

Il 2021 JavaScript Full-Stack Bootcamp è ORA APERTO PER LE ISCRIZIONI!

Devi impegnare la cartella node_modules in Git?

Ho menzionato Git ma lo stesso vale per qualsiasi sistema di controllo della versione che ti capita di usare

È una buona domanda da fare. Ci sono pro e contro.

Io suggerisco di non fare il commit della cartella node_modules, e invece aggiungerla al tuo file .gitignore.

Potresti avere esigenze speciali che invertono questa decisione.

Discuto l’argomento in modo che tu possa farti la tua opinione.

Ecco alcuni argomenti a favore del non fare il commit di node_modules

Tieni la tua storia Git pulita. Quando aggiungi un nuovo pacchetto, memorizzi i cambiamenti dei file package.json e package-lock.json.Quando decidi di aggiornare la versione del pacchetto, tutto ciò che memorizzi è il cambiamento del file package-lock.json.

package-lock.json è una caratteristica relativamente nuova di npm, che elimina il comando shrinkwrap usato in passato

Eviterai di dover mettere centinaia di MB di dipendenze nel tuo repository, e questo significa che nel tempo sarà più veloce lavorarci. Passare da un ramo all’altro e controllare il codice sono 2 operazioni enormemente influenzate dalla dimensione del repository.

Quando si lavora con i rami, si possono avere conflitti di fusione che si estendono oltre il proprio codice, e invece, coinvolgono il codice delle dipendenze. Questo non è bello da affrontare e potrebbe farvi perdere molto tempo. Evitare di mettere

Una richiesta di pull o merge se si cambiano le dipendenze, avrà molti più file coinvolti nel processo. Gli strumenti diventano più lenti o addirittura decidono di non mostrare la diff completa (GitHub, per esempio)

I moduli node nativi devono essere ricompilati se si distribuisce su una piattaforma diversa dalla macchina di sviluppo (caso d’uso comune: si sviluppa su Mac, si distribuisce su Linux). Devi chiamare npm rebuild, che porta il server fuori sincronia.

Non impegnare node_modules implica che devi elencare tutti i tuoi moduli nel package.json (e package-lock.json) come passo obbligatorio. Questo è ottimo perché potresti non avere la diligenza di farlo, e alcune operazioni di npm potrebbero rompersi se non lo fai.

Tip: non c’è bisogno di usare la versione specifica nel tuo file package.json, non più dall’introduzione del file package-lock.json.

Se usi insiemi dependencies e devDependencies separati, facendo il commit della cartella node_modules stai fondamentalmente facendo il commit della devDependencies e non c’è un modo (facile) per la build di produzione di liberarsene.

Ragioni che potrebbero portarti a fare il commit di node_modules, e come mitigarle

Un pacchetto npm potrebbe essere rimosso dal suo autore dal registro di npm. È successo con il famoso incidente left-pad nel 2016 (leggi). Questo è molto raro che accada per i pacchetti popolari. Se questo accade, potreste non avere più accesso a quel particolare pezzo di funzionalità.

Potreste anche sostenere che npm non è garantito che rimanga in giro all’infinito, potrebbe scomparire, quindi un modo semplice per garantire di avere il codice completo della vostra applicazione in futuro è di fare il commit insieme alla vostra app.

Ogni volta che usate un pacchetto, create un fork su GitHub. Ogni tanto, tienilo aggiornato con l’origine (può essere automatizzato).

Questo non è sempre pratico perché i pacchetti possono avere decine di loro dipendenze.

Puoi usare un server repository privato per il tuo progetto, e usarlo per ospitare tutte le tue dipendenze.

Le opzioni includono

  • sinopia
  • npm_lazy
  • npm-lazy-mirror
  • artifactory
  • npm Enterprise, dalla società npm

Un’altra ragione per impegnare le dipendenze è la possibilità di modificare rapidamente il codice, se si trova un bug o se si vuole aggiungere qualcosa a una libreria.

Questa è un’arma a doppio taglio: se lo si fa, si perde la possibilità di aggiornare il pacchetto se vengono fatte nuove versioni, ed è buono solo per correzioni veloci e temporanee.

La soluzione ottimale è quella di inviare un PR che faccia quello che vuoi al progetto originale o fare un fork e usare il tuo fork come dipendenza.

Scarica il mio manuale gratuito di Node.js

Il JavaScript Full-Stack Bootcamp 2021 è ora aperto per le iscrizioni fino a martedì prossimo! Non perdere questa opportunità, iscriviti OGGI!

Altri tutorial su node:

  • Come usare promesse e await con le funzioni basate su callback di Node.js
  • I moduli core di Node
  • Parlano JSON con Node.js
  • Lavorare con i descrittori di file in Node
  • Flussi di Node.js
  • Come ottenere la data dell’ultimo aggiornamento di un file usando Node.js
  • La guida Pug
  • Ecco la cartella corrente in Node
  • Come usare il REPL di Node.js

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.