2012-09-11 6 views
7

Ich habe ein Symfony 2.1-Projekt, mit zusätzlichen Bundles über Composer installiert. Ich möchte es auf meinem Produktionsserver bereitstellen, aber ich frage mich, ob ich irgendwelche Dinge in der Datei composer.json ändern muss. Hier ist mein aktueller Dateiinhalt:Wie sollte meine Datei composer.json in der Produktionsumgebung aussehen?

{ 
    "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" 
    } 
} 

Soll ich die minimum-stability Einstellung zu ändern?

Sollte ich alle Anforderungen an eine einzige Version ohne Platzhalter oder "dev-master" beheben?

Soll ich auf http://packagist.org/ die letzte stabile Version jeder Abhängigkeit suchen?

Antwort

11

Ich denke, das wichtigste ist dein composer.lock, nicht so sehr der composer.json.

Stellen Sie Ihre App auf einem Testserver php composer.phar install bereit, und führen Sie dann die Tests aus, um sicherzustellen, dass alles in Ordnung ist. Wenn es in der Tat in Ordnung ist, stellen Sie es zusammen mit composer.lock auf dem Produktionsserver bereit.

Auf diese Weise werden Ihre Deps genauso wie Ihr Testserver. Dies ist auch nützlich, wenn Sie mehrere Front-Server haben, der composer.lock stellt sicher, dass jeder den exakt gleichen Code verwendet.

sagte Sie

Soll ich alle Anforderungen an eine einzelne Version zu beheben, ohne Platzhalter oder "dev-master"?

Dies ist die Rolle des composer.lock alles zu „reparieren“. Bei composer.json geht es darum, die Abhängigkeiten zu deklarieren und mögliche Inkompatibilitäten zwischen den Versionen zu behandeln. Standardmäßig sollten Sie bei den stabilen Versionen bleiben, es sei denn, Sie benötigen eine neue Funktion im Entwicklungszweig oder eine Bugfixe, die noch nicht zusammengeführt wurde.

Daher sollten Sie Ihren composer.lock versionieren, das ist einfacher für die automatische Bereitstellung.

+0

Große Antwort, aber könnten Sie den Schritt "Deploy your app" näher erläutern? Welche Composer-Dateien brauche ich? Offensichtlich die .phar- und .lock-Dateien. Brauche ich noch das composer.json? Was ist mit der composer_installer.php? –

+1

@BenjaminBrizzi Nun, ich kann nicht mehr die "Deploy your App" ausarbeiten. Composer kümmert sich nur um Abhängigkeiten, nicht um Ihre Anwendung selbst. Normalerweise kann eine "Bereitstellung Ihrer App" ein "Git-Klon" sein. Sie benötigen immer noch den 'composer.json', da er die Deps-Liste enthält. 'composer.lock' gibt nur an, welche Versionen genau installiert werden sollen. Ich weiß nicht, was composer_installer.php ist, sorry. –

Verwandte Themen