2013-10-11 9 views
9

Kiedy tworzę projekt angularjs zDlaczego folder node_modules nie jest zatwierdzony do Git?

yo angular 

tworzy node_modules/katalog, ale stawia ten katalog w .gitignore. Kiedy indziej sklonować projekt i uruchomić

grunt server 

uzyskać

Fatal error: Unable to find local grunt.

If you're seeing this message, either a Gruntfile wasn't found or grunt hasn't been installed locally to your project. For more information about installing and configuring grunt, please see the Getting Started guide:

podręcznej instrukcji nic nie mówi o tym, jak poradzić sobie z brakującą node_modules/katalog jednak.

W katalogu node_modules/brakuje umyślnie, ponieważ yeoman umieścił go w .gitignore.

Jaki jest właściwy sposób używania Yeomana i Grunta w tym przypadku?
Czy istnieje lepsza dokumentacja dla Yeomana i Grunta?

Dzięki.

+0

Jakie rzeczy inne niż node_modules są wymienione w pliku .gitignore? Czy Twój plik Gruntfile.js jest wywoływany przez akcję klonowania? To może być drugi problem po tym, który rozwiązał Marplesoft. –

Odpowiedz

27

To jest prawidłowe zachowanie. Zawartość node_modules nie jest przeznaczona do zatwierdzenia źródła. Idea npm polega na tym, że śledzi ona wszystkie wymagane zależności węzła w pliku o nazwie package.json. Ten plik powinien zostać zatwierdzony do kontroli źródła. Potem na innym komputerze, można sprawdzić kod i uruchomić

npm install

To wygląda na plik package.json i pobiera wszystkie wymagane pliki z chmurą i umieszcza je wszystkie do nowego node_modules katalogu.

5

Jeśli zrobisz wystarczająco dużo wyszukiwania na temat, w końcu będziesz działać na następujące article, który stwierdza, że ​​jeśli budujesz aplikację, powinieneś sprawdzić swoje zależności. Poleganie na package.json może powodować problemy jak moduł autorzy publikują aktualizacje, lepszym rozwiązaniem jest użycie

npm shrinkwrap

który tworzy plik blokujący w dół swoje zależności i współzależności swoich zależnościach, ale nawet to może być krucha jak to jest możliwe, że autor modułu ponownie opublikował tę samą wersję z innym kodem.

Ponieważ yo angular tworzy aplikację, IMHO node_modules nie powinno być zawarte w .gitignore, jednak jako niegrzecznie odkryłem, że jeśli jesteś w systemie Windows, istnieje znaczna szansa, że ​​nie możesz sprawdzić modułów w tym folderze z powodu do długości ścieżek ... westchnienie.

Powiązane problemy