我的composer.json
中有以下require
部分:
"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时,其他两个依赖项也会被安装。不知怎的,作曲家似乎忽略了我的白名单。
这是我当前的.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
我如何使用白名单功能来实现我的目标,或者有其他方法可以实现这一目标吗?
请注意,我不想在hhvmTravis构建中安装henrikbjorn/phpspec-code-coverage
或satooshi/php-coveralls
。我do想在PHP 5.4和5.5版本中安装它们。
我会遵循接受答案的相反逻辑,因为在测试时最好使用变通方法,而不是强迫自己不在本地生成覆盖率。
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
除非您需要代码覆盖率才能在其他地方工作,否则为什么不简单地使用composer require henrikbjorn/phpspec-code-coverage=~0.2
:修改.travis.yml
以要求代码覆盖率呢
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
尝试运行
php composer.phar self-update
php composer.phar update --with-dependencies
根据文档应该忽略白名单中的内容
如果你只想更新或连锁更新几个包,请运行以下
php composer.phar update "packagename" "packagename2"
尝试
composer update --no-dev
因为当您运行composer更新时,它会在默认情况下将所有内容安装在"require-dev"