Como você compara npm
, bower
e volo
?
Todos os três podem ser usados para instalar dependências JavaScript para um projeto de interface do usuário. Eu entendo npm
é mais específico do nó.
Então, quando usar o que?
npm
ainda está distante, mas bower
e volo
parecem estar a resolver exatamente o mesmo problema, embora eu não sou capaz de desenhar uma linha entre npm
e bower-volo
.
Respostas:
Uma descrição que melhor descreve a diferença entre npm e bower é: npm gerencia módulos JavaScript chamados packages e Bower gerencia componentes front-end (por exemplo, css, html e JavaScript) chamados componentes. O npm também é usado para instalar o bower. Aqui está um artigo abrangente sobre npm e bower (não cobre volo), que entra em muitos detalhes.
fonte
caramanchão
Ainda é muito popular entre os desenvolvedores de front-end, apesar de ter muito poucos recursos. Todo pacote front-end está usando. Há também uma iniciativa de mesclar o pavilhão para o NPM .
O Bower é otimizado para o lado do cliente e suporta apenas árvores de dependência simples, ou seja, cada biblioteca deve ser usada apenas uma vez (já que é caro enviar versões diferentes da mesma biblioteca para o cliente), e as restrições de dependência devem ser resolvidas pelo usuário .
Você pode encontrar qualquer coisa relacionada ao front-end no registro do bower (
bower search <some keyword>
) - na minha opinião, essa é a maior vantagem do bower em relação a outros gerenciadores de pacotes.volo
Ainda não o uso há mais de 5 minutos em anos. Não sei, mas pelo que posso ver , inclui alguma ferramenta de construção, que é muito familiar para os usuários do Grunt.
npm
Sim, npm significa Node Package Manager. Mas hoje em dia você pode usá-lo para tudo; as pessoas não estão mais apenas
npm install
pensando nas coisas e esperando que funcionem apenas no ambiente do Nó. Por exemplo, existem muitos pacotes npm para o Twitter Bootstrap .O Npm é otimizado para uso no servidor, com uma árvore de dependência aninhada. Cada dependência pode ter suas próprias dependências, que podem ter suas próprias e assim por diante. Essa versão de dependência eliminada entra em conflito, pois cada dependência pode usar sua própria versão, por exemplo, Underscore. No entanto, a próxima versão 3 do npm achatará a árvore de dependência :
Algumas vantagens que vejo ao usar o npm:
O npm é o gerenciador de pacotes do JavaScript.
Em fevereiro de 2013, minha opinião era a seguinte. Por favor, não leve mais em consideração.
npm
É melhor ficar com ele quando você estiver com um projeto Node, existem muito poucos projetos disponíveis para os navegadores também ...
caramanchão
Bower é o cara pop agora. Eles têm muitos projetos em andamento e os mantenedores do projeto gostam de mantê-los atualizados no registro do caramanchão ...
É uma pena que ele às vezes seja um pouco buggy.
volo
Eu não tentei volo por mais de 5 minutos desde então, mas pelo que pude ver, parece ser mais flexível do que caramanchão.
Um ponto negativo para o volo é que seus projetos estão muito desatualizados.
fonte
Eles parecem estar resolvendo o mesmo problema, mas para diferentes ambientes / mundos. NPM para nodejs e volo, bower para o navegador.
A verdade é que você também pode usar o NPM para gerenciar javascript e css no navegador. Não há nada impedindo você de fazê-lo. Nesse sentido, o uso do NPM me parece mais natural do que ter que gerenciar duas ferramentas diferentes para o mesmo objetivo.
Parece que o caramanchão tem mais pacotes disponíveis, pelo menos para os mais populares. Mas em breve o jQuery também estará disponível no NPM diretamente e provavelmente todas as outras bibliotecas seguirão a mesma tendência.
Na minha opinião, como existem ferramentas como browserify e webmake por aí, que ajudam a usar módulos de nó no navegador, não há mais uma necessidade real de caramanchão ou volo , a menos que eles ofereçam outra coisa para você (um módulo específico existente apenas em seus registros).
Tanto o Volo quanto o Bower também são bons, mas do meu ponto de vista, se você já usa o NPM, talvez seja melhor cumpri-lo.
Observe que você pode usar o NPM para gerenciar as dependências do seu cliente, mesmo sem usar o browserify ou o webmake . Na maioria dos projetos em que estou trabalhando, após a instalação dos módulos npm, eu executo um script para implantá-los no local em que meu aplicativo cliente os utiliza. Às vezes eu uso o grunhido para concatenar esse arquivo com outros arquivos js e, às vezes, faço referência a ele diretamente dos arquivos de modelo dos meus aplicativos da web. De qualquer forma, essa é uma preferência pessoal. Outros poderiam achar o Bower ou o Volo mais fácil de usar, pois se encaixam mais naturalmente em seus fluxos de trabalho.
fonte
yeoman
projeto escolheu criar um novo gerenciador de pacotes quando já tínhamosnpm
? (Era maduro, famoso e rico em recursos) Esse pensamento me faz sentir que ainda estou perdendo o ponto real.npm
em favor da simplicidade do frontend. Daí para o desenvolvimento frontend.A grande vantagem do Bower sobre o NPM é que o gerenciamento de dependências impõe o uso de uma única versão de um componente (enquanto o NPM funciona tendo diferentes cópias / versões como subdependências de diferentes módulos). Isso é MUITO BOM, pois evita que o javascript do lado do cliente fique inchado por precisar incluir várias cópias de um componente em versões diferentes. A inclusão de várias cópias de um módulo é fundamental para o funcionamento do gerenciamento de dependências do NPM e, portanto, o NPM é totalmente inadequado para o gerenciamento de pacotes do lado do cliente.
Uma consequência do exposto acima é que os mantenedores e consumidores de pacotes de caramanchão precisam ter mais cuidado em manter seus números de versão de dependência para evitar conflitos, mas é um preço que vale a pena pagar. E acho que os módulos NPM geralmente são desleixados na emissão de versões principais, secundárias e de patches, portanto o gerenciamento de dependências do NPM também não é exatamente um leito de rosas.
fonte
Eu sei que isso não está no escopo da pergunta, mas há outra alternativa também. Jam JS - http://jamjs.org/ Uma coisa interessante é que ele possui recursos de grunhido no jam:
Alguém deve criar outro gerenciador de pacotes e nomeá-lo: yapm :)
fonte