¿Cómo especificar la ruta de instalación de Composer?


Tengo esta definición:

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "symfony/sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "symfony/sfGuardPlugin": "4.0.*"
    }
}

Estoy usando Symfony 1, y me gustaría instalarlos en plugins/sfGuardPlugin/. ¿Cómo puedo especificar esto?

Author: j0k, 2012-08-09

3 answers

Parece que puede definir el vendor dir a ser algo más (plugins en su caso):

{
    "config": {
        "vendor-dir": "plugins"
    }
}

Entonces, puede cambiar el nombre del paquete para que no tenga un directorio de nivel dentro, como:

        "package": {
            "name": "sfGuardPlugin",

Entonces, tu composer.json debería verse así:

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}

Editar

Usando esta configuración, obtendrá la ruta (que es por supuesto no es buena para symfony):

Plugins / sfGuardPlugin / sfGuardPlugin-4.0.2 /

I se encontró una solución con esto composer.json:

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "source": {
                    "url": "http://svn.symfony-project.com/plugins/sfGuardPlugin/",
                    "type": "svn",
                    "reference": "branches/1.3/"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}
 118
Author: j0k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-14 07:26:04

También puede usar composer/installers, un instalador de la biblioteca multi-framework composer con el tipo de paquete "symfony1-plugin". Esto es lo que mi compositor.el archivo json parece, para que pueda instalar Symfony 1.4 (en lib / vendor) y plugins en (/plugins):

{
    "config": {
        "vendor-dir": "lib/vendor"
    },
    "repositories": {
        "symfony": {
            "type": "package",
            "package": {
                "name": "symfony/symfony1",
                "version": "1.4",
                "dist": {
                    "url": "https://github.com/symfony/symfony1/zipball/1.4",
                    "type": "zip"
                }
            }
        },
        "sfResquePlugin" : {
            "type": "package",
            "package": {
                "name": "devpips/sfResquePlugin",
                "type": "symfony1-plugin",
                "version": "0.1",
                "dist": {
                    "url": "https://github.com/devpips/sfResquePlugin/zipball/master",
                    "type": "zip"
                }
            }
        }
    },
    "require": {
        "composer/installers": "dev-master",
        "symfony/symfony1": "1.4",
        "devpips/sfResquePlugin":"0.1"
    }
}
 26
Author: Adam V.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-19 00:16:13

Véase COMPOSER_VENDOR_DIR variable de entorno.

Al establecer esta var, puede hacer que Composer instale las dependencias en un directorio que no sea vendor.

Puede ser útil en el caso de que desee anular esto en un entorno particular, como vagrant, donde no desea que esto esté en una carpeta compartida.

Y como dijo J0k, hay vendor-dir en la sección config de composer.json

El valor predeterminado es vendor. Puede instalar dependencias en un directorio diferente si quieres. HOME HOME y ~ serán reemplazados por la ruta de su directorio home en vendor-dir y todas las opciones *-dir a continuación.

 5
Author: GabLeRoux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-18 18:58:18