2012-10-26 12 views
21

To jest mój plik composer.json:Kompozytor - skrypty uruchamiane tylko w środowisku 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/" 
    ] 
} 

Jak mogę to zrobić tak skrypty są uruchamiane tylko w środowisku dev?

Zasadniczo chcę skrypty uruchomić tylko wtedy, gdy wzywam:

php composer.phar update --dev 

Odpowiedz

29

Aby wykonać aktualizację środowiska non-rozwojowego bez wywoływania żadnych skryptów, użyj the --no-scripts command line switch for the update command:

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

Domyślnie skrypty Composer są wykonywane tylko w pakiecie podstawowym. Więc możesz mieć jedną paczkę do rozwoju, a w środowisku życia uczynić ją zależną od systemu live.

Poza tym nie widzę żadnego sposobu automatycznego rozróżnienia skryptów.

3

Ten sam efekt można osiągnąć, konfigurując niestandardowy skrypt dla ścieżki dev, zamiast używać haka 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" 
    ] 
} 

Następnie wystarczy uruchomić php composer.phar dev-update

0

Oto mały pakiet, który można użyć do zrobienia, że ​​ https://github.com/neronmoon/scriptsdev Dodaje możliwość definiowania skryptów tylko-dev. Wykorzystanie

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

Uruchom następujące polecenie.

composer update --no-scripts 
Powiązane problemy