2012-09-11 17 views
7

Ho un progetto Symfony 2.1, con bundle aggiuntivi installati tramite compositore. Voglio distribuirlo sul mio server di produzione, ma mi chiedo se è necessario modificare qualsiasi cosa nel file composer.json. Ecco il mio contenuto del file corrente:Come dovrebbe apparire il mio file composer.json nell'ambiente di produzione?

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

Devo cambiare l'impostazione minimum-stability?

Devo risolvere ogni requisito per una singola versione, senza carattere jolly o "dev-master"?

Devo cercare su http://packagist.org/ l'ultima versione stabile di ciascuna dipendenza?

risposta

11

Penso che il più importante sia il tuo compositore.lock, non tanto il compositore.

Distribuire l'app su un server di prova, php composer.phar install, quindi eseguire i test per verificare che tutto sia corretto. Se è davvero ok, basta implementare sul server di produzione insieme a composer.lock.

In questo modo i tuoi deps saranno esattamente uguali al tuo server di prova. Questo è utile anche se hai un front server multiplo, il compositore.lock assicurerà che tutti utilizzino lo stesso identico codice.

Lei ha detto

Devo risolvere ogni esigenza di un'unica versione, senza jolly, o "dev-master"?

Questo è il ruolo di compositore.lock per "sistemare" tutto. Il compositore.json riguarda la dichiarazione delle dipendenze e la gestione delle possibili incompatibilità tra le versioni. Per impostazione predefinita, è necessario attenersi alle versioni stabili, a meno che non si abbia bisogno di qualche nuova funzionalità nel ramo di sviluppo o di una correzione di bug non ancora unita.

Quindi, dovresti eseguire la versione di composer.lock, che è più semplice per la distribuzione automatica.

+0

Ottima risposta, ma potresti approfondire il passaggio "distribuisci la tua app"? Di quali file compositore ho bisogno? Ovviamente i file .phar e .lock. Ho ancora bisogno del compositore.json? Che dire di composit_installer.php? –

+1

@BenjaminBrizzi Bene, non riesco a elaborare più "distribuisci la tua app". Il compositore si occupa solo delle dipendenze, non della tua applicazione stessa. Di solito un "deploy your app" può essere un "git clone". Hai ancora bisogno di 'composer.json', dato che contiene l'elenco dei deps. 'compositore.lock' specifica solo quali versioni si desidera installare esattamente. Non so cosa sia composer_installer.php, mi dispiace. –

Problemi correlati