Instalando uma Dependência com o Bower a Partir da URL e Especifique a Versão

154

Estou tentando instalar uma dependência do Bower usando um URL. A partir da documentação do Bower:

O Bower oferece várias maneiras de instalar pacotes:

    # Using the dependencies listed in the current directory's bower.json 
    bower install
    # Using a local or remote package 
    bower install <package>
    # Using a specific version of a package 
    bower install <package>#<version>
    # Using a different name and a specific version of a package 
    bower install <name>=<package>#<version> 

Onde <package>pode ser qualquer um dos seguintes:

  • Um nome que mapeia para um pacote registrado no Bower, por exemplo, jquery.
  • Um terminal Git remoto, por exemplo git://github.com/someone/some-package.git,. Pode ser público ou privado.
  • Um terminal local, ou seja, uma pasta que é um repositório Git.
  • Um ponto final abreviado, por exemplo, someone/some-package (o padrão é GitHub).
  • Uma URL para um arquivo, incluindo arquivos zip e tar. Seu conteúdo será extraído.

No entanto, então, diz que todos os tipos, exceto a URL, permitem especificar uma versão.

Como especifico uma versão para uma dependência de URL baixada?

Edmondo1984
fonte

Respostas:

194

Use um ponto de extremidade git em vez de um nome de pacote:

bower install https://github.com/jquery/jquery.git#2.0.3
Sindre Sorhus
fonte
8
Este é um ponto de extremidade do Git e a especificação do controle de versão funciona. Se você especificar, por exemplo, um arquivo Javascript diretamente, isso não funciona
Edmondo1984
1
URLs são permitidos em versões recentes do bower.
Lfender6445
BTW: também funciona com svn, por exemplobower install crypto-js=svn+http://crypto-js.googlecode.com/svn/#~3.1.2 --save
Preexo 27/10
5
se você tiver um erro ENORESTARGET URL sources can't resolve targetsao tentar instalar a partir git com um committish, você tem que mudar https://github.com/jquery/jquerypara https://github.com/jquery/jquery.git(add .git)
jakub.g
2
O bower normaliza a tag da versão para prefixá-la com a v? Quando eu faço, bower install https://github.com/my/repo.git#1.0.0ele funciona, mesmo que a tag que eu pressionei tenha sido chamada v1.0.0.
spinningarrow
54

Se você usar o arquivo bower.json para especificar suas dependências:

{
     "dependencies": {
         ...
         "photo-swipe": "[email protected]:dimsemenov/PhotoSwipe.git#v3.0.x",

#bower 1.4 (tested with that version) can read repositorios with uri format

         "photo-swipe": "git://github.com/dimsemenov/PhotoSwipe.git#v3.0.x",

     }
}

Lembre-se de que o bower também procura versões e tags lançadas para que você possa apontar para quase tudo e interpretar padrões básicos de consulta, como no exemplo anterior. que buscará a última atualização secundária da versão 3.0 (testada no bower 1.3.5)

Atualização , como a descrição da pergunta também menciona o uso de apenas uma URL e nenhuma menção a um repositório do github.

Outro exemplo é executar este comando usando o URL desejado, como:

bower install gmap3MarkerWithLabel=http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerwithlabel/1.0/src/markerwithlabel.js -S

esse comando baixa sua biblioteca js e coloca {seu caminho de destino} /gmap3MarkerWithLabel/index.js e cria automaticamente uma entrada no arquivo bower.json chamada gmap3MarkerWithLabel: "..." Depois disso, você pode executar apenas bower update gmap3MarkerWithLabelse necessário.

O engraçado é que, se você faz o processo de retrocesso (adicione manualmente a entrada em bower.json, e então nome da instalação do bower), ele não funciona, você recebe um

bower ENOTFOUND Pacote gmapV3MarkerWithLabel não encontrado

le0diaz
fonte
++ RE ressalva sobre fazer as costas processo
jacob
A partir de 2018. As pessoas devem se afastar do bower, não mais em desenvolvimento, e usar qualquer outra ferramenta de gerenciamento de pacotes como o Yarn. Tivemos problemas porque muitos desenvolvedores de bibliotecas de terceiros pararam de liberar pacotes bower para seguir uma maneira melhor padronizada. O fio é muito mais rápido que o pavilhão e é realmente fácil de migrar.
Le0diaz
21

Direcionando um commit específico

Remoto (github)

Ao usar o github, observe que você também pode direcionar um commit específico (por exemplo, um fork que você fez e atualizou) anexando seu hash de commit no final do URL do clone. Por exemplo:

"dependencies": {
  "example": "https://github.com/owner_name/repo_name.git#9203e6166b343d7d8b3bb638775b41fe5de3524c"
}

Localmente (sistema de arquivos)

Ou você pode direcionar um commit git no seu sistema de arquivos local se você usar o diretório .git do seu projeto, assim (no Windows; observe as barras):

"dependencies": {
  "example": "file://C:/Projects/my-project/.git#9203e6166b343d7d8b3bb638775b41fe5de3524c"
}

Essa é uma maneira de testar o código da biblioteca que você confirmou localmente, mas ainda não foi enviado ao repositório.

JcT
fonte
1
Obrigado! Eu estava usando um componente bower bifurcado com um patch e ele continuava instalando o mais recente, de acordo com o arquivo bower principal daquele repositório. A adição do hash de confirmação permitiu que eu baixasse minha versão mais recente.
elliottregan
9

Apenas uma atualização.

Agora, se for um repositório do github, basta usar uma abreviação do github se você não se importar com a versão, é claro.

Taquigrafia do GitHub

$ bower install desandro/masonry
Turdaliev Nursultan
fonte
7

Aqui está uma maneira prática de instalar uma tag específica ou confirmar no GitHub via bower.json.

{
  "dependencies": {
    "your-library-name": "<GITHUB-USERNAME>/<REPOSITORY-NAME>#<TAG-OR-COMMIT>"
  }
}

Por exemplo:

{
  "dependencies": {
    "custom-jquery": "jquery/jquery#2.0.3"
  }
}
F Lekschas
fonte
Por curiosidade, é possível direcionar um diretório específico do repositório? [email protected]#v0.1.0/directory?
Rhys
7

Apenas especificando o endpoint uri funcionou para mim , bower 1.3.9

  "dependencies": {
    "jquery.cookie": "latest",
    "everestjs": "http://www.everestjs.net/static/st.v2.js"
  }

Em execução bower install, recebi a seguinte saída:

bower new           version for http://www.everestjs.net/static/st.v2.js#*
bower resolve       http://www.everestjs.net/static/st.v2.js#*
bower download      http://www.everestjs.net/static/st.v2.js

Você também pode tentar atualizar o caramanchão

  • npm update -g bower

De acordo com a documentação : os seguintes tipos de URLs são suportados:

http://example.com/script.js
http://example.com/style.css
http://example.com/package.zip (contents will be extracted)
http://example.com/package.tar (contents will be extracted)
lfender6445
fonte
3

Acredito que especificar a versão funcione apenas para pontos de extremidade git. E não para pastas / zip. Como quando você aponta o arquivo para js-file / folder / zip, você já especificou o pacote e a versão (exceto js de fato). Porque um pacote possui bower.json com a versão nele. Especificar uma versão em 'instalação do bower' faz sentido quando você está apontando o bower para um repositório que pode ter muitas versões de um pacote. Só pode ser idiota, eu acho.

Picanço
fonte
3

Experimente bower install git://github.com/urin/jquery.balloon.js.git#1.0.3 --saveonde 1.0.3está o número da tag que você pode obter lendo a tag em releases. Também para URL, substitua por git://para que o sistema se conecte.

SACn
fonte
0

Instala o pacote do git e salve no seu bloco de dependência bower.json.

  1. bower register package-name git-endpoint#version
  2. install package-name --save

( --savesalvará a versão do nome do pacote no arquivo bower.json dentro do bloco de dependência).

Referência

Shafeeq Diaz
fonte