Должен ли bower_components быть проигнорирован?

157

Будет ли хорошей практикой хранить только bower.jsonфайл и gitignore весь bower_componentsкаталог?

Пьер де ЛЕСПИНАЙ
источник
Я только что обратил внимание на официальную кулинарную книгу Symfony, которая на самом деле отвечает на этот точный вопрос: «В настоящее время вы, вероятно, должны фиксировать ресурсы, загруженные Bower, а не добавлять каталог в ваш .gitignoreфайл»
Pierre de LESPINAY

Ответы:

149

Официальная страница Бауэр заявил:

NB. Если вы не создаете пакет, предназначенный для использования другими (например, вы создаете веб-приложение), вы всегда должны проверять установленные пакеты в системе контроля версий .

Обязательно проверьте ссылку в цитате, там обсуждаются некоторые плюсы и минусы. Главное, что он упоминает, это то, что их регистрация гарантирует, что ваши зависимости всегда доступны, пока ваш репозиторий доступен. Неважно, что случится с Bower, GitHub или чем-то еще, что понадобится в противном случае.

TimWolla
источник
1
Спасибо за эту интересную статью. Так что пока у нас все еще нет «файла блокировки», эквивалентного заморозке версий.
Пьер де ЛЕСПИНАЙ
1
@PierredeLESPINAY Только для верхнего уровня. Чего не хватает, так это эквивалента термоусадочной пленки npm.
Passy
3
Они также говорят об этом в своем блоге: «В конечном счете, выбор - регистрировать ли все каталоги / bower_components или нет, зависит от вас ...».
Кришнарадж
3
Причиной их регистрации является то, что однажды библиотека может исчезнуть из Интернета, или это может быть некоторое время простоя, что, в свою очередь, может привести к сбоям сборки. Как пользователь Maven / Gradle, я никогда не думаю о проверке зависимостей.
Кришнарадж
7
Рекомендации на официальной странице Bower для проверки установленных пакетов в системе контроля версий
пользователь
52

.Gitignore файл в вновь созданном Yeoman проекте AngularJS имеет bower_components (и node_modules) , перечисленные игнорироваться (если вы не знаете , YEOMAN это очень авторитетный инструмент веб - подмости для современных WebApps, так что это достаточно хорошо для меня!):

.gitignore

node_modules
dist
.tmp
.sass-cache
bower_components
user12121234
источник
9

Есть время и место для обоих подходов. Для Yeoman уместно положиться на bower.json, потому что это инструмент в наборе инструментов, и он должен жить и дышать экосистемой bower. Для развертываемого веб-приложения обычно рекомендуется зафиксировать зависимости и обеспечить больший контроль.

Вот хорошая статья, мне нравится, что это обсуждается.

JoshuaDavid
источник
6

Если вы используете Grunt и Node с Bower, имеет смысл поместить bower_components в ваш .gitignore, потому что когда вы запускаете grunt serve или grunt build, он заботится о зависимостях для вас, я уверен, поэтому в Yeoman они добавляют его в .gitignore

Ив
источник
5

Yeoman генератор предварительно наполнил .gitignore файл с bower_components, но также предварительно заполненный с другими каталогами я думаю , был бы необходим для окончательного приложения (например , WWW) , так что я сделал некоторые исследования.

Я обнаружил, что www / index.html - это минимизированная версия app / index.html. Каталог приложения и его содержимое (включая bower_components) содержат исходные файлы, необходимые для выходного каталога (www). Вы помещаете исходные каталоги в систему управления версиями (например, git), но не генерируете файлы (например, www). Менеджеры пакетов, такие как bower и npm, предназначены для использования на этапе сборки / генерации, а их артефакты не предназначены для проверки в source-control.

В конечном счете, источник, который вы регистрируете в git, - это минимальная конфигурация, необходимая для сборки остальной части проекта для целей разработки или развертывания.

Эрих Сервантез
источник
0

Это хорошо , чтобы игнорировать /bower_componentsреж и проверять только bower.jsonи bower-locker.bower.jsonфайл , если создать файл блокировки с помощью Бауэр-шкафчика , написанный Шоном Lonas .

Перед созданием bower-locker была проблема, связанная с тем, что bower не имеет возможности термоусадочной пленки, но ее можно уменьшить с помощью вышеуказанной библиотеки.

Выполните следующие команды для достижения этого:

npm install bower-locker -g

или

yarn global add bower-locker

затем сгенерируйте файл блокировки на основе существующего bower.jsonфайла, выполнив:

bower-locker lock

Исходный bower.jsonфайл будет переименован вbower-locker.bower.json

Джоэл Хэндвелл
источник