我的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-coverage
和satooshi/php-coveralls
。我做想要在PHP 5.4和5.5版本中安装它们。
答案 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”的所有内容