Управление на JavaScript зависимостей: НПМ и Bower, так и Воло [закрыт]
как вы сравниваете npm
,bower
и volo
?
все три можно использовать для установки зависимостей JavaScript для проекта пользовательского интерфейса.
Я понимаю npm
более специфичен для узла.
Итак, когда использовать то, что?
npm
все еще стоит далеко, но bower
и volo
Кажется, решается точно такая же проблема, хотя я не могу провести линию между npm
и bower-volo
.
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 install
ing вещи и ожидая, что они будут работать только в среде узла. Например, есть много npm пакеты для Twitter Bootstrap.Npm оптимизирован для использования на стороне сервера, с вложенным деревом зависимостей. Каждая зависимость может иметь свои собственные зависимости, которые могут иметь свои собственные, и так далее. Это устраняет конфликты версий зависимостей, поскольку каждая зависимость может использовать свою собственную версию, например, подчеркивание. Тем не менее, предстоящий npm версии 3 сгладит дерево зависимостей:
С npm@3, ваш каталог node_modules будет намного лестнее. Все ваши зависимости и большинство ваших субзависимостей (и (суб)+зависимости) будут сидеть рядом друг с другом на верхнем уровне. Только при наличии конфликтов модули будут установлены на более глубоком уровне уровни. Это должно сделать вещи намного проще для пользователей Windows.
некоторые преимущества, которые я вижу при использовании npm:
- он используется всеми другими менеджерами пакетов (component, bower, volo, JSPM и т. д.);
- позволяет использовать скрипты сборки;
- множество инструментов доступны для интроспекции пакетов на основе npm
npm-это менеджер пакетов для JavaScript.
по состоянию на февраля 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 :)