:sparkles: PWA :sparkles:
Twarz autora bloga

Piotr Kowalski

Organizator WarsawJS Trener YouTuber

Dlaczego nie dodajemy do repozytorium Git katalogu node_modules?


Poszukujecie odpowiedzi na pytanie, dlaczego nie dodajemy katalogu node_modules do repozytorium i dlaczego nie push-ujemy go do origina jakiś przeważnie jest GitHub? Odpowiedź w dalszej części.

Baner reklamujący artykuł

Co to jest node_modules?

Katalog node_modules przechowuje wszystkie zainstalowane zależności projektu. Zawiera również zależności zależności.

W dużych projektach, ten katalog może ważyć dużo megabajtów.

Dlaczego NIE DODAJEMY node_modules do repozytorium?

  1. Bo dużo waży - szkoda, pobierać tyle MB podczas klonowania projektu
  2. Nie chcemy wersjonować czyjegoś kodu - aktualizacja paczek wymusiła by na nas mnóstwo zmian w projekcie
  3. Kamil Gajowy napisał w swoim komentarz, że biblioteki raz zainstalowane i przechowywane w node_modules na systemie X, mogą nie działać na systemie Y, co może doprowadzić do wielu trudnych do rozwiązania błędów
  4. Podczas tworzenia nowego kodu i jednoczesnego dodawania bibliotek / aktualizowania ich, widzimy w jednej rewizji nasze zmiany, ale także mnóstwo innych, które nic nie wnoszą do sensu aplikacji

…w skrócie:

Nie wrzucamy katalogu node_modules na GitHuba.

:beginner: Jak się zabezpieczyć?

Zaraz po stworzeniu projektu, tj. po stworzeniu pliku package.json, należy stworzyć plik .gitignore, w którym wpisujemy katalog node_modules/.

Wskazówka

Zawsze dodaję slash na końcu linijki z katalogiem, dzięki czemu wiem, że mam do czynienia z katalogiem, a nie z plikiem.

Co zrobić, gdy już dodało się katalog node_modules do repozytorium?

  1. Usunąć katalog node_modules z dysku komputera, np. rm -rf node_modules
  2. Dodać plik .gitignore w katalogu głównym projektu
  3. Dopisać w tym pliku linijkę node_modules/
  4. Stworzyć rewizję (commit), np. git commit .gitignore -m "Ignore node_modules"

Od teraz możemy śmiało instalować zależności!

Kiedy warto dodać katalog node_modules do repozytorium?

W swojej historii poznałem dwa przypadki:

  1. Kiedy chcemy przyspieszyć proce deploymentu i nie pobierać za każdym razem zależności projektu.
  2. Kiedy proces deploymentu nie posiada dostępu do ściągania danych.

Na blogu istnieje artykuł, w którym kiedyś napisałem, dlaczego nie wolno dodawać katalogu .idea do repozytorium - warto przeczytać.