Bower_components deve ser atribuído a um elemento git?

157

Seria uma boa prática manter apenas o bower.jsonarquivo e fazer gitignore o bower_componentsdiretório inteiro ?

Pierre de LESPINAY
fonte
Eu notei um livro oficial do Symfony que realmente responde a esta pergunta exata, citando "Atualmente, você provavelmente deve comprometer os ativos baixados por Bower em vez de adicionar o diretório para o seu .gitignorearquivo"
Pierre de LESPINAY

Respostas:

149

A página oficial do Bower declarou:

Nota: se você não está criando um pacote que se destina a ser consumido por outras pessoas (por exemplo, está criando um aplicativo da web), sempre verifique os pacotes instalados no controle de origem .

Certifique-se de verificar o link na citação, que discute alguns prós e contras. O principal aspecto mencionado é que o check-in garante que suas dependências estejam sempre disponíveis, desde que seu repositório esteja disponível. Não importa o que aconteça com o Bower, o GitHub ou o que mais for necessário.

TimWolla
fonte
1
Obrigado por este artigo interessante. Por enquanto, ainda não temos um "arquivo de bloqueio" equivalente para congelar as versões.
Pierre de LESPINAY
1
@PierredeLESPINAY Apenas para o nível superior. O que está faltando é equivalente ao recurso npm shrinkwrap.
passy 12/03/14
3
Eles também dizem isso em sua postagem no blog "Em última análise, a escolha de fazer ou não o check-in de todo o seu diretório / bower_components depende de você ...".
precisa
3
O motivo por trás do check-in é que, algum dia, a biblioteca poderá desaparecer da Internet ou poderá haver algum tempo de inatividade que, por sua vez, poderá causar falhas na compilação. Como usuário do Maven / Gradle, nunca penso em verificar dependências.
precisa
7
Os conselhos na página oficial do Bower para verificar pacotes instalados no controle de origem foram removidos em 2014: github.com/bower/bower.github.io/commit/…
user
52

O arquivo .gitignore em um projeto Yeoman AngularJS recém-gerado tem bower_components (e node_modules) listados para serem ignorados (se você não conhece o Yeoman, é uma ferramenta de andaime da web muito respeitável para aplicativos da web modernos, então isso é o suficiente para mim!):

.gitignore

node_modules
dist
.tmp
.sass-cache
bower_components
user12121234
fonte
9

Há um tempo e um lugar para ambas as abordagens. Para a Yeoman, é apropriado contar com o bower.json, porque é uma ferramenta em uma cadeia de ferramentas e precisa permanecer vivo e respirar com o ecossistema da bower. Para um aplicativo da web implementável, geralmente é uma boa prática confirmar dependências e manter mais controle.

Aqui está um bom artigo que eu gosto que discute isso.

JoshuaDavid
fonte
6

Se você estiver usando Grunt e Node com o Bower, faz sentido colocar bower_components no seu .gitignore, porque quando você executa o grunt serve ou o grunt constrói, ele cuida das dependências para você, tenho certeza que é por isso que no Yeoman elas o adicionam. o .gitignore

Yves
fonte
5

O gerador Yeoman preencheu previamente o arquivo .gitignore com bower_components, mas também preencheu outros diretórios que eu pensaria que seriam necessários para um aplicativo final (como www), então fiz algumas pesquisas.

Descobri que www / index.html é uma versão reduzida do aplicativo / index.html. O diretório do aplicativo e seu conteúdo (incluindo bower_components) contém os arquivos de origem necessários para o diretório de saída (www). Você compromete os diretórios de origem no controle de origem (por exemplo, git), mas não nos arquivos gerados (por exemplo, www). Os gerenciadores de pacotes como bower e npm devem ser usados ​​durante a fase de construção / geração e seus artefatos não devem ser verificados no controle de origem.

Por fim, a fonte que você faz check-in no git é a configuração mínima necessária para construir o restante do projeto para fins de desenvolvimento ou implantação.

Erich Cervantez
fonte
0

É bom ignorar /bower_componentsdir, fazer check-in apenas bower.jsone bower-locker.bower.jsonarquivar se você criar um arquivo de bloqueio usando o bower-locker escrito por Shawn Lonas .

Antes da criação do bower-locker, havia uma desvantagem causada por um problema de o bower não ter capacidade de retração, mas pode ser atenuado pela biblioteca acima.

Execute os seguintes comandos para alcançá-lo:

npm install bower-locker -g

ou

yarn global add bower-locker

gere o arquivo de bloqueio com base no bower.jsonarquivo existente executando:

bower-locker lock

O bower.jsonarquivo original será renomeado parabower-locker.bower.json

Joel Handwell
fonte