Как вы сравниваете npm
, bower
а volo
?
Все три можно использовать для установки зависимостей JavaScript для проекта пользовательского интерфейса. Я понимаю, что npm
это более конкретный узел.
Итак, когда использовать что?
npm
до сих пор стоит на расстоянии, но bower
и , как volo
представляется, решение точно такая же проблема, хотя я не могу нарисовать линию между npm
и bower-volo
.
Ответы:
Описание, которое лучше всего описывает разницу между npm и bower: npm управляет модулями JavaScript, называемыми пакетами, а Bower управляет внешними компонентами (например, css, html и JavaScript), называемыми компонентами. Npm также используется для установки беседки. Вот обширная статья о npm и bower (не распространяется на volo), в ней много деталей.
источник
осенять
Он по-прежнему очень популярен среди разработчиков переднего плана, хотя у него очень мало функций. Каждый интерфейсный пакет использует его. Существует также инициатива по слиянию беседок в npm .
Bower оптимизирован для клиентской части и поддерживает только плоские деревья зависимостей, то есть каждую библиотеку необходимо использовать только один раз (поскольку дорого отправлять клиенту разные версии одной и той же библиотеки), а ограничения зависимостей должны разрешаться пользователем ,
Вы можете ожидать найти что-нибудь, что связано с интерфейсом, в реестре bower (
bower search <some keyword>
) - на мой взгляд, это самое большое преимущество bower по сравнению с другими менеджерами пакетов.вол
Я до сих пор не использовал его более 5 минут в течение многих лет. Не знаю об этом, но из того, что я вижу, он включает в себя инструмент для сборки, который очень знаком пользователям Grunt.
НПМ
Да, npm означает Node Package Manager. Но в настоящее время вы можете использовать его для всего; люди больше не только
npm install
ищут вещи и ожидают, что они будут работать только в среде Node. Например, существует множество пакетов npm для Twitter Bootstrap .Npm оптимизирован для использования на стороне сервера с вложенным деревом зависимостей. Каждая зависимость может иметь свои зависимости, которые могут иметь свои собственные, и так далее. Это устраняет конфликты версий зависимостей, поскольку каждая зависимость может использовать свою собственную версию, например Underscore. Однако следующая версия npm 3 сгладит дерево зависимостей :
Некоторые преимущества использования npm:
npm - менеджер пакетов для JavaScript.
По состоянию на февраль 2013 года мое мнение было следующим. Пожалуйста, не принимайте это во внимание больше.
НПМ
Лучше придерживаться этого, когда вы работаете с Node-проектом, очень мало проектов, которые также доступны для браузеров ...
осенять
Бауэр сейчас поп-парень. У них под капотом много проектов, и разработчики проектов хотели бы держать их в актуальном состоянии в реестре Bower ...
Обидно, что он иногда немного глючит.
вол
С тех пор я не пробовал volo более 5 минут, но, насколько я вижу, он выглядит более гибким, чем беседка.
Негативным моментом для volo является то, что их проекты сильно устарели.
источник
Кажется, они решают одну и ту же проблему, но для разных сред / миров. NPM для nodejs и volo, беседка для браузера.
Правда в том, что вы можете использовать NPM также для управления javascript и css для браузера. Ничто не мешает вам сделать это. В этом смысле использование NPM кажется мне более естественным, чем управление двумя разными инструментами для одной и той же цели.
Кажется, у bower есть больше доступных пакетов, по крайней мере, для более популярных. Но скоро jQuery также будет доступен в NPM напрямую, и, вероятно, все остальные библиотеки будут следовать той же тенденции.
На мой взгляд, поскольку существуют такие инструменты, как browserify и webmake , которые помогают использовать модули узлов в браузере, больше нет реальной необходимости в bower или volo , если они не предлагают что-то другое для вас (конкретный модуль существует только в их реестры).
И Воло, и Бауэр тоже хороши, но, с моей точки зрения, если вы уже используете NPM, лучше придерживаться его.
Обратите внимание, что вы можете использовать NPM для управления клиентскими зависимостями даже без использования browserify или webmake . В большинстве проектов, над которыми я работаю, после установки модулей npm я запускаю сценарий, чтобы развернуть их в том месте, где их использует мое клиентское приложение. Иногда я использую grunt для объединения этого файла с другими js-файлами, а иногда я ссылаюсь на него непосредственно из файлов шаблонов моих веб-приложений. В любом случае это личное предпочтение. Другие могут найти Bower или Volo более легкими в использовании, поскольку они более естественны в своих рабочих процессах.
источник
yeoman
проект решил предложить нового менеджера пакетов, когда он у нас уже былnpm
? (Это был зрелый, известный и богатый набор функций). Эта мысль заставляет меня чувствовать, что я все еще упускаю фактический смысл.npm
в пользу простоты интерфейса. Следовательно, для развития веб-интерфейса.Большое преимущество Bower над NPM состоит в том, что его управление зависимостями обеспечивает использование одной версии компонента (тогда как NPM работает с наличием разных копий / версий в качестве зависимостей разных модулей). Это ОЧЕНЬ ХОРОШАЯ вещь, потому что она предотвращает раздутость JavaScript на стороне клиента из-за необходимости включать несколько копий компонента в разных версиях. Включение нескольких копий модуля является центральным для того, как работает управление зависимостями NPM, и поэтому NPM совершенно не подходит для управления пакетами на стороне клиента.
Следствием вышесказанного является то, что сопровождающие и покупатели пакетов Bower должны быть внимательнее, чтобы сохранить номера версий зависимостей, чтобы избежать конфликтов, но это стоит того. И я нахожу, что модули NPM часто выпускают мажорные, второстепенные и патч-релизы, поэтому управление зависимостями NPM тоже не является ложем роз.
источник
Я знаю, что это не входит в суть вопроса, но есть и другая альтернатива. Jam JS - http://jamjs.org/ Одна интересная вещь заключается в том, что в варенье у него есть возможности:
Кто-то должен сделать еще один менеджер пакетов и назвать его: yapm :)
источник