2

快速提问,如果我的想法总体上很愚蠢/是否有更好的方法,请告诉我:

为了创建持续交付管道,我想在 Composer 中使用“require-dev”声明各种类型的测试所需的一些包。但是,我想知道是否可以运行 install 命令以使用一个命令全局安装“require-dev”下列出的所有软件包?

这会很好,因为它可以让我轻松地保持测试环境最新,并允许对我需要的所有 PHP 测试解决方案进行全局访问。我知道这不是很多工作,如果我只是手动完成所有这些工作,我已经完成了,但我很想知道是否有一个很好的方法来做到这一点,因为我认为手动下载和一切,授予它执行权限,然后将其移动到 bin/ 目录以进行全局访问是一种乏味的解决方案。

4

2 回答 2

8

根据作曲家的帮助,在作曲家中使用global关键字允许在全局作曲家目录($COMPOSER_HOME)中运行命令。

这意味着当您运行时composer global require phpunit/phpunit,composer 将更新其全局目录,而不是您当时所在的目录。

所以在我的情况下,$COMPOSER_HOME在我的主目录/Home/.composer中,运行上面的命令将;

  1. 更新 /Home/.composer/composer.json 文件。
  2. 下载最新的phpunit包到/Home/.composer/vender
  3. 将 phpunit 可执行文件的符号链接添加到 /Home/.composer/vendor/bin 目录中

所以此时如果我的路径中包含bin文件夹,无论我在哪个目录中运行命令,我都可以在我的系统中运行 phpunit。

现在,如果您希望将依赖项安装为开发要求的一部分,您需要做的就是将--dev参数添加到安装(或更新)命令中,例如composer global require phpunit/phpunit --dev

于 2015-06-08T19:41:43.927 回答
0

全局安装应该做什么?

通常要做的是安装 Phpunit。现在,如果您有两个项目(一个使用旧版本 3.7,一个使用 4.6 的新项目)来全局安装任何版本,这对您没有帮助。

不要全局安装某个包明确使用的依赖项。

但是,不需要或在特定版本中未声明需要的工具,例如 PHP Codesniffer,可以通过以下方式轻松集中安装

composer global require squizlabs/php_codesniffer

然后将生成的 ~/.composer/vendor/bin 路径放入 PATH 环境变量中。请注意, ~ 不能在那里解决,你必须自己做。

于 2015-06-08T19:24:05.187 回答