2012-10-26 37 views
21

Đây là tập tin composer.json tôi:Composer - kịch bản chỉ chạy trong môi trường 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/" 
    ] 
} 

Làm thế nào tôi có thể làm cho nó nên kịch bản được chỉ chạy trong môi trường dev?

Về cơ bản tôi muốn các script để chạy chỉ khi tôi gọi:

php composer.phar update --dev 

Trả lời

29

Để làm được cập nhật môi trường không phát triển mà không gây ra bất kỳ kịch bản, sử dụng the --no-scripts command line switch for the update command:

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

Bằng kịch bản Composer mặc định chỉ được thực hiện trong gói cơ sở. Vì vậy, bạn có thể có một gói để phát triển và trong môi trường cuộc sống làm cho nó trở thành sự phụ thuộc của hệ thống trực tiếp.

Ngoài ra, tôi không thấy bất kỳ cách nào để phân biệt các tập lệnh một cách tự động.

9

Nó không thể để lựa chọn kịch bản khác nhau cho cài đặt mặc định và --dev tùy chọn nhưng bạn có thể sử dụng phương pháp isDevMode() trong Composer \ Script \ Event để chạy lệnh chỉ trong một môi trường phát triển. http://getcomposer.org/apidoc/master/Composer/Script/Event.html

3

Bạn có thể đạt được hiệu ứng tương tự bằng cách thiết lập tập lệnh tùy chỉnh cho đường dẫn dev, thay vì sử dụng móc 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" 
    ] 
} 

Sau đó chỉ cần chạy php composer.phar dev-update

0

Dưới đây là các gói nhỏ, mà bạn có thể sử dụng để làm điều đó https://github.com/neronmoon/scriptsdev Nó cho biết thêm khả năng xác định các kịch bản chỉ-dev. cách sử dụng

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

Chạy lệnh sau.

composer update --no-scripts 
Các vấn đề liên quan