Como desarrollar un bundle reusable de Symfony 2 dentro de la carpeta SRC


El problema desarrollar un bundle reusable dentro de SRC

Una de las grandes ventajas de symfony es la capacidad para incorporar Bundles creados por terceros a nuestra librerias. Esto es una gran ayuda para los desarrolladores que de forma relativamente sencilla podemos incorporar nuevas funcionalidades de código abierto en Github llamados Bundles.

En muchos proyectos no es necesario desarrollar nuevos bundles reusables, Pues la funcionalidad que necesitamos se encuentra dentro de algún otro bundle que podemos agregar facilmente con composer, por lo que nuestro código es básicamente de integración entre nuestras especificaciones y requisitos propios y los ya incorporados por algún otro bundle.

Pero que pasa si queremos desarrollar un bundle reusable al mismo tiempo que lo vamos integrando en alguna otra aplicación?

 

Pues bien, Aunque ya tengo casi dos años de experiencia desarrollando aplicaciones a medida en Symfony, este era un tema en el que todavía no me habia entretenido. La necesidad surge al desarrollar un bundle dentro de mi propia aplicación que pueda ser compartida en github y rehusado en otros proyectos. No queria establecer el bundle fuera del proyecto, lo único que realmente necitaba era poder realizar el desarrollo del bundle de forma habitual, dentro de la carpeta src de symfony, pero al hacer lo, asegurarme que es completamente instalable y reusable en otros proyectos desde el principio. 

La solución: Repositorio local de GIT en composer para nuestro bundle reusable

Para poder usar mi bundle en desarrollo dentro de SRC y que sea tomado en cuenta por composer es necesario añadir un repositorio local al archivo composer.json de nuestro proyecto principal:

Ademas este bundle dependia de otro bundle que debia ser cargado solo cuando sea necesario.

...
//tuproyecto/composer.json
"repositories": {
        "el-nombre-de-tu-bundle": {
            "name": "usuario-git/nombre-bundle",
            "type": "path",
            "url": "/ruta/absolute/hasta/tu/bundle/src/tu-vendor-name/TuBundle/"
        }
    },
...
"require": {
    "usuario-git/nombre-bundle":    "dev-master"
},
...

Con esto le estamos diciendo a composer donde se encuentra nuestro bundle local en desarrollo. Composer tratará de encontrar en el directorio de nuestro bundle un archivo composer.json:

{
//tuproyecto/src/tu-vendor-name/TuBundle/composer.json
    "name" : "usuario-git/nombre-bundle",
    "version" : "dev-master",
    "description" : "Descripción de tu Bundle",
    "type" : "symfony-bundle",
    "authors" : [{
        "name" : "ProyectsBundle",
        "email" : "joao@informatico-madrid.com"
    }],
    "keywords" : [
        "Proyect bundle github"
    ],
    "license" : [
        "MIT"
    ],
    "require" : {
        ...
        "OTRA-DEPENDENCIA-DE-TERCEROS": "*"
        ...
    },
    "autoload" : {
        "psr-0" : {
            "JoaoIm\\ProyectBundle" : ""
        }
    },
    "target-dir" : "JoaoIm/Bundle/ProyectsBundle",
    "extra" : {
    "branch-alias" : {
            "dev-master" : "0.1-dev"
        }
    }
}


Bien ahora composer encontrará un archivo que puede entender para manejar las dependencias de nuestro bundle en desarrollo.yes

Solo una última cosa.

Esta no es la forma adecuada seguramente de desarrollar un  bundle independiente. Se supone que en algun momento tendrás que dejar escapar éste bundle de nuestra carpeta SRC. Quizas el proyecto con el que empezaste el desarrollo de este bundle se acabe, y no quieras acceder a este proyecto solo para desarrollar nuestro bundle. Este apaño a mi entender debería ser temporal únicamente para facilitarnos el desarrollo en un momento dado.

Debido a esto último es necesario que incluyamos en nuestro composer.json del proyecto principal la estabilidad mínima a "dev", de lo contrario las dependencias dentro de nuestro bundle de desarrollo podrían no ser encontradas por composer.

...
"minimum-stability": "dev",
"prefer-stable": true,
...

Sugerencias y críticas son siempre bienvenidas.

Joao Maria Arranz Aparicio

Desarrollador web a medida Freelance

Publicado el 14/12/2015 a las 17:46

Comentarios en el post


Esta web utiliza cookies, puedes ver nuestra la política de cookies, aquí Si continuas navegando estás aceptándola
Política de cookies +