Instalar una dependencia con Bower desde la URL y especificar la versión

154

Estoy tratando de instalar una dependencia con Bower usando una URL. A partir de la documentación de Bower:

Bower ofrece varias formas de instalar paquetes:

    # 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> 

Donde <package>puede ser cualquiera de los siguientes:

  • Un nombre que se asigna a un paquete registrado con Bower, por ejemplo, jquery.
  • Un criterio de valoración Git remoto, por ejemplo, git://github.com/someone/some-package.git. Puede ser público o privado.
  • Un punto final local, es decir, una carpeta que es un repositorio de Git.
  • Un punto final abreviado, por ejemplo, someone/some-package (predeterminado en GitHub).
  • Una URL a un archivo, incluidos los archivos zip y tar. Su contenido será extraído.

Sin embargo, luego dice que todos los tipos, excepto la URL, permiten especificar una versión.

¿Cómo especifico una versión para una dependencia descargada de URL?

Edmondo1984
fuente

Respuestas:

194

Use un punto final git en lugar de un nombre de paquete:

bower install https://github.com/jquery/jquery.git#2.0.3
Sindre Sorhus
fuente
8
Este es un punto final de Git, y la especificación de las versiones funciona. Si especifica, por ejemplo, un archivo Javascript directamente, esto no funciona
Edmondo1984
1
Las URL están permitidas con versiones recientes de Bower.
lfender6445
Por cierto: también funciona con svn, por ejemplobower install crypto-js=svn+http://crypto-js.googlecode.com/svn/#~3.1.2 --save
Preexo
55
si tiene un error ENORESTARGET URL sources can't resolve targetsal intentar instalar desde git con un committish, debe cambiar https://github.com/jquery/jquerya https://github.com/jquery/jquery.git(agregar .git)
jakub.g
2
¿Bower normaliza la etiqueta de versión para prefijarla con a v? Cuando lo hago bower install https://github.com/my/repo.git#1.0.0, funciona a pesar de que se llamó a la etiqueta real que presioné v1.0.0.
spinningarrow
54

Si usa el archivo bower.json para especificar sus dependencias:

{
     "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",

     }
}

Solo recuerde que bower también busca versiones y etiquetas lanzadas para que pueda apuntar a casi todo y pueda interpretar patrones de consulta básicos como el ejemplo anterior. eso traerá la última actualización menor de la versión 3.0 (probado desde bower 1.3.5)

Actualización , ya que la descripción de la pregunta también menciona el uso de solo una URL y ninguna mención de un repositorio de github.

Otro ejemplo es ejecutar este comando usando la url deseada, como:

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

ese comando descarga su biblioteca js coloca en {su ruta de destino} /gmap3MarkerWithLabel/index.js y crea automáticamente una entrada en su archivo bower.json llamada gmap3MarkerWithLabel: "..." Después de eso, solo puede ejecutar bower update gmap3MarkerWithLabelsi es necesario.

Lo curioso es que si hace el proceso de guerra inversa (agregue manualmente la entrada en bower.json, luego el nombre de entrada de instalación de bower) no funciona, obtiene un

bower ENOTFOUND Package gmapV3MarkerWithLabel no encontrado

le0diaz
fuente
++ RE advertencia sobre hacer el proceso al revés
jacob
A partir de 2018. La gente debería alejarse de Bower, ya no en desarrollo, y usar cualquier otra herramienta de administración de paquetes como Yarn. Hemos tenido problemas ya que muchos desarrolladores de bibliotecas de terceros dejaron de lanzar paquetes Bower para ir de una manera mejor estandarizada. El hilo es mucho más rápido que el bower y realmente fácil de migrar.
le0diaz
21

Apuntar a una confirmación específica

Remoto (github)

Cuando use github, tenga en cuenta que también puede apuntar a una confirmación específica (por ejemplo, de una bifurcación que ha realizado y actualizado) agregando su hash de confirmación al final de su URL de clonación. Por ejemplo:

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

Localmente (sistema de archivos)

O puede apuntar a un git commit en su sistema de archivos local si usa el directorio .git de su proyecto, de esta manera (en Windows; tenga en cuenta las barras diagonales):

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

Esta es una forma de probar el código de la biblioteca que ha confirmado localmente pero que aún no ha enviado al repositorio.

JcT
fuente
1
¡Gracias! Estaba usando un componente bower bifurcado con un parche, y seguía instalando lo último de acuerdo con el archivo bower principal para ese repositorio. Agregar el hash commit me permitió descargar mi versión más reciente.
elliottregan
9

Solo una actualización.

Ahora, si se trata de un repositorio de github, usar solo una abreviatura de github es suficiente si no te importa la versión, por supuesto.

Taquigrafía de GitHub

$ bower install desandro/masonry
Turdaliev Nursultan
fuente
7

Aquí hay una forma práctica de instalar una etiqueta o confirmación específica desde GitHub a través de bower.json.

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

Por ejemplo:

{
  "dependencies": {
    "custom-jquery": "jquery/jquery#2.0.3"
  }
}
F Lekschas
fuente
Solo por curiosidad, ¿es posible apuntar a un directorio específico desde el repositorio? [email protected]#v0.1.0/directory?
Rhys
7

Solo especificar el punto final uri funcionó para mí , bower 1.3.9

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

En ejecución bower install, recibí el siguiente resultado:

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

También podrías intentar actualizar Bower

  • npm update -g bower

Según la documentación : se admiten los siguientes tipos de URL:

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
fuente
3

Creo que especificar la versión solo funciona para git-endpoints. Y no para carpetas / zip. Como cuando señala bower a un archivo js / carpeta / zip, ya especificó el paquete y la versión (a excepción de js). Porque un paquete tiene bower.json con versión en él. Especificar una versión en 'bower install' tiene sentido cuando apunta bower a un repositorio que puede tener muchas versiones de un paquete. Puede ser solo git, creo.

Alcaudón
fuente
3

Pruebe bower install git://github.com/urin/jquery.balloon.js.git#1.0.3 --savedónde 1.0.3está el número de etiqueta que puede obtener leyendo la etiqueta en las versiones. También para reemplazar URL por git://para que el sistema se conecte.

SACn
fuente
0

Instala el paquete desde git y lo guarda en su bloque de dependencia bower.json.

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

( --saveguardará la versión del nombre del paquete en el archivo bower.json dentro del bloque de dependencia).

Referencia

Shafeeq Diaz
fuente