Sprawdzanie w module node_module było standardem wspólnotowym, ale teraz mamy również opcję użycia shrinkwrap. Ta druga ma dla mnie więcej sensu, ale zawsze istnieje szansa, że ktoś "wymusił publikację" i wprowadził błąd. Czy są jakieś dodatkowe wady?Sprawdź moduł node_modules vs. shrinkwrap
Odpowiedz
Mój ulubiony post/filozofia na ten temat idzie całą drogę powrotną (długi czas w node.js gruntu) do 2011 roku:
https://web.archive.org/web/20150116024411/http://www.futurealoof.com/posts/nodemodules-in-git.html
Cytując bezpośrednio:
Jeśli masz aplikację, którą wdrażasz, sprawdzasz wszystkie zależności w module node_modules. Jeśli używasz npm do wdrożenia, definiuj tylko bundleDependencies dla tych modułów. Jeśli masz zależności, które wymagają kompilacji, powinieneś sprawdzić kod i po prostu uruchomić ponowne odtworzenie $ npm podczas wdrażania.
Każdy, kogo powiedziałem, mówi mi, że jestem idiotą, a kilka tygodni później mówi mi, że miałem rację, a sprawdzenie modułu node_modules było błogosławieństwem dla wdrożenia i rozwoju. Jest obiektywnie lepszy, ale oto niektóre z pytań/skarg, które wydaje mi się uzyskać.
Myślę, że to wciąż najlepsza rada.
Scenariusz force-publish jest rzadki i prawdopodobnie większość osób będzie pracowała pod npm shrinkwrap
. Ale jeśli wdrażasz środowisko produkcyjne, nic nie daje ci spokoju ducha, jak sprawdzanie w całym katalogu node_modules
.
Alternatywnie, jeśli naprawdę nie chce, by sprawdzić w katalogu node_modules
ale chcą lepszą gwarancję, że nie był zmuszony Push, będę stosować się do zaleceń w npm help shrinkwrap
:
Jeśli chcesz uniknąć ryzyka, że autor bizantyjski zastąpi pakiet, którego używasz z kodem, który łamie twoją aplikację, możesz zmodyfikować plik shrinkwrap, aby używał referencji do URL-a git zamiast numerów wersji, aby npm zawsze pobierał wszystkie pakiety z git.
Oczywiście, ktoś może uruchomić dziwne git rebase
lub coś w tym stylu i zmodyfikować hash zatwierdzenia git ... ale teraz po prostu wariujemy.
npm FAQ bezpośrednio odpowiada na to:
- Sprawdź node_modules do git do rzeczy, wdrażanie, takich jak strony internetowe i aplikacji.
- Nie sprawdzaj modułu node_modules w git dla bibliotek i modułów przeznaczonych do ponownego użycia.
- Użyj polecenia npm do zarządzania zależnościami w środowisku dev , ale nie w skryptach wdrażania.
cytowane z npm FAQ
Nawet najczęstsze pytania mogą się zmienić. Teraz brzmi: "W przypadku pakietów, które wdrażasz, takich jak witryny i aplikacje, powinieneś użyć npm shrinkwrap, aby zablokować pełne drzewo zależności". – Johann
- 1. node_modules spowolnić VS 2017 IDE
- 2. TypeScript: import zewnętrzny moduł z node_modules
- 3. npm kurczliwe obce moduł
- 4. Zmień lokalizację folderu node_modules
- 5. Sprawdź, czy dostępny jest moduł node.js
- 6. Jak wyświetlić zawartość pliku w shrinkwrap
- 7. Klasa vs pakiet vs moduł vs komponent vs kontener kontra serwis vs platforma w świecie Java
- 8. nie mógł zainstalować node_modules
- 9. tsc nie wykluczając node_modules
- 10. Webpack nie wyłączając node_modules
- 11. .gitignore nie ignoruje node_modules
- 12. Python używa globalnego vs określając moduł
- 13. Klasa vs Moduł w projektowaniu API Ruby?
- 14. Moduł Operator vs zero (re: Source arc4random_uniform)
- 15. Importowanie modułów: __main__ vs import jako moduł
- 16. fsevents (wciągnięty przez chokidar) w npm shrinkwrap powoduje, że kompilacja kończy się niepowodzeniem na Windows
- 17. Sprawdź poprawność sesji: isRequestedSessionIdValid() vs getSession (fałsz)
- 18. Git - Ignoruj node_modules folderu wszędzie
- 19. Konfigurowanie odczytu requirejs z node_modules
- 20. Nie ignoruj node_modules w Atom
- 21. Arquillian: Utwórz WebArchive z istniejącej wojny za pomocą ShrinkWrap
- 22. Android Studio: „Nowy moduł -> import istniejący projekt” vs. „moduł import”
- 23. Błąd: EPERM: operacja niedozwolona, odłączenie "D: \ Sources \ ** \ node_modules \ fsevents \ node_modules \ abbrev \ package.json"
- 24. WebPACK - Jak rozwiązać moduł rekurencyjnie
- 25. npm node_modules nie jest poprawnie zagnieżdżony?
- 26. Atom wyklucz folder node_modules z wyszukiwania
- 27. Co to jest katalog node_modules w AngularJS?
- 28. Dlaczego skrytka git usuwa mój folder node_modules?
- 29. grunt: możliwe przeniesienie "node_modules" dla wtyczek?
- 30. Moduł Npm instaluje Visual Studio Error
dzień dzisiejszy, że link jest uszkodzony (błąd 500), tak tutaj jest [archiwum] (https://gist.github.com/3854887) (gist.github. com/3854887) tego posta. – Sukima
@Sukima Wierzę, że łącze działa i działa. – Kostia
Jeśli autorzy usuwają swoje paczki, co się dzieje, "shrinkwrap" nie pomoże. –