composer.lock 記錄確切安裝版本(含依賴樹的具體版本、雜湊值、下載 URL),確保所有人/環境取得完全相同的程式碼。
composer install:偵測到 composer.lock → 直接依 lock 檔安裝,忽略 composer.json 的版本範圍。composer.json 解析最新滿足條件的版本,並產生 lock 檔。composer update:重新解析依賴,更新至最新允許版本,並重寫 lock 檔。| 指令 | 行為 |
|---|---|
composer install | 依 lock 檔精確安裝(生產部署標準指令) |
composer update | 更新所有套件至最新允許版本,刷新 lock |
composer update vendor/pkg | 僅更新指定套件及其依賴 |
composer update vendor/* | 批次更新某廠商所有套件 |
composer update --lock | 不更新套件,僅同步 lock 檔 (修正雜訊) |
1.2.3:精確版本^1.2.3:>=1.2.3 <2.0(語意化版本,推薦)~1.2.3:>=1.2.3 <1.3(僅修訂版)1.2.*:>=1.2.0 <1.3>=1.2 <2.0:明確範圍composer.lock 納入版控(Git/SVN),確保開發、測試、生產環境一致。composer.json 後,執行 composer update 並提交同時更新的 lock 檔。composer install --no-dev,禁止 update。# 伺服器部署腳本 composer install --no-dev --optimize-autoloader --classmap-authoritative --no-interaction
--no-dev:跳過測試/開發套件。--optimize-autoloader:產生 classmap,提升載入速度 20%+。--classmap-authoritative:不掃描檔案系統,直接信任 classmap(需確無動態類別)。platform 設定可模擬生產環境 PHP 版本/擴充套件,避免本地安裝不相容套件。auth.json 或環境變數 COMPOSER_AUTH,勿寫入 lock 檔。