2013-06-19 2 views
27

Bower docs говоритЗачем нужны компоненты для балансировки?

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

У кого-нибудь есть хороший ответ на вопрос почему?

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

Я просто хочу, чтобы обновить зависимости bower.json. Я бы подумал, что у большинства проектов будет этап сборки или аналогичный, например, с хрюканьем. На этапе сборки вы должны были бы вызвать установку/обновление bower перед сборкой, чтобы эти файлы присутствовали для concat/minification и т. Д. Или даже обычная копия в какую-либо папку dist.

Я что-то упустил?

ответ

28

Это необходимо для блокировки ваших зависимостей, чтобы не допустить плохой зависимости от взлома приложения или удаленного устройства, предотвращающего развертывание. Это может произойти, даже если у вас есть шаг сборки, поскольку вы, вероятно, не тщательно тестируете каждую сборку, а автоматические тесты не поймают все, особенно не визуальные регрессии. Кроме того, у нескольких разработчиков могут быть разные версии зависимости. Благодаря наличию зависимостей вы гарантируете, что все останутся в одной и той же версии. Я также вижу, что diff - хороший способ гарантировать, что в дереве зависимостей не было введено ничего злонамеренного.

В мире узлов npm shrinkwrap частично решает это, но еще не выполняет сопоставление контрольной суммы. В настоящее время Bower имеет открытый ticket для реализации того же самого.

Вы можете прочитать об этом в этом блоге: Checking in front-end dependencies

+0

Да, я думаю, я думал, что могу использовать 1.2.3 вместо ~ 1.2.3 или аналогичный. (Или даже это нормально, если я доверяю библиотеке, чтобы использовать semver). Но я предполагаю, что если библиотека X имеет в своей базе данных bower.json библиотеку Y и использует> = 2.3.4 или аналогичную, то у меня проблемы. Будем надеяться на функцию термоусадочной пленки. –

+3

Да и блокировки версий, даже глубоких, недостаточно, поскольку теги и версии могут быть переопределены. Вот почему 'npm shrinkwrap' требует контрольной суммы совпадений депо, и это то, что мы хотим с помощью термоусадочной трубки Bower с самого начала. –

+0

Это то же самое, что и для разработки игр. Вы не обновляете пакеты все время, поэтому имеет смысл замораживать или «сжимать» их в определенной версии, чтобы предотвратить задержки при развертывании или сбоях. –

0

Этот ответ не является техническим, но практическая причина, чтобы не проверить в компонентах Бауэр.

Я бы предпочел, чтобы пакеты bower были заблокированы в bower.json, а не проверялись в этих пакетах. Поскольку мне доверяют, вы не можете загружать и распаковывать тысячи файлов на компьютере. У медленных компьютеров есть проблема с очень большими и глубокими файловыми путями. И в этом мире Интернета я считаю, что всегда легко загружать пакеты, а не переносить их.

Это всего лишь вопрос предпочтения. Все это исходит из опыта. Я проверил проект с компонентами bower на Github, и это хуже при загрузке и загрузке. Я сделал это через относительно новый Mac.

Смежные вопросы