[Symfony2] "parametrizar" composer.json

33 views
Skip to first unread message

Valentin Boyanov

unread,
Sep 18, 2015, 1:46:41 PM9/18/15
to PHP Valencia
Muy buenas a todos!

Hace poco empece a usar Vagrant. Entonces para mis aplicaciones con symfony tuve que cambiar en composer.json el directorio de los vendors para mejorar el rendimiento. El problema de esto es que necesito cambiar este directorio en función de la maquina donde se ejecuta la aplicación (linux/windows). Estuve buscando en internet si hay alguna manera de "parametrizar" este dato en función del entorno, pero no he podido encontrar como hacerlo. Si alguien sabe como podría configurar mi composer.json en función de la maquina donde se ejecuta me seria de mucha ayuda :) No sé si existe algún mecanismo como parameters,yml pero para la configuración en composer.

Muchas gracias!

Valentin Boyanov

unread,
Oct 2, 2015, 1:38:40 PM10/2/15
to PHP Valencia


Hola a todos :)

Al final he resuelto mi problema sacando la carpeta de los vendos en el directorio padre del proyecto:

proyecto -> /var/www/proyecto

    "config": {
        "bin-dir": "bin",
        "vendor-dir": "../proyecto-vendor"
    },

Como la carpeta compartida con la maquina huésped es la del proyecto, se resuelve el tema del rendimiento.

Para la cache:

    public function getCacheDir()
    {
        if (preg_match("/var/i", __DIR__) && in_array($this->environment, array('dev', 'test'))) {
            return '/dev/shm/proyecto/cache/' . $this->environment;
        }
        return parent::getCacheDir();
    }
    public function getLogDir()
    {
        if (preg_match("/var/i", __DIR__) && in_array($this->environment, array('dev', 'test'))) {
            return '/dev/shm/proyecto/logs';
        }
        return parent::getLogDir();
    }

Así en desarrollos con Vagrant(linux) pues, la cache se coloca donde no molesta para el rendimiento. Si es una maquina Windows, pues se mantienen los directorios.

Espero que sea de ayuda :)

Saludos!

Valentin Boyanov

unread,
Oct 2, 2015, 1:40:06 PM10/2/15
to PHP Valencia
    "config": {
        "bin-dir": "bin",
        "vendor-dir": "../proyecto-vendor"
    },

Este codigo esta en el archivo composer.json

    public function getCacheDir()
    {
        if (preg_match("/var/i", __DIR__) && in_array($this->environment, array('dev', 'test'))) {
            return '/dev/shm/proyecto/cache/' . $this->environment;
        }
        return parent::getCacheDir();
    }
    public function getLogDir()
    {
        if (preg_match("/var/i", __DIR__) && in_array($this->environment, array('dev', 'test'))) {
            return '/dev/shm/proyecto/logs';
        }
        return parent::getLogDir();
    }

Este en AppKernel.php
Reply all
Reply to author
Forward
0 new messages