Como alterar a pasta de componentes padrão do bower?


475

Estou fazendo um novo projeto que usa o bower do twitter. Eu criei um component.jsonpara manter toda a minha dependência como jquery. Então eu corro bower installque instala tudo em uma pasta chamada components. Mas eu preciso instalar os componentes em uma pasta diferente, por exemplo public/components.

Eu tentei editar meu components.json em:

{
  "name": "test",
  "version": "1.0.0",
  "directory": "public/",
  "dependencies": {
    "jquery": "*"
  }
}

ou:

{
  "name": "test",
  "version": "1.0.0",
  "componentsDirectory": "public/",
  "dependencies": {
    "jquery": "*"
  }
}

como mostrado em https://github.com/twitter/bower/pull/94, mas não funciona.

Respostas:


930

Crie um arquivo de configuração do Bower.bowerrc na raiz do projeto (ao contrário do diretório inicial) com o conteúdo:

{
  "directory" : "public/components"
}

Corra bower installnovamente.


4
Eu mudo o log, só posso ver The value of the json property from .bowerrc is no longer usede acho que está tudo bem com a "directory"propriedade. Direita? github.com/bower/bower/blob/master/CHANGELOG.md
Sergey Kishenin

11
Isso não funciona para mim. Funciona em .bowerrc, mas não em bower.json. Esta parece ser uma característica tão básica ...
elliottregan

148
Estou curioso para saber por que isso não seria colocado no arquivo bower.json. Especialmente se for uma configuração por projeto de qualquer maneira.
Hayden

8
Com base nos documentos, ele deve estar em .bowerrc, não em bower.json. Estranho ... bower.io/#custom-install-directory
joemfb

20
No Windows, para criar um arquivo que comece com ".", Basta criar o arquivo com um "." À direita. Em outras palavras, basta chamá-lo de ".bowerrc".
PeteK68

76

Além de editar .bowerrcpara configurar seu caminho de instalação padrão, você também pode configurar caminhos de instalação personalizados para diferentes tipos de arquivos.

Há um pacote de nós chamado bower-installer que fornece um único comando para gerenciar caminhos de instalação alternativos.

corre npm install -g bower-installer

Configure seu bower.json

{
  "name" : "test",
  "version": "0.1",
  "dependencies" : {
    "jquery-ui" : "latest"
  },
  "install" : {
    "path" : {
      "css": "src/css",
      "js": "src/js"
    },
    "sources" : {
      "jquery-ui" : [
        "components/jquery-ui/ui/jquery-ui.custom.js",
        "components/jquery-ui/themes/start/jquery-ui.css"
      ]
    }
  }
}

Execute o seguinte comando: bower-installer

Isso será instalado components/jquery-ui/themes/start/jquery-ui.cssem ./src/css, etc


4
Parece promissor, mas o bower_componentsdiretório ainda é criado e preenchido. :(
Ben

qual versão do caramanchão?
Lfender6445

parece ser a natureza do pacote. você pode abrir um problema aqui github.com/blittle/bower-installer/issues ou escrever um script bash para remover o diretório pós-instalação.
Lfender6445

1
Eu acho que não faz sentido. Eu não quero um pacote que ainda faça o download de repositórios e dependências completos do git e copypaste arquivos específicos para mim ... Eu posso pressionar Ctrl + C. Eu esperava que ele baixasse apenas arquivos específicos para mim.
Alendorff

Sim, eu ouço você. nesse caso, eu apenas clico em .bowerrc e aponto para public / bower ou public / vendor para manter o projeto simples.
Lfender6445 #

61

Eu tive o mesmo problema no meu Windows 10. Foi isso que corrigiu o meu problema

  1. Excluir bower_componentsna sua pasta raiz
  2. Crie um .bowerrcarquivo na raiz
  3. No arquivo, escreva este código {"directory" : "public/bower_components"}
  4. Execute um bower install

Você deve ver a pasta bower_components na sua pasta pública agora


23

Algo que vale a pena mencionar ...

Conforme observado acima por outros colaboradores, usando um .bowerrcarquivo com o JSON

{ "directory": "some/path" }

é necessário - no entanto, você pode encontrar um problema no Windows enquanto cria esse arquivo. Se o Windows fornecer uma mensagem pedindo que você adicione um " nome de arquivo ", basta usar um editor de texto / IDE como o Notepad ++.

Adicione o JSON a um arquivo sem nome, salve-o como .bowerrc - você está pronto !

Provavelmente é uma suposição fácil, mas espero que isso poupe aos outros a dor de cabeça desnecessária :)


18
No Windows, para criar um arquivo que comece com ".", Basta criar o arquivo com um "." À direita. Em outras palavras, basta chamá-lo de ".bowerrc".
PeteK68

você pode fazer isso com o git bash também, basta digitar:echo >> .bowerrc
Leandro RR

7

Tente colocar o components.jsonarquivo no publicdiretório do seu aplicativo, em vez do diretório raiz, e execute novamente bower install... tente isso no diretório inicial do aplicativo:

cp components.json public
cd public
bower install

1
Sim, isso pode ser uma maneira, existe uma maneira legítima de fazer isso? mas ainda contarei isso como uma resposta.
precisa

2
você pode escrever um script bash bower.shpara incluir o diretório em que deseja instalar, como `public-components.json ', em seguida, ele geraria os comandos acima ..
hagope

2
Ambas as respostas soam Super hacky, definitivamente não é desejável
Jay

-3

Oi eu sou o mesmo problema e resolver isso.

usuário do Windows e vs não podem criar o arquivo .bowerrc.

no cmd vá em qualquer pasta

instale todos os pacotes que contêm o arquivo .bowerrc, por exemplo

bower install angular-local-storage

este plugin contém o arquivo .bowerrc. copie isso e vá para o seu projeto e cole este arquivo.

e no visual studio - Solution Explorer - mostre todos os arquivos e inclua o arquivo .bowerrc do projeto visto

eu resolvo isso maneiras :)


você pode usar Cygwinou Cmderterminal para criar .bowerrcarquivo.
Francis.TM

4
Basta criar o arquivo com qualquer nome, abrir um PowerShell ou Prompt de Comando e renomeá-lo.
TrueWill

Você pode criar um arquivo de ponto no Windows especificando o nome do arquivo como '.name'. - ainda muitas pessoas não sabem isso depois de tantos anos de este estar disponível :)
Alex Paven
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.