
在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
- 它失敗並出現錯誤,它不能找到供應商/bin/phpunit。
在Linux機器上,我刪除了無法運行的可執行檔vendor/bin/phpunit,並刪除了vendor/phpunit資料夾,並讓composer通過composer update
.那時,我可以像以前一樣再次執行單元測試。然而,這在 Windows 7 上並不能無縫運行。
我的問題是:透過 github 追蹤檔案然後在各種作業系統上工作,我是否做錯了什麼?如果我只追蹤composer.json
並保持目錄內容vendor/phpunit/phpunit
不被追蹤(並讓檔案保留在其特定作業系統中),我是否可以避免此錯誤?謝謝,亞當。
答案1
Composer 的目的是,您只需要vendor
在儲存庫中擁有一個空(!)目錄,但追蹤composer.json
(需求)和composer.lock
(最後測試的特定版本)並composer install
在新的開發電腦上簽出後運行。
(注意。composer install
將根據composer.lock
檔案安裝特定版本。composer update
將安裝符合 中定義的要求的任何最新版本composer.json
。)
然後,Composer 應該下載適合您系統的二進位檔案並將其放入vendor/bin/
目錄中。