Npm или bower для фронта?

Почему не npm

Главное отличие npm и Бовера — подход к установке зависимостей пакетов. Npm устанавливает зависимости для каждого пакета отдельно, в папку этого пакета, потом так же ставит зависимости зависимостей и так далее. В клиентском яваскрипте это недопустимо: нельзя подключить на страницу две версии jQuery или любой другой библиотеки. В Бовере каждый пакет устанавливается один раз, и в случае конфликта зависимостей Бовер просто не станет устанавливать пакет, несовместимый с уже установленными.


Цитата с xaker за 2014 год. Сегодня вижу, что люди говорят о каких-то изменениях в npm, но как начинающего, меня разумеется до такой степени пугает этот зоопарк инструментов, что я просто не в силах разобраться без глупых вопросов.

Что конкретно изменилось в npm и насколько, позволяет ли он полностью заменить bower и, относительно цитаты, зависимости теперь ведут себя как в последнем, или нет?

И где бы вообще почитать про эти пресловутые зависимости? Ни в учебнике Кантора, ни в руководствах по CSS/HTML не встречал ничего подобного, попытка гуглить тоже ведет лишь к тому, как обращаться с ними, но что это такое?
  • Вопрос задан
  • 3533 просмотра
Решения вопроса 2
delphinpro
@delphinpro
frontend developer
Главное отличие npm и Бовера — подход к установке зависимостей пакетов.

Мне казалось, главное отличие в использовании установленных пакетов, а не в их установке.
Bower предполагает, что вы либо руками будете подключать каждый нужный файл тегами script/link, либо воспользуетесь системой сборки, склеивая библиотеки. NPM предполагает, что вы по-любому используете систему сборки и подключаете зависимости как модули с помощью import или require.
Поправьте, если ошибаюсь.
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Если один пакет требует jquery@2.1, а другой jquery@2.2, то есть два варианта действия.

npm скажет -- да чувак, хз что они там наколбасили, semver никто не соблюдает, давай каждому пакету дадим свою версию, места на винте много.

bower скажет -- ну мы же не можем два раза отдавать клиенту jquery, правда? Да и вместе эти плагины не будут работать, они получат разные инстансы jquery. Я тут подумал и решил, давай поставим 2.2, но ты смотри там, могут быть несовместимости.

В общем, многие используют npm и брат жив -- без jquery и кучи говноплагинов требующих разные версии, проблем, как описано выше, обычно нету. Опять же один пакетный менеджер удобнее, чем два.
С другой стороны, многие люди считают образ действий npm неприемлемым и настаивают, что на фронтенде только bower. И ничего, опять-таки проекты живы и развиваются.

P.S. есть еще jspm, работает подобно bower, но может использоваться и вместо npm на серверной стороне. Мне не понравилось, но есть плюсы -- интеграция с systemjs и опять же один пакетный менеджер на проект.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
В тренде сейчас yarn - менеджер, который тянет пакеты из npm.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы