Il check in node_module era lo standard della community, ma ora abbiamo anche un'opzione per usare shrinkwrap. Quest'ultimo ha più senso per me, ma c'è sempre la possibilità che qualcuno abbia "forzato la pubblicazione" e introdotto un bug. Ci sono ulteriori svantaggi?Check in node_modules vs. shrinkwrap
risposta
Il mio post preferito/filosofia su questo argomento va tutto il viaggio di ritorno (a lungo nel terreno node.js) al 2011:
https://web.archive.org/web/20150116024411/http://www.futurealoof.com/posts/nodemodules-in-git.html
Per citare direttamente:
Se avete un'applicazione, che distribuite, controllate tutte le vostre dipendenze su node_modules. Se si utilizza npm do deploy, solo definire bundleDependencies per quei moduli. Se hai delle dipendenze che devono essere compilate, dovresti comunque controllare il codice ed eseguire la ricostruzione di $ npm su deploy.
Tutti quelli che ho detto anche questo mi dice che sono un idiota e poi qualche settimana dopo mi dice che avevo ragione e controllo node_modules in a Git è stata una benedizione per l'implementazione e lo sviluppo. È obiettivamente migliore, ma ecco alcune delle domande/lamentele che mi sembra di avere.
Penso che questo sia ancora il miglior consiglio.
Lo scenario di pubblicazione forzata è raro e probabilmente lo npm shrinkwrap
funzionerà per la maggior parte delle persone. Ma se stai distribuendo in un ambiente di produzione, niente ti dà la tranquillità come controllare l'intera directory node_modules
.
In alternativa, se davvero, davvero non si desidera controllare nella directory node_modules
, ma vuoi un migliore garanzia non c'è stata una spinta forzata, mi piacerebbe seguire il consiglio in npm help shrinkwrap
:
Se si desidera evitare qualsiasi rischio che un autore bizantino sostituisca un pacchetto che si sta utilizzando con un codice che interrompe l'applicazione, è possibile modificare il file shrinkwrap per utilizzare i riferimenti URL git piuttosto che i numeri di versione in modo che npm recuperi sempre tutti i pacchetti da git.
Certo, qualcuno potrebbe eseguire uno strano git rebase
o qualcosa e modificare un git commit hash ... ma ora siamo solo pazzo.
npm FAQ risponde direttamente questo:
- check node_modules in git per le cose che distribuisce, come siti web e applicazioni .
- Non controllare node_modules in git per le librerie ei moduli destinati a essere riutilizzati.
- Utilizzare npm per gestire le dipendenze nell'ambiente dev, ma non negli script di distribuzione.
citato da npm FAQ
Anche le domande frequenti possono cambiare. Ora si legge: "Per i pacchetti che distribuisci, come siti Web e app, dovresti usare npm shrinkwrap per bloccare l'albero delle dipendenze completo". – Johann
- 1. npm shrinkwrap modulo estraneo
- 2. String vs appartenenza check list
- 3. VS & TFS: check-in come nuovo ramo
- 4. node_modules centralizzati
- 5. Tridion annullare check-out/check-in
- 6. Non ignorare node_modules in Atom
- 7. Come utilizzare node_modules in Electron
- 8. Debugger Salto Ultimo codice check-in in VS 2012 - Funziona con VS 2010
- 9. Errore: impossibile trovare il modulo npm-shrinkwrap
- 10. tsc escluso node_modules
- 11. Come vedere un contenuto di file in Shrinkwrap
- 12. check database in JPA
- 13. $ null check in velocity
- 14. Modifica posizione node_modules
- 15. Webpack non escluso node_modules
- 16. Check-in in contesto incoerente
- 17. Percorso di script per ExpressJS in node_modules
- 18. non è in grado di installare node_modules
- 19. Esegui test unità prima del check-in
- 20. Git - Ignora node_modules cartella ovunque
- 21. Modifica la posizione della cartella node_modules
- 22. Perché non check in AssemblyInfo.cs
- 23. connettività Internet check-in Android
- 24. npm node_modules non correttamente nidificati?
- 25. webpack - require ('node_modules/leaflet/leaflet.css')
- 26. Arquillian: Crea un WebArchive da una guerra esistente usando ShrinkWrap
- 27. PHP Check Process ID
- 28. Clojure not nil check
- 29. Errore di politica di check-in con VS 2012 e TFS 2010 - CheckForWarningsPolicy
- 30. iPhone UIScrollView Speed Check
Ad oggi tale collegamento è rotto (500 errore): ecco un [Archivio] (https://gist.github.com/3854887) (gist.github. it/3854887) di questo post. – Sukima
@Sukima Credo che il link sia attivo e funzionante di nuovo. – Kostia
Se gli autori rimuovono i loro pacchetti, cosa che accade, allora 'shrinkwrap' non sarà di aiuto. –