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?

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.