快速提问,如果我的想法是愚蠢的,请告诉我,如果有更好的方法:
为了创建持续交付管道,我想用"require-dev"声明Composer中各种类型测试所需的一些包。然而,我想知道是否有可能运行安装命令的方式,它会安装在"require-dev"下列出的所有包全局与一个命令?
这将是很好的,因为它将允许我保持最新的测试环境与方便,并允许全局访问所有PHP测试解决方案,我需要。我知道这不是太多的工作,我已经完成了,如果我只是通过手动所有的,但我很好奇知道是否有一个很好的方法来做到这一点,因为我认为下载和所有的手工,给它执行的权利,然后移动到bin/目录全局访问是一种乏味的解决方案。
根据composer的帮助使用global关键字与composer允许在全局composer目录($COMPOSER_HOME)中运行命令。
这意味着当你运行composer global require phpunit/phpunit
时,composer会更新它的全局目录,而不是你当时所在的目录。
所以在我的例子中,$COMPOSER_HOME在我的主目录/home/.composer,运行上面的命令将;
- 更新/Home/.composer/composer.json文件下载最新的phpunit包到/Home/.composer/vendor目录
- 添加一个符号链接到/Home/.composer/vendor/bin目录下的phpunit可执行文件
所以在这一点上,如果我有bin文件夹包含在我的路径中,我将能够在我的系统中运行phpunit,无论我在哪个目录下运行命令。
现在,如果您希望将依赖项作为开发需求的一部分进行安装,那么您需要做的就是在安装(或更新)命令中添加——dev参数,例如composer global require phpunit/phpunit --dev
全局安装应该做什么?
通常的做法是安装Phpunit。现在,如果你有两个项目,一个使用旧版本3.7,一个使用新版本4.6,那么全局安装任何版本都无济于事。
不要全局安装特定包显式使用的依赖项。
但是,在特定版本中不需要或未声明需要的工具,如PHP Codesniffer,可以很容易地通过
集中安装。composer global require squizlabs/php_codesniffer
然后将生成的~/.composer/vendor/bin路径放入path环境变量中。注意~不能在这里解析,您必须自己做