Управление на JavaScript зависимостей: НПМ и Bower, так и Воло [закрыт]


как вы сравниваете npm,bower и volo?

все три можно использовать для установки зависимостей JavaScript для проекта пользовательского интерфейса. Я понимаю npm более специфичен для узла.

Итак, когда использовать то, что?

npm все еще стоит далеко, но bower и volo Кажется, решается точно такая же проблема, хотя я не могу провести линию между npm и bower-volo.

5 158

5 ответов:

описание, которое лучше всего описывает разницу между npm и bower: npm управляет модулями JavaScript, называемыми пакетами, а Bower управляет интерфейсными компонентами (т. е. css, html и JavaScript), называемыми компонентами. npm также используется для установки bower. Вот это экспансивная статья о npm и bower (не охватывает volo) он вдается в множество деталей.

беседке

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

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

вы можете ожидать, чтобы найти все, что связано с front-end в реестре bower (bower search <some keyword>) -- на мой взгляд, это самое большое преимущество беседки по отношению к другим менеджерам пакетов.

volo

Я до сих пор не использовал его более 5 минут в течение многих лет. Не знаю об этом!--17-->но из того, что я вижу он включает в себя некоторые инструмент сборки, который очень хорошо знаком хрюкать пользователи.

npm

да, npm означает Диспетчер пакетов узлов. Но в настоящее время вы можете использовать его для все, люди уже не только npm installing вещи и ожидая, что они будут работать только в среде узла. Например, есть много npm пакеты для Twitter Bootstrap.

Npm оптимизирован для использования на стороне сервера, с вложенным деревом зависимостей. Каждая зависимость может иметь свои собственные зависимости, которые могут иметь свои собственные, и так далее. Это устраняет конфликты версий зависимостей, поскольку каждая зависимость может использовать свою собственную версию, например, подчеркивание. Тем не менее, предстоящий npm версии 3 сгладит дерево зависимостей:

С npm@3, ваш каталог node_modules будет намного лестнее. Все ваши зависимости и большинство ваших субзависимостей (и (суб)+зависимости) будут сидеть рядом друг с другом на верхнем уровне. Только при наличии конфликтов модули будут установлены на более глубоком уровне уровни. Это должно сделать вещи намного проще для пользователей Windows.

некоторые преимущества, которые я вижу при использовании npm:

  • он используется всеми другими менеджерами пакетов (component, bower, volo, JSPM и т. д.);
  • позволяет использовать скрипты сборки;
  • множество инструментов доступны для интроспекции пакетов на основе npm

npm-это менеджер пакетов для JavaScript.

npmjs.com screenshot


по состоянию на февраля 2013 года, мое мнение было следующим. пожалуйста, не принимайте это во внимание больше.

npm

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

беседке

Бауэр сейчас поп-парень. У них есть много проектов под их капотом, и сопровождающие проекты любят держать их в актуальном состоянии в реестре bower...

это жаль, что он иногда немного глючит.

volo

Я не пробовал volo более 5 минут с тех пор, но из того, что я мог видеть, он выглядит более гибким, чем Бауэр.

негативным моментом для volo является то, что их проекты очень устарели.

Они, кажется, решают одну и ту же проблему, но для разных сред/миров. NPM для nodejs и volo, bower для браузера.

правда в том, что вы можете использовать NPM также для управления javascript и css для браузера. Ничто не мешает вам сделать это. В этом смысле использование NPM кажется мне более естественным, чем управление двумя различными инструментами для одной и той же цели.

кажется, что у bower есть больше доступных пакетов, по крайней мере, для более популярных те. Но скоро jQuery также будет доступен в NPM напрямую и, наверное, все остальные библиотеки будут следовать той же тенденции.

на мой взгляд, так как есть инструменты, такие как browserify и webmake там, что помогает использовать модули узлов в браузере, больше нет реальной необходимости в беседке или volo, если они не предлагают что-то еще для вас (конкретный модуль существующие только в их реестрах).

и Volo и беседке тоже хорошо, но с моей точки зрения, если вы уже используете NPM, возможно, лучше придерживаться его.

обратите внимание:вы можете использовать NPM для управления зависимостями клиентов даже без использования browserify или webmake. В большинстве проектов, над которыми я работаю, после установки модулей npm я запускаю скрипт для их развертывания в том месте, где мой клиентское приложение использует их. Иногда я использую grunt для объединения этого файла с другими файлами js, а иногда я ссылаюсь на него непосредственно из файлов шаблонов моих веб-приложений. В любом случае, это личное предпочтение. Другие могут найти Bower или Volo проще в использовании, поскольку они более естественно вписываются в их рабочие процессы.

большое преимущество Bower перед NPM заключается в том, что его управление зависимостями обеспечивает использование одной версии компонента (в то время как NPM работает, имея разные копии/версии в качестве субзависимостей разных модулей). Это ОЧЕНЬ ХОРОШАЯ ВЕЩЬ потому что это предотвращает раздувание javascript на стороне клиента из-за необходимости включать несколько копий компонента в разных версиях. Включение нескольких копий модуля имеет центральное значение для того, как работает управление зависимостями NPM, и поэтому NPM полностью не подходит для управления пакетами на стороне клиента.

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

Я знаю, что это не в рамках вопроса, но есть и другая альтернатива. Jam JS -http://jamjs.org/ Интересно то, что он имеет возможности ворчать в варенье:

jam compile output.js

кто-то должен сделать еще один менеджер пакетов и назвать его: yapm :)