2012-09-11 8 views
7

Tengo un proyecto Symfony 2.1, con paquetes adicionales instalados a través de compositor. Quiero implementarlo en mi servidor de producción, pero me pregunto si necesito cambiar alguna cosa en el archivo composer.json. Aquí está el contenido de mi archivo actual:¿Cómo debería verse mi archivo composer.json en el entorno de producción?

{ 
    "name": "symfony/framework-standard-edition", 
    "description": "The \"Symfony Standard Edition\" distribution", 
    "autoload": { 
     "psr-0": { "": "src/" } 
    }, 
    "require": { 
     "php": ">=5.3.3", 
     "symfony/symfony": "2.1.1", 
     "doctrine/orm": ">=2.2.3,<2.4-dev", 
     "doctrine/doctrine-bundle": "1.0.*", 
     "twig/extensions": "1.0.*", 
     "symfony/assetic-bundle": "2.1.*", 
     "symfony/swiftmailer-bundle": "2.1.*", 
     "symfony/monolog-bundle": "2.1.*", 
     "sensio/distribution-bundle": "2.1.*", 
     "sensio/framework-extra-bundle": "2.1.*", 
     "sensio/generator-bundle": "2.1.*", 
     "jms/security-extra-bundle": "1.2.*", 
     "jms/di-extra-bundle": "1.1.*", 

     "friendsofsymfony/user-bundle": "*", 
     "knplabs/knp-paginator-bundle": "dev-master", 
     "ornicar/gravatar-bundle": "dev-master", 
     "liip/url-auto-converter-bundle": "dev-master" 
    }, 
    "scripts": { 
     "post-install-cmd": [ 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 
     ], 
     "post-update-cmd": [ 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 
      "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 
     ] 
    }, 
    "config": { 
     "bin-dir": "bin" 
    }, 
    "minimum-stability": "dev", 
    "extra": { 
     "symfony-app-dir": "app", 
     "symfony-web-dir": "web" 
    } 
} 

¿Debo cambiar la configuración minimum-stability?

¿Debo arreglar cada requisito a una sola versión, sin comodín o "dev-master"?

¿Se supone que debo buscar en http://packagist.org/ la última versión estable de cada dependencia?

Respuesta

11

Creo que lo más importante es tu composer.lock, no tanto el composer.json.

Despliegue su aplicación en un servidor de prueba, php composer.phar install, luego ejecute las pruebas para asegurarse de que todo esté correcto. Si está bien, simplemente impleméntelo en el servidor de producción junto con el composer.lock.

De esta forma, sus deps serán exactamente iguales que su servidor de prueba. Esto también es útil si tiene múltiples servidores frontales, el composer.lock se asegurará de que todos usen exactamente el mismo código.

Dijiste

¿Debo corregir todos los requisitos para una única versión, sin comodines, o "dev-master"?

Este es el papel del composer.lock para "arreglar" todo. The composer.json trata de declarar las dependencias y manejar posibles incompatibilidades entre versiones. De forma predeterminada, debe seguir con las versiones estables, a menos que necesite alguna nueva característica elegante en la rama de desarrollo, o una solución de error aún no fusionada.

Por lo tanto, debe versionar su composer.lock, eso es más fácil para la implementación automática.

+0

Excelente respuesta, pero ¿podría detallar el paso "implementar su aplicación"? ¿Qué archivos de compositor necesito? Obviamente, los archivos .phar y .lock. ¿Todavía necesito el compositor.json? ¿Qué pasa con el composer_installer.php? –

+1

@BenjaminBrizzi Bueno, no puedo elaborar más la "implementación de su aplicación". Composer solo se ocupa de las dependencias, no de su aplicación en sí misma. Por lo general, un "despliegue de su aplicación" puede ser un 'git clone'. Todavía necesita el 'composer.json', ya que contiene la lista deps. 'composer.lock' solo especifica qué versiones exactamente quieres tener instaladas. No sé qué es composer_installer.php, lo siento. –

Cuestiones relacionadas