在 API 项目中,我们将 composer.json 设置为以下内容:
{
"require-dev": {
"phpunit/phpunit": "4.7.*"
},
"require": {
"monolog/monolog": "1.5.*"
}
}
第一次运行composer install
一切正常。使用 调用时,Phpunit 可以正常工作vendor/bin/phpunit
。我的工作机器是 Windows 7 操作系统,但是我们在这个项目中使用 git,当我从另一台机器(Kubuntu 14.04)处理这个项目时,执行 后git pull
,我无法再使用 运行单元测试vendor/bin/phpunit
- 它失败并显示错误,提示找不到 vendor/bin/phpunit。
在 Linux 机器上,我删除了不起作用的可执行文件 vendor/bin/phpunit,并删除了 vendor/phpunit 文件夹,然后让 composer 通过 替换它composer update
。此时,我可以像以前一样再次运行单元测试。然而,这在 Windows 7 上无法无缝运行。这比较棘手。
我的问题是:通过 github 跟踪文件然后在各种操作系统上工作,我做错了吗?如果我只跟踪目录的composer.json
内容并保持vendor/phpunit/phpunit
目录不被跟踪(并让文件保留在其特定的操作系统上),是否可以避免此错误?谢谢,亚当。
答案1
Composer 的目的在于您只需要vendor
在 repo 中有一个空的(!)目录,但跟踪composer.json
(要求)和composer.lock
(上次测试的特定版本)并composer install
在新的开发机器上检出后运行。
(注意:composer install
将根据composer.lock
文件安装特定版本。composer update
将安装符合中定义的要求的任何最新版本composer.json
。)
然后,Composer 应该下载适合您系统的二进制文件并将其放入vendor/bin/
目录中。