Composer忽略白名单

时间:2014-09-29 09:23:37

标签: php composer-php

我的require中有以下composer.json部分:

"require": {
    "php": ">=5.4.0"
},
"require-dev": {
    "phpspec/phpspec": "~2.0",
    "henrikbjorn/phpspec-code-coverage": "~0.2",
    "satooshi/php-coveralls": "~0.6"
},

现在我想使用Travis-CI,PHP 5.4和5.5,以及hhvm。但是,由于hhvm不支持xdebug,因此没有代码覆盖,我需要禁用hhvm构建的代码覆盖率。

为此,我需要排除代码覆盖率安装。但是,当我尝试仅安装运行composer update phpspec/phpspec的phpspec时,也会安装其他两个依赖项。不知何故,Composer似乎忽略了我的白名单。

这是我目前的.travis.yml

language: php

php: [5.4, 5.5, hhvm]

install:
  - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]]; then composer update ; fi
  - if [[ $TRAVIS_PHP_VERSION == 'hhvm' ]]; then composer update phpspec/phpspec; fi

script:
  - bin/phpspec run --format=pretty
  - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]]; then bin/coveralls -v ; fi

如何使用白名单功能达到目标,还是有其他方法可以实现这一目标?


请注意,我想要在 hhvm Travis构建中安装henrikbjorn/phpspec-code-coveragesatooshi/php-coveralls 。我想要在PHP 5.4和5.5版本中安装它们。

4 个答案:

答案 0 :(得分:2)

我会遵循接受的答案的反向逻辑,因为在测试时使用变通方法更好,而不是强迫自己不在本地生成覆盖。

language: php
php:
  - 5.4
  - 5.5
  - hhvm

script:
  - bin/phpspec run
  - bash -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then bin/coveralls -v; fi;'

before_script:
  - bash -c 'if [ "$TRAVIS_PHP_VERSION" == "hhvm" ]; then composer remove "henrikbjorn/phpspec-code-coverage" --dev --no-update; fi;'
  - composer install --prefer-source

答案 1 :(得分:1)

除非您需要在其他地方使用代码覆盖率,否则为什么不简单地修改.travis.yml以使用composer require henrikbjorn/phpspec-code-coverage=~0.2来要求代码覆盖率:

language: php

php: [5.4, 5.5, hhvm]

install:
    - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]]; then composer require henrikbjorn/phpspec-code-coverage=~0.2 ; fi

script:
    - bin/phpspec run --format=pretty
    - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]]; then bin/coveralls -v ; fi

答案 2 :(得分:-1)

尝试运行

 php composer.phar self-update

 php composer.phar update --with-dependencies 

根据医生应该忽略白名单中的内容

如果您希望仅更新或链接更新几个包,请运行以下

php composer.phar update "packagename" "packagename2"

答案 3 :(得分:-1)

尝试

composer update --no-dev

因为当你运行作曲家更新时,它默认安装“require-dev”的所有内容