NPM / Bower / Composer - отличия?

102

Может кто-нибудь объяснить мне разницу между NPM, Bowerи Composer.

Все они менеджеры пакетов, верно?

Но когда следует использовать каждый из них?

Кроме того, у каждого из них есть json-файл, который сопровождает его, хранятся ли в нем все необходимые пакеты, чтобы их можно было установить с помощью строки cmd? Зачем тебе этот файл?

пантро
источник

Ответы:

192

npmэто менеджер пакетов nodejs. Поэтому он нацелен на среды nodejs, что обычно означает серверные проекты nodejs или проекты командной строки (сам bower является пакетом npm). Если вы собираетесь что-либо делать с nodejs, вы собираетесь использовать npm.

bower- это менеджер пакетов, предназначенный для (интерфейсных) веб-проектов. Вам нужны npm и nodejs для установки и выполнения bower, хотя пакеты bower предназначены не специально для nodejs, а скорее для среды «браузера».

composerэто менеджер зависимостей, предназначенный для проектов php. Если вы что-то делаете с symfony (или простым старым php), это, вероятно, путь

Подводя итоги:

  • делаете узел? ты делаешь нпм
  • делаете php? попробуйте композитор
  • интерфейсный javascript? попробуй беседку

И да, файлы "json" описывают основную информацию о пакете и зависимости. И да, они нужны.

А как насчет README? :-)

[обновление, четыре года спустя]

  • bowerустарела и больше не должна использоваться для новых проектов. В значительной степени это было включено в управление зависимостями узлов (с их веб-сайта: «Пока Bower поддерживается, мы рекомендуем использовать Yarn и Webpack или Parcel для интерфейсных проектов»).
  • yarnвышел из дерева как лучший npm(исправив несколько npmнедостатков), и это действительно то, что вам следует использовать сейчас, поскольку это новый стандарт де-факто, если вы занимаетесь разработкой интерфейса или узла. Он потребляет то же самое, package.jsonчто и npm, и почти полностью с ним совместим.
  • Я бы не стал использовать сейчас composer(потому что не стал бы использовать php), хотя, похоже, он все еще жив и популярен
Искалеченный Deutz
источник
6
А как насчет приложений php + frontent? Какой лучший вариант?
сомпыласар
14
Зависит от того, где вы проводите линию. Ваш MVC в js (а ваш php сокращен до WS)? Тогда, скорее всего, воспользуемся беседкой. Находится ли ваш MVC на php (скажем, на symfony), и у вас есть куча js, подключенных к представлениям на стороне сервера? Тогда композитор, вероятно, ваш лучший выбор.
Mangled Deutz
21
Самая раздражающая и контрпродуктивная часть - это работа с библиотеками, где некоторые используют только bower; некоторые используют только композитор, а другие используют только npm. Было бы неплохо найти единый менеджер пакетов, который с помощью одной команды обрабатывает все эти менеджеры пакетов. Его следует назвать Началом.
Ангел С. Морено
29
Я думаю, что @ AngelS.Moreno прав. Слишком много позволяет сделать четвертую. :)
Эрик
1
@ AngelS.Moreno, вы правы, и я бы пошел дальше, чем просто остановился на установщиках и менеджерах зависимостей. Всего слишком много. Слишком много JS-библиотек, которые делают то же самое, слишком много PHP-фреймворков и так далее. Если бы люди могли работать вместе над одним делом, это изменило бы жизнь многих из нас.
JG Estiot