2012-07-26 23 views
53

he podido instalar repositorios que no tienen un archivo composer.json así:¿Cómo instalar jQuery con Composer?

{ 
     "type": "package", 
     "package": { 
      "name": "yahoo/yui-compressor", 
      "version": "2.0.4", 
      "dist": { 
       "url": "http://yui.zenfs.com/releases/yuicompressor/yuicompressor-2.4.7.zip", 
       "type": "zip" 
      } 
     } 
    }, 

Tomé el "tipo": "zip" parte de la documentación, pero no pudimos encontrar muchos otros tipos. Por ejemplo, necesito instalar jQuery, pero no sé qué poner en el tipo ("js" no funcionó).

{ 
     "type": "package", 
     "package": { 
      "name": "jquery/jquery", 
      "version": "1.7.2", 
      "dist": { 
       "url": "http://code.jquery.com/jquery-1.7.2.js", 
       "type": "js" 
      } 
     } 
    } 

¿Alguna idea?

EDITAR: estoy añadiendo la solución completa para ayudar @CMCDragonkai:

"require": { 
     "vendorname/somefile": "1.2.3", 
    }, 
    "repositories": [ 
     { 
      "type": "package", 
      "package": { 
       "name": "vendorname/somefile", 
       "version": "1.2.3", 
       "dist": { 
        "url": "http://example.com/somefile.txt", 
        "type": "file" 
       } 
      } 
     } 
    ] 
+1

Actualmente estoy usando un [CDN] (http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery), pero me me gusta obtener jQuery por Composer o submódulos de git también. No me gusta la idea de poner bibliotecas de terceros en mis repositorios. Por cierto, [la popularidad de JS en GitHub] (https://github.com/languages) está sobrevalorada debido a todo este copypasta JS que tiene lugar. –

+1

2013 casi ha terminado y todavía no hay un paquete jquery/jquery. Esto es muy extraño. – Sliq

+0

Choco! ¡Hola! Ahora tiene el archivo jQuery js en el directorio del proveedor y ¿ahora qué? ¿Tienes que agregar src a este archivo manualmente o el compositor tiene que cargarlo solo? Estoy tratando de cargar jQuery de forma automática y lo incluyo en mi sitio. ¿Es posible o no entiendo para qué se utiliza Composer? –

Respuesta

32

Esto es simplemente una característica que falta. Probablemente exista un nuevo tipo de dist que sea solo un archivo de texto simple para descargar y dejar tal como está. Por favor, presentar una solicitud de función en el seguimiento de incidencias github: https://github.com/composer/composer/issues/

EDIT:

La característica actually exists pero no se documentó.

"type": "file" 
+1

Gracias, esta vez presenté este problema: https://github.com/composer/composer/issues/946 – ChocoDeveloper

+0

Stof comentó sobre el tema, la característica existe. Edité tu respuesta. – ChocoDeveloper

+0

Sería bueno saber si hay una manera de obtener múltiples archivos de un repositorio. Algunos complementos incluyen hojas de estilo e imágenes, ¿eso implicaría crear un paquete por archivo? – Jens

39

En realidad no hay una manera más fácil de instalar jQuery, teclee:

{ 
    "require": { 
     "components/jquery": "1.9.*" 
    } 
} 

Utiliza Component Installer for Composer y por defecto de todos los activos de componentes se instalan en components, pero se puede personalizar. (see docs).

+0

Esto no tiene nada que ver con la administración de paquetes de los componentes javascript ¿o sí? – CMCDragonkai

+0

'components/jquery' es [un repositorio de Shim para jQuery] (https://github.com/components/jquery#jquery-component) y el mismo repositorio funciona con Bower, Component y Composer –

+0

Esto funciona pero también se instala aproximadamente 1.8 MB de PHP no relacionado. – spinkus

2

Como se indicó anteriormente, la primera parte de la solución es definir sus propios repositorios y la opción de definición de repositorio "type: ": "file". Pero un problema posterior es lograr que el compositor coloque el JQuery donde lo desee. Tal como está, el compositor parece estar limitado a descargar la fuente de dependencia bajo vendor-dir (lo cual es molesto, pero probablemente esté relacionado con los requisitos de carga automática). La solución general a esta limitación es escribir un plugin de compositor que lo supere. Parece que hay algunos complementos que pueden administrar esto. La solución más simple y liviana que he encontrado es PHP Composer Asset Manager, que está dedicada a administrar "recursos" que no sean PHP/Composer. Sin embargo, tiene al menos una limitación en cuanto a que los cambios que hace el complemento no son gestionados/detectados por el compositor. Aún usable

Aquí hay una completa composer.json instalar jQuery usando ese plugin:

{ 
    "name": "foo/bar", 
    "require": 
    { 
    "phpclasses/assets": "*", 
    "jquery/jquery": "*" 
    }, 
    "repositories": [ 
    { 
    "type": "composer", 
    "url": "http://www.phpclasses.org/" 
    }, 
    { 
     "type": "package", 
     "package": { 
     "name": "jquery/jquery", 
     "version": "1.7.2", 
     "type": "jquery", 
     "dist": { 
      "url": "http://code.jquery.com/jquery-1.7.2.js", 
      "type": "file" 
     } 
     } 
    } 
    ], 
    "extra": { 
    "assets": { 
     "actions": [ 
     { 
      "type": "copy", 
      "target": "webroot/js", 
      "pattern": "\\.js$" 
     } 
     ], 
     "packages": { 
     "jquery/jquery": "*" 
     } 
    } 
    } 
} 
+0

Precaución: vale la pena observar que los nombres de los paquetes, tal como los procesa el complemento de Asset Manager, son ** en minúsculas **. Si usó paquetes de letras mayúsculas en "requerir", el complemento nunca los hará coincidir, incluso si los escribe de la misma manera en la sección "paquetes". – Gabriel

+1

También tenga en cuenta los ganchos de eventos: https://getcomposer.org/doc/articles/scripts.md. Estoy usando estos ahora. BESO. – spinkus