
Composer 使用姿勢
這里主要說說 composer.json
和 composer.lock
文件的作用。
composer.json
composer.json
文件包含了項目的依賴和其它的一些元數據,使用 JSON format 編寫。
當初次調用 composer install
時,Composer 會根據 composer.json
文件,將定義好的依賴獲取到本地項目中。
與此同時,install
命令將創建一個 composer.lock
文件到項目的根目錄下。
composer.json
的寫法這里不多贅述,具體可以參考 composer.json 架構。
composer.lock
安裝依賴后,Composer 會把安裝時確切的版本號列表寫入 composer.lock
文件中。
composer.lock
的作用是讓所有開發者的開發環境保持統一,因此,我們需要提交應用程序的 composer.lock
到版本庫中。
若對 composer.json
文件進行了修改,則使用 composer update
來更新依賴與 composer.lock
文件。
升級指南
前置工作
根據老版本和具體要升級到的新版本,看一下官方的 升級指南 和新版本文檔,了解新版本的特性和老版本變動,對不符合新版本要求的代碼進行修改。
修改 composer.json
例如我要將 Lumen 升級到 5.8 版本:
"laravel/lumen-framework": "5.8.*"
修改后執行 composer update
,Composer 就會開始幫我們更新依賴。
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 5 installs, 53 updates, 0 removals- Updating symfony/polyfill-php72 (v1.10.0 => v1.11.0): Loading from cache- Updating symfony/polyfill-mbstring (v1.10.0 => v1.11.0): Loading from cache- Updating symfony/var-dumper (v4.1.7 => v4.2.8): Downloading (100%)- Updating symfony/http-foundation (v4.1.7 => v4.2.8): Downloading (100%)- Updating symfony/polyfill-ctype (v1.10.0 => v1.11.0): Loading from cache......
更新完成后會發現 composer.lock
文件變更了。
將 composer.lock
提交到版本庫,保證所有開發環境的統一。
全面測試
這個不必多說了,雖然在前置工作中我們已經根據新版本的特性修改了一些代碼,但無法保證程序中沒有遺漏的地方。把所有的單測都跑一跑吧~
總結
- 當
composer.lock
不存在時,composer install
將根據composer.json
文件安裝依賴,并創建composer.lock
文件 - 當
composer.lock
文件存在時,composer install
將直接根據composer.lock
文件拉取依賴 - 使用
composer update
更新依賴與composer.lock
文件 - 升級 = 文檔研讀 + 代碼修改 + 全面測試
參考資料
- Composer 中文網