Czy bower_components powinno być gitignored?

157

Czy byłoby dobrą praktyką pozostawienie tylko bower.jsonpliku i gitignore całego bower_componentskatalogu?

Pierre de LESPINAY
źródło
Właśnie zauważyłem oficjalną książkę kucharską Symfony, która właściwie odpowiada na to pytanie, cytując „Obecnie prawdopodobnie powinieneś zatwierdzić zasoby pobrane przez Bowera zamiast dodawać katalog do swojego .gitignorepliku”
Pierre de LESPINAY

Odpowiedzi:

149

Oficjalna strona Bower stwierdził:

UWAGA: Jeśli nie tworzysz pakietu, który ma być używany przez innych (np. Tworzysz aplikację internetową), zawsze powinieneś sprawdzać zainstalowane pakiety w kontroli źródła .

Koniecznie sprawdź link w wycenie, omawia on niektóre zalety i wady. Główną zaletą jest to, że ich sprawdzenie zapewnia, że ​​zależności są zawsze dostępne, o ile jest dostępne repozytorium. Bez względu na to, co stanie się z Bower, GitHubem lub czymkolwiek innym byłoby potrzebne w innym przypadku.

TimWolla
źródło
1
Dziękuję za ten interesujący artykuł. Tak więc na razie nadal nie mamy odpowiednika „pliku blokującego” do zamrożenia wersji.
Pierre de LESPINAY
1
@PierredeLESPINAY Tylko na najwyższym poziomie. Brakuje odpowiednika funkcji powłoki npm.
passy
3
Mówią to również w swoim poście na blogu „Ostatecznie wybór, czy zaewidencjonować cały katalog / bower_components, należy do Ciebie…”.
Krishnaraj
3
Powodem ich sprawdzania jest to, że pewnego dnia biblioteka może zniknąć z Internetu lub może nastąpić jej przestój, co z kolei może spowodować awarie kompilacji. Jako użytkownik Mavena / Gradle nigdy nie myślę o sprawdzaniu zależności.
Krishnaraj
7
Porada na oficjalnej stronie Bower, aby sprawdzić zainstalowane pakiety w kontroli źródła, została usunięta w 2014 roku: github.com/bower/bower.github.io/commit/ ...
użytkownik
52

.Gitignore plik w nowo wytworzonej Yeoman projektu angularjs ma bower_components (i) wymienione node_modules być ignorowane (jeśli nie wiesz Yeoman jest to bardzo renomowanych narzędzie internetowe rusztowanie dla nowoczesnych webapps, więc to wystarczająco dobre dla mnie!):

.gitignore

node_modules
dist
.tmp
.sass-cache
bower_components
user12121234
źródło
9

Jest czas i miejsce na oba podejścia. W przypadku Yeoman warto polegać na bower.json, ponieważ jest to narzędzie w łańcuchu narzędzi i musi żyć i oddychać w ekosystemie altan. W przypadku wdrażalnej aplikacji internetowej ogólnie dobrą praktyką jest zatwierdzanie zależności i utrzymywanie większej kontroli.

Oto dobry artykuł, który mi się podoba, w którym to omówiono.

JoshuaDavid
źródło
6

Jeśli używasz Grunt i Node z Bower, sensowne jest umieszczenie bower_components w swoim .gitignore, ponieważ kiedy uruchamiasz grunt serv lub bud build , zajmuje się on zależnościami za Ciebie, jestem pewien, że dlatego w Yeoman dodają go do plik .gitignore

Yves
źródło
5

Yeoman generator wstępnie wypełnione .gitignore plik bower_components, ale także wstępnie wypełnione innych katalogów Myślę byłyby potrzebne do ostatecznej aplikacji (jak www), więc zrobiłem kilka badań.

Odkryłem, że www / index.html to zminimalizowana wersja pliku app / index.html. Katalog aplikacji i jego zawartość (w tym bower_components) zawiera pliki źródłowe potrzebne do katalogu wyjściowego (www). Zatwierdzasz katalogi źródłowe do kontroli źródła (np. Git), ale nie pliki generowane (np. Www). Menedżery pakietów, takie jak bower i npm, mają być używane podczas fazy kompilacji / generowania, a ich artefakty nie są przeznaczone do sprawdzania w kontroli źródła.

Ostatecznie źródło, które sprawdzasz w git, to absolutna minimalna konfiguracja potrzebna do zbudowania pozostałej części projektu do celów programistycznych lub wdrożeniowych.

Erich Cervantez
źródło
0

Dobrze jest zignorować /bower_componentsdir i wpisać tylko bower.jsoni bower-locker.bower.jsonplik, jeśli tworzysz plik blokady za pomocą bower-locker napisanego przez Shawna Lonasa .

Przed utworzeniem altany-lockera istniała wada spowodowana problemem braku możliwości obkurczania altanki , ale można ją złagodzić dzięki powyższej bibliotece.

Uruchom następujące polecenia, aby to osiągnąć:

npm install bower-locker -g

lub

yarn global add bower-locker

następnie wygeneruj plik blokady na podstawie istniejącego bower.jsonpliku, uruchamiając:

bower-locker lock

Oryginalny bower.jsonplik zostanie zmieniony nabower-locker.bower.json

Joel Handwell
źródło