npm
é o gerenciador de pacotes nodejs. Portanto, é direcionado a ambientes nodejs, o que geralmente significa projetos nodejs do lado do servidor ou projetos de linha de comando (o próprio bower é um pacote npm). Se você for fazer qualquer coisa com nodejs, usará o npm.
bower
é um gerenciador de pacotes que visa projetos web (front-end). Você precisa do npm e do nodejs para instalar o bower e executá-lo, embora os pacotes do bower não se destinem especificamente ao nodejs, mas sim ao ambiente do "navegador".
composer
é um gerenciador de dependências voltado para projetos php. Se você está fazendo algo com o symfony (ou o velho php), este é provavelmente o caminho a percorrer
Resumindo:
- fazendo nó? você faz npm
- fazendo php? tente compositor
- javascript de front-end? tente caramanchão
E sim, os arquivos "json" descrevem informações e dependências básicas do pacote. E sim, eles são necessários.
Agora, o que acontece com os READMEs? :-)
[atualização, quatro anos depois]
bower
está obsoleto e não deve ser mais usado para novos projetos. Em grande parte, ele foi incluído no gerenciamento de dependência de nó (de seu site: "Enquanto o Bower é mantido, recomendamos o uso de Yarn e Webpack ou Parcel para projetos front-end").
yarn
saiu da madeira como um melhor npm
(consertando várias npm
falhas), e isso é realmente o que você deve usar agora, já que é o novo padrão de fato se você estiver fazendo desenvolvimento de front-end ou nó. Ele consome o mesmo package.json
que npm e é quase totalmente compatível com ele.
- Eu não usaria
composer
neste momento (porque eu não usaria php
), embora pareça ainda estar vivo e popular