composer 基本概念與常用命令總結
目錄
- composer 基本概念與常用命令總結
- 基本概念
- 軟件安裝
- linux/mac安裝
- windows
- 配置鏡像
- 如何使用
- 常用命令
- 全局參數
- 初始化 init
- 初始化參數
- 依賴安裝 install
- 安裝-參數
- 依賴更新 update
- 更新-參數
- 申明依賴 require
- 參數
- 自我更新 self-update
- 展示依賴 show
- 配置 config
- 參數
- 註意問題
composer 基本概念與常用命令總結
基本概念
本文的內容是總結過往學習composer的一些心得,主要包括composer的基本概念與常用命令。本質上,composer是一個php依賴管理的軟件,主要用來管理php的外部依賴並處理外部依賴之間的依賴關系。其實為了避免重復造輪子,很多編程語言都有自己的依賴管理工具,比如Java的maven,Python的pip和node的npm等等。熟練掌握composer,開發項目可以事半功倍。
軟件安裝
主要參考Laravel的composer中國全量鏡像下載說明,Linux直接打開終端執行以下命令。Windows環境建議使用git-bash執行命令。
linux/mac安裝
wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer
chmod a+x /usr/local/bin/composer
如遇權限不足,可添加 sudo
windows
- 直接下載 composer.phar,地址:https://dl.laravel-china.org/composer.phar
- 把下載的 composer.phar 放到 PHP 安裝目錄
- 新建 composer.bat, 添加如下內容,並保存:
@php "%~dp0composer.phar" %*
最後可以通過composer --version
查看是否有正確的輸出,可以通過composer selfupdate
進行軟件更新。
配置鏡像
鑒於國外鏡像源的連接質量比較差,所以有必要將鏡像源設置到國內。推薦使用Laravel提供的Composer 中國全量鏡像。此外還有Packagist/Composer中國全量鏡像
如何使用
請盡可能用比較新的 Composer 版本。
使用 Composer 鏡像加速有兩種選項:
- 選項一:全局配置,這樣所有項目都能惠及(推薦);
- 選項二:單獨項目配置;
選項一、全局配置(推薦)
$ composer config -g repo.packagist composer https://packagist.laravel-china.org
選項二、單獨使用
$ composer config repo.packagist composer https://packagist.laravel-china.org
取消鏡像
composer config -g --unset repos.packagist
常用命令
內容主要參考官方中文的cli終端命令文檔
全局參數
下列參數可與每一個命令結合使用:
--verbose (-v): 增加反饋信息的詳細度。
-v 表示正常輸出。
-vv 表示更詳細的輸出。
-vvv 則是為了 debug。
--help (-h): 顯示幫助信息。
--quiet (-q): 禁止輸出任何信息。
--no-interaction (-n): 不要詢問任何交互問題。
--working-dir (-d): 如果指定的話,使用給定的目錄作為工作目錄。
--profile: 顯示時間和內存使用信息。
--ansi: 強制 ANSI 輸出。
--no-ansi: 關閉 ANSI 輸出。
--version (-V): 顯示當前應用程序的版本信息。
初始化 init
您運行該命令,它會以交互方式要求您填寫一些信息,同時聰明的使用一些默認值。
composer init
初始化參數
--name: 包的名稱。
--description: 包的描述。
--author: 包的作者。
--homepage: 包的主頁。
--require: 需要依賴的其它包,必須要有一個版本約束。並且應該遵循 foo/bar:1.0.0 這樣的格式。
--require-dev: 開發版的依賴包,內容格式與 --require 相同。
--stability (-s): minimum-stability 字段的值。
依賴安裝 install
從composer.json中讀取依賴版本。並把其安裝到 vendor 目錄下。
composer install
如果當前目錄下存在 composer.lock 文件,它會從此文件讀取依賴版本,而不是根據 composer.json 文件去獲取依賴。這確保了該庫的每個使用者都能得到相同的依賴版本。
如果沒有 composer.lock 文件,composer 將在處理完依賴關系後創建它。
安裝-參數
--prefer-source: 下載包的方式有兩種: source 和 dist。對於穩定版本 composer 將默認使用 dist 方式。而 source 表示版本控制源 。如果 --prefer-source 是被啟用的,composer 將從 source 安裝(如果有的話)。如果想要使用一個 bugfix 到你的項目,這是非常有用的。並且可以直接從本地的版本庫直接獲取依賴關系。
--prefer-dist: 與 --prefer-source 相反,composer 將盡可能的從 dist 獲取,這將大幅度的加快在 build servers 上的安裝。這也是一個回避 git 問題的途徑,如果你不清楚如何正確的設置。
--dry-run: 如果你只是想演示而並非實際安裝一個包,你可以運行 --dry-run 命令,它將模擬安裝並顯示將會發生什麽。
--dev: 安裝 require-dev 字段中列出的包(這是一個默認值)。
--no-dev: 跳過 require-dev 字段中列出的包。
--no-scripts: 跳過 composer.json 文件中定義的腳本。
--no-plugins: 關閉 plugins。
--no-progress: 移除進度信息,這可以避免一些不處理換行的終端或腳本出現混亂的顯示。
--optimize-autoloader (-o): 轉換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持。特別是在生產環境下建議這麽做,但由於運行需要一些時間,因此並沒有作為默認值。
依賴更新 update
為了獲取依賴的最新版本,並且升級 composer.lock 文件,你應該使用 update 命令。
composer update
這將解決項目的所有依賴,並將確切的版本號寫入 composer.lock。
如果你只是想更新幾個包,你可以像這樣分別列出它們:
composer update vendor/package vendor/package2
你還可以使用通配符進行批量更新:
composer update vendor/*
更新-參數
--prefer-source: 當有可用的包時,從 source 安裝。
--prefer-dist: 當有可用的包時,從 dist 安裝。
--dry-run: 模擬命令,並沒有做實際的操作。
--dev: 安裝 require-dev 字段中列出的包(這是一個默認值)。
--no-dev: 跳過 require-dev 字段中列出的包。
--no-scripts: 跳過 composer.json 文件中定義的腳本。
--no-plugins: 關閉 plugins。
--no-progress: 移除進度信息,這可以避免一些不處理換行的終端或腳本出現混亂的顯示。
--optimize-autoloader (-o): 轉換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持。特別是在生產環境下建議這麽做,但由於運行需要一些時間,因此並沒有作為默認值。
--lock: 僅更新 lock 文件的 hash,取消有關 lock 文件過時的警告。
--with-dependencies 同時更新白名單內包的依賴關系,這將進行遞歸更新。
申明依賴 require
require 命令增加新的依賴包到當前目錄的 composer.json 文件中
composer require
在添加或改變依賴時, 修改後的依賴關系將被安裝或者更新。
如果你不希望通過交互來指定依賴包,你可以在這條令中直接指明依賴包。
composer require vendor/package:2.* vendor/package2:dev-master
參數
--prefer-source: 當有可用的包時,從 source 安裝。
--prefer-dist: 當有可用的包時,從 dist 安裝。
--dev: 安裝 require-dev 字段中列出的包。
--no-update: 禁用依賴關系的自動更新。
--no-progress: 移除進度信息,這可以避免一些不處理換行的終端或腳本出現混亂的顯示。
--update-with-dependencies 一並更新新裝包的依賴。
自我更新 self-update
展示依賴 show
--installed (-i)
: 列出已安裝的依賴包。--platform (-p)
: 僅列出平臺軟件包(PHP 與它的擴展)。--self (-s)
: 僅列出當前項目信息。
配置 config
config [options] [setting-key] [setting-value1] ... [setting-valueN]
setting-key 是一個配置選項的名稱,setting-value1 是一個配置的值。可以使用數組作為配置的值(像 github-protocols),多個 setting-value 是允許的。
參數
--global (-g): 操作位於 $COMPOSER_HOME/config.json 的全局配置文件。如果不指定該參數,此命令將影響當前項目的 composer.json 文件,或 --file 參數所指向的文件。
--editor (-e): 使用文本編輯器打開 composer.json 文件。默認情況下始終是打開當前項目的文件。當存在 --global 參數時,將會打開全局 composer.json 文件。
--unset: 移除由 setting-key 指定名稱的配置選項。
--list (-l): 顯示當前配置選項的列表。當存在 --global 參數時,將會顯示全局配置選項的列表。
--file="..." (-f): 在一個指定的文件上操作,而不是 composer.json。註意:不能與 --global 參數一起使用。
更詳細的命令請參考官方中文文檔
註意問題
- 已存在
composer.lock
文件,先刪除,再運行composer install
重新生成。 - 一般用
-vvv
來進行調試,以便查看下載狀態 - 如果PHP版本與composr版本不一致,可以使用
--ignore-platform-reqs
忽略其沖突 - 如果再Linux中使用root執行composer,會發出警告
Composer install Do not run Composer as root/super user!
。可以使用一般用戶來執行(推薦),或者忽略該警告。 - 如果Linux中無法寫入composer緩存,可以重新設置目錄權限。
本人水平有限,若有不足之處,歡迎指正。
composer 基本概念與常用命令總結