Supponiamo di avere un'applicazione NodeJS. Una versione potrebbe consistere in più passaggi:
- Test automatici e / o manuali
- distribuzione
- (se qualcosa va storto) Rollback all'ultima versione stabile
Ci sono alcuni requisiti desiderabili riguardo le dipendenze dell'applicazione:
- Una volta eseguito il test, si desidera distribuire esattamente la versione con cui si è verificato, incluse tutte le dipendenze.
- Lo stesso vale per i rollback: vuoi ripristinare non solo il tuo codice, ma anche tutte le dipendenze esterne.
La mia domanda riguarda le migliori pratiche per raggiungere questi obiettivi.
Qual è il modo consigliato per creare un'istantanea di tutte le dipendenze dell'applicazione NodeJS?
Ecco tre opzioni a cui posso pensare:
-
In questo articolo , l'autore consiglia di mettere la directory
node_modules
sotto il controllo del codice sorgente. (Non per tutti i moduli, ma solo per i moduli che verranno distribuiti.) -
Un'alternativa, che lo stesso articolo descrive come anti-pattern, consiste nell'usare il blocco della versione esplicita. La sua argomentazione sembra ragionevole: quando blocchi, ad esempio, Express in una certa versione, non puoi ancora controllare che una delle sue dipendenze non abbia introdotto un bug subtile, più tardi.
-
Semplicemente non ti interessa e usa sempre la versione più recente di tutti i moduli esterni.
I miei pensieri finora (ma non ho ancora molta esperienza con NodeJS):
- 3) sembra troppo avventato.
- Tendo a 1), ma non sono sicuro di dove mettere il
node_modules
. Quando lo controlli insieme al tuo codice normale, temo che flussi di lavoro comenpm link
ai tuoi moduli locali non funzionino più. Inoltre, c'è sempre il problema di fastidiosi conflitti di fusione.