Si quieres establecer una dependencia con un proyecto que no soporta ninguno de los tipos de repositorios anteriores, puedes definir el paquete tu mismo a mano mediante el tipo de repositorio package
.
El proceso consiste en definir manualmente la misma información que se incluye en los archivos packages.json
de los repositorios de tipo composer
, pero en este caso solamente para un paquete. Las propiedades que obligatoriamente debes definir son name
, version
, y dist
o source
. Este ejemplo muestra cómo crear un paquete para el motor de plantillas Smarty:
{
"repositories": [
{
"type": "package",
"package": {
"name": "smarty/smarty",
"version": "3.1.7",
"dist": {
"url": "http://www.smarty.net/files/Smarty-3.1.7.zip",
"type": "zip"
},
"source": {
"url": "http://smarty-php.googlecode.com/svn/",
"type": "svn",
"reference": "tags/Smarty_3_1_7/distribution/"
},
"autoload": {
"classmap": ["libs/"]
}
}
}
],
"require": {
"smarty/smarty": "3.1.*"
}
}
Normalmente no se define la parte source
porque en este caso no se utiliza.
Nota Este tipo de repositorio tiene varias limitaciones y se aconseja evitarlo a toda costa. Entre otros problemas:
- Composer no actualiza estos paquetes a menos que cambies a mano su versión mediante la propiedad
version
. - Composer no actualiza las referenicas a los commits, así que si utilizas
master
como referencia, tendrás que borrar el paquete a mano para forzar a que se actualice. Esto causará problemas por tener un archivocomposer.lock
inestable.