NPM / Bower / Composer - diferenças?

102

Alguém pode me explicar a diferença entre NPM, BowereComposer .

Eles são todos gerenciadores de pacotes - correto?

Mas quando cada um deve ser usado?

Além disso, cada um parece ter um arquivo json que o acompanha, isso armazena todos os pacotes de que você precisa para que possam ser instalados pela linha cmd? Por que você precisa deste arquivo?

panthro
fonte

Respostas:

192

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]

  • bowerestá 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").
  • yarnsaiu da madeira como um melhor npm(consertando várias npmfalhas), 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.jsonque 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
Deutz mutilado
fonte
6
E quanto aos aplicativos frontent php +? Qual é a melhor opção?
sompylasar
14
Depende de onde você traça a linha. O seu MVC está em js (e seu php é reduzido a um WS)? Então provavelmente use caramanchão. O seu MVC está em php (digamos, symfony), e você tem um monte de js ligados às suas visualizações do lado do servidor? Então, o compositor é provavelmente sua melhor escolha.
Mangled Deutz
21
A parte mais irritante e contraproducente é quando você está trabalhando em bibliotecas onde, algumas só usam o bower; alguns usam apenas composer e outros usam apenas npm. Seria bom encontrar um único gerenciador de pacotes que, com um único comando, gerencie todos esses gerenciadores de pacotes. Deve ser chamado de Iniciação.
Angel S. Moreno
29
Acho que @ AngelS.Moreno está certo. Existem muitos, vamos fazer um quarto. :)
Eric
1
@ AngelS.Moreno você está certo e eu iria mais longe do que apenas parar nos instaladores e gerenciadores de dependências. Existem muitos de tudo. Muitas bibliotecas JS que fazem o mesmo, muitos PHP Frameworks e assim por diante. Se as pessoas pudessem trabalhar colaborativamente em uma coisa, isso mudaria a vida de muitos de nós.
JG Estiot