Composer忽略白名单



我的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-coveragesatooshi/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"

相关内容

  • 没有找到相关文章

最新更新