2012-10-26 25 views
21

Questo è il mio file composer.json:Composer - eseguire script solo in ambiente dev

"require": { 
    "php": ">=5.4", 
    "zendframework/zendframework": "2.*", 
    "doctrine/doctrine-module": "dev-master", 
    "doctrine/doctrine-orm-module": "0.*", 
    "gedmo/doctrine-extensions": "dev-master" 
}, 
"require-dev": { 
    "phpunit/phpunit": "3.7.*" 
}, 
"scripts": { 
    "post-update-cmd": [ 
     "rm -rf vendor/Behat", 
     "git clone git://github.com/Behat/Behat.git", 
     "cp composer.phar Behat/composer.phar", 
     "cd Behat && git submodule update --init", 
     "cd Behat && php composer.phar install", 
     "cd Behat && php composer.phar require guzzle/guzzle:3.0.*", 
     "mv Behat vendor/Behat", 
     "ln -sf ../Behat/bin/behat vendor/bin/" 
    ] 
} 

Come posso fare in modo gli script vengono eseguiti solo nell'ambiente dev?

Fondamentalmente voglio gli script da eseguire solo quando io chiamo:

php composer.phar update --dev 

risposta

29

Per fare l'aggiornamento ambiente non-sviluppo senza attivare gli script, utilizzare the --no-scripts command line switch for the update command:

php composer.phar update --no-scripts 
         ^^^^^^^^^^^^ 

dagli script Compositore di default vengono eseguiti solo nel pacchetto base. Quindi potresti avere un pacchetto per lo sviluppo e nell'ambiente di vita renderlo una dipendenza dal sistema live.

A parte questo, non vedo alcun modo per differenziare automaticamente gli script.

3

È possibile ottenere lo stesso effetto impostando uno script personalizzato per il percorso dev, invece di utilizzare il gancio post-update-cmd.

"scripts": { 
    "update-behat": [ 
     "rm -rf vendor/Behat", 
     "git clone git://github.com/Behat/Behat.git", 
     "cp composer.phar Behat/composer.phar", 
     "cd Behat && git submodule update --init", 
     "cd Behat && php composer.phar install", 
     "cd Behat && php composer.phar require guzzle/guzzle:3.0.*", 
     "mv Behat vendor/Behat", 
     "ln -sf ../Behat/bin/behat vendor/bin/" 
    ], 
    "dev-update": [ 
     "@composer update --dev", 
     "@update-behat" 
    ] 
} 

Poi basta eseguire php composer.phar dev-update

0

Ecco il piccolo pacchetto, che è possibile utilizzare per farlo https://github.com/neronmoon/scriptsdev Si aggiunge capacità di definire solo gli script-dev. utilizzo

... 
"extra": { 
    "scripts-dev": { 
    "post-install-cmd": [ 
     "npm install --dev" 
    ], 
    "post-update-cmd": "php ./someCoolCommand.php" 
    }, 
} 
... 
0

Eseguire il comando seguente.

composer update --no-scripts 
Problemi correlati