Pregunta

Mi proyecto consiste en múltiples paquetes Algunos de ellos son necesarios y algunos usaré en servidores específicos.Ahora necesito agregar dependencias para un paquete no requerido.Siento que es un desperdicio para agregarlo como una dependencia del proyecto en el compositor principal.json ya que podría no usar ese código si no uso el paquete.

¿Es posible tener un archivo composit.json dentro de ese paquete?Si no es posible, ¿cómo puedo manejar mi caso?

Ejemplo

src/
   Project/
      RequiredFirstBundle/
      RequiredSecondBundle/
      Non-RequiredBundle/
              composor.json 

Lo intenté:

//Path: src/Project/Non-RequiredBundle/composer.json

{
    "name": "project/non-requiredbundle",
    "description": "desc",
    "type": "symfony-bundle",
    "license": "MIT",
    "authors": [
        {
            "name": "name",
            "email": "email"
        }
    ],
    "require": {
        "symfony/framework-bundle": "~2.2",
        "another/dependency": "*"
    },
    "autoload": {
        "psr-0": { "Project\\Non-RequiredBundle": "" }
    },
    "target-dir": "Project/Non-RequiredBundle"
}

pero no veo que el archivo se usa cuando ejecuto composer.phar update

gracias

¿Fue útil?

Solución

Si le entiendo correctamente, está pensando en tener una versión de software que contiene todo e implementarlo en todas partes, o tener varias versiones con diferentes dependencias implementadas en el servidor individual de ese software.

No creo que la razón debería ser para ahorrar algunos bytes en el disco duro.

Pero el compositor no puede ayudarte con esto.De hecho, se le obliga a incluir cualquier dependencia que desee usar en algún lugar en ese compositor. JSON para que el compositor lo incluya en el autocargador.

Iría con la "versión de una versión" y simplemente incluir la dependencia de la dependencia.No es necesario preocuparse por la implementación de piezas de software que no se utilizan.Lo harás todo el tiempo, incluso con las partes que cree que los usuarios usarán.

Otros consejos

Si desea compartir algunos de sus paquetes, debe desarrollarlos como vendorbundos como los de tercera parte.Por lo tanto, debe crear un repositorio de control de versión para cada uno de sus paquetes y agregar un compositor.json para cada paquete.Para que sus paquetes estén disponibles para el archivo compositor de Symfony, debe agregar su URL de VersionCrol como un recurso.Podría parecer algo así:

"repositories": [
    {
        "type": "vcs"
        "url": "https://github.com/igorw/monolog"
    }
],

Codificación feliz :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top