原文地址 : composer 命令列
全域性引數
下列引數可與每一個命令結合使用:
-
–verbose (-v): 增加反饋資訊的詳細度。
-
-v 表示正常輸出。
-
-vv 表示更詳細的輸出。
-
-vvv 則是為了 debug。
-
-
–help (-h): 顯示幫助資訊。
-
–quiet (-q): 禁止輸出任何資訊。
-
–no-interaction (-n): 不要詢問任何互動問題。
-
–working-dir (-d): 如果指定的話,使用給定的目錄作為工作目錄。
-
–profile: 顯示時間和記憶體使用資訊。
-
–ansi: 強制 ANSI 輸出。
-
–no-ansi: 關閉 ANSI 輸出。
-
–version (-V): 顯示當前應用程式的版本資訊。
程式退出程式碼
-
0: 正常
-
1: 通用/未知錯誤
-
2: 依賴關係處理錯誤
初始化 init
在 “庫” 那一章我們看到了如何手動建立 composer.json
檔案。實際上還有一個 init
命令可以更容易的做到這一點。
當您執行該命令,它會以互動方式要求您填寫一些資訊,同時聰明的使用一些預設值。
php composer.phar init
初始化-引數
-
–name: 包的名稱。
-
–description: 包的描述。
-
–author: 包的作者。
-
–homepage: 包的主頁。
-
–require: 需要依賴的其它包,必須要有一個版本約束。並且應該遵循
foo/bar:1.0.0
這樣的格式。 -
–require-dev: 開發版的依賴包,內容格式與 –require 相同。
-
–stability (-s):
minimum-stability
欄位的值。
安裝 install
install
命令從當前目錄讀取 composer.json
檔案,處理了依賴關係,並把其安裝到 vendor
目錄下。
php composer.phar 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
命令。
php composer.phar update
這將解決專案的所有依賴,並將確切的版本號寫入 composer.lock
。
如果你只是想更新幾個包,你可以像這樣分別列出它們:
php composer.phar update vendor/package vendor/package2
你還可以使用萬用字元進行批量更新:
php composer.phar 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
檔案中。
php composer.phar require
在新增或改變依賴時, 修改後的依賴關係將被安裝或者更新。
如果你不希望通過互動來指定依賴包,你可以在這條令中直接指明依賴包。
php composer.phar require vendor/package:2.* vendor/package2:dev-master
申明依賴-引數
-
–prefer-source: 當有可用的包時,從
source
安裝。 -
–prefer-dist: 當有可用的包時,從
dist
安裝。 -
–dev: 安裝
require-dev
欄位中列出的包。 -
–no-update: 禁用依賴關係的自動更新。
-
–no-progress: 移除進度資訊,這可以避免一些不處理換行的終端或指令碼出現混亂的顯示。
-
–update-with-dependencies 一併更新新裝包的依賴。
全域性執行 global
global
命令允許你在 COMPOSER_HOME 目錄下執行其它命令,像 install
、require
或 update
。
並且如果你將 $COMPOSER_HOME/vendor/bin
加入到了 $PATH
環境變數中,你就可以用它在命令列中安裝全域性應用,下面是一個例子:
php composer.phar global require fabpot/php-cs-fixer:dev-master
現在 php-cs-fixer
就可以在全域性範圍使用了(假設你已經設定了你的 PATH)。如果稍後你想更新它,你只需要執行 global update
:
php composer.phar global update
搜尋 search
search
命令允許你為當前專案搜尋依賴包,通常它只搜尋 packagist.org 上的包,你可以簡單的輸入你的搜尋條件。
php composer.phar search monolog
您也可以通過傳遞多個引數來進行多條件搜尋。
搜尋-引數
-
–only-name (-N): 僅針對指定的名稱搜尋(完全匹配)。
展示 show
列出所有可用的軟體包,你可以使用 show
命令。
php composer.phar show
如果你想看到一個包的詳細資訊,你可以輸入一個包名稱。
php composer.phar show monolog/monolog
name : monolog/monolog
versions : master-dev, 1.0.2, 1.0.1, 1.0.0, 1.0.0-RC1
type : library
names : monolog/monolog
source : [git] http://github.com/Seldaek/monolog.git 3d4e60d0cbc4b888fe5ad223d77964428b1978da
dist : [zip] http://github.com/Seldaek/monolog/zipball/3d4e60d0cbc4b888fe5ad223d77964428b1978da 3d4e60d0cbc4b888fe5ad223d77964428b1978da
license : MIT
autoload
psr-0
Monolog : src/
requires
php >=5.3.0
你甚至可以輸入一個軟體包的版本號,來顯示該版本的詳細資訊。
php composer.phar show monolog/monolog 1.0.2
展示-引數
-
–installed (-i): 列出已安裝的依賴包。
-
–platform (-p): 僅列出平臺軟體包(PHP 與它的擴充套件)。
-
–self (-s): 僅列出當前專案資訊。
依賴性檢測 depends
depends
命令可以查出已安裝在你專案中的某個包,是否正在被其它的包所依賴,並列出他們。
php composer.phar depends --link-type=require monolog/monolog
nrk/monolog-fluent
poc/poc
propel/propel
symfony/monolog-bridge
symfony/symfony
依賴性檢測-引數
-
–link-type: 檢測的型別,預設為
require
也可以是require-dev
。
有效性檢測 validate
在提交 composer.json
檔案,和建立 tag 前,你應該始終執行 validate
命令。它將檢測你的 composer.json
檔案是否是有效的
php composer.phar validate
有效性檢測引數
-
–no-check-all: Composer 是否進行完整的校驗。
依賴包狀態檢測 status
如果你經常修改依賴包裡的程式碼,並且它們是從 source(自定義源)進行安裝的,那麼 status
命令允許你進行檢查,如果你有任何本地的更改它將會給予提示。
php composer.phar status
你可以使用 --verbose
系列引數(-v|vv|vvv)來獲取更詳細的詳細:
php composer.phar status -v
You have changes in the following dependencies:
vendor/seld/jsonlint:
M README.mdown
自我更新 self-update
將 Composer 自身升級到最新版本,只需要執行 self-update
命令。它將替換你的 composer.phar
檔案到最新版本。
php composer.phar self-update
如果你想要升級到一個特定的版本,可以這樣簡單的指定它:
php composer.phar self-update 1.0.0-alpha7
如果你已經為整個系統安裝 Composer(參見 全域性安裝),你可能需要在 root
許可權下執行它:
sudo composer self-update
自我更新-引數
-
–rollback (-r): 回滾到你已經安裝的最後一個版本。
-
–clean-backups: 在更新過程中刪除舊的備份,這使得更新過後的當前版本是唯一可用的備份。
更改配置 config
config
命令允許你編輯 Composer 的一些基本設定,無論是本地的 composer.json
或者全域性的 config.json
檔案。
php composer.phar config --list
更改配置-使用方法
config [options] [setting-key] [setting-value1] ... [setting-valueN]
setting-key
是一個配置選項的名稱,setting-value1
是一個配置的值。可以使用陣列作為配置的值(像 github-protocols
),多個 setting-value
是允許的。
有效的配置選項,請檢視“架構”章節的 config 。
更改配置-引數
-
–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
引數一起使用。
修改包來源
除了修改配置選項, config
命令還支援通過以下方法修改來源資訊:
php composer.phar config repositories.foo vcs http://github.com/foo/bar
建立專案 create-project
你可以使用 Composer 從現有的包中建立一個新的專案。這相當於執行了一個 git clone
或 svn checkout
命令後將這個包的依賴安裝到它自己的 vendor 目錄。
此命令有幾個常見的用途:
-
你可以快速的部署你的應用。
-
你可以檢出任何資源包,並開發它的補丁。
-
多人開發專案,可以用它來加快應用的初始化。
要建立基於 Composer 的新專案,你可以使用 “create-project” 命令。傳遞一個包名,它會為你建立專案的目錄。你也可以在第三個引數中指定版本號,否則將獲取最新的版本。
如果該目錄目前不存在,則會在安裝過程中自動建立。
php composer.phar create-project doctrine/orm path 2.2.*
此外,你也可以無需使用這個命令,而是通過現有的 composer.json
檔案來啟動這個專案。
預設情況下,這個命令會在 packagist.org 上查詢你指定的包。
建立專案-引數
-
–repository-url: 提供一個自定義的儲存庫來搜尋包,這將被用來代替 packagist.org。可以是一個指向
composer
資源庫的 HTTP URL,或者是指向某個packages.json
檔案的本地路徑。 -
–stability (-s): 資源包的最低穩定版本,預設為
stable
。 -
–prefer-source: 當有可用的包時,從
source
安裝。 -
–prefer-dist: 當有可用的包時,從
dist
安裝。 -
–dev: 安裝
require-dev
欄位中列出的包。 -
–no-install: 禁止安裝包的依賴。
-
–no-plugins: 禁用 plugins。
-
–no-scripts: 禁止在根資源包中定義的指令碼執行。
-
–no-progress: 移除進度資訊,這可以避免一些不處理換行的終端或指令碼出現混亂的顯示。
-
–keep-vcs: 建立時跳過缺失的 VCS 。如果你在非互動模式下執行建立命令,這將是非常有用的。
列印自動載入索引 dump-autoload
某些情況下你需要更新 autoloader,例如在你的包中加入了一個新的類。你可以使用 dump-autoload
來完成,而不必執行 install
或 update
命令。
此外,它可以列印一個優化過的,符合 PSR-0/4 規範的類的索引,這也是出於對效能的可考慮。在大型的應用中會有許多類檔案,而 autoloader 會佔用每個請求的很大一部分時間,使用 classmaps 或許在開發時不太方便,但它在保證效能的前提下,仍然可以獲得 PSR-0/4 規範帶來的便利。
列印自動載入索引-引數
-
–optimize (-o): 轉換 PSR-0/4 autoloading 到 classmap 獲得更快的載入速度。這特別適用於生產環境,但可能需要一些時間來執行,因此它目前不是預設設定。
-
–no-dev: 禁用 autoload-dev 規則。
檢視許可協議 licenses
列出已安裝的每個包的名稱、版本、許可協議。可以使用 --format=json
引數來獲取 JSON 格式的輸出。
執行指令碼 run-script
你可以執行此命令來手動執行 指令碼,只需要指定指令碼的名稱,可選的 --no-dev
引數允許你禁用開發者模式。
診斷 diagnose
如果你覺得發現了一個 bug 或是程式行為變得怪異,你可能需要執行 diagnose
命令,來幫助你檢測一些常見的問題。
php composer.phar diagnose
歸檔 archive
此命令用來對指定包的指定版本進行 zip/tar 歸檔。它也可以用來歸檔你的整個專案,不包括 excluded/ignored(排除/忽略)的檔案。
php composer.phar archive vendor/package 2.0.21 --format=zip
歸檔-引數
-
–format (-f): 指定歸檔格式:tar 或 zip(預設為 tar)。
-
–dir: 指定歸檔存放的目錄(預設為當前目錄)。
獲取幫助資訊 help
使用 help
可以獲取指定命令的幫助資訊。
php composer.phar help install
環境變數
你可以設定一些環境變數來覆蓋預設的配置。建議儘可能的在 composer.json
的 config
欄位中設定這些值,而不是通過命令列設定環境變數。值得注意的是環境變數中的值,將始終優先於 composer.json
中所指定的值。
COMPOSER
環境變數 COMPOSER
可以為 composer.json
檔案指定其它的檔名。
例如:
COMPOSER=composer-other.json php composer.phar install
COMPOSER_ROOT_VERSION
通過設定這個環境變數,你可以指定 root 包的版本,如果程式不能從 VCS 上猜測出版本號,並且未在 composer.json
檔案中申明。
COMPOSER_VENDOR_DIR
通過設定這個環境變數,你可以指定 composer 將依賴安裝在 vendor
以外的其它目錄中。
COMPOSER_BIN_DIR
通過設定這個環境變數,你可以指定 bin
(Vendor Binaries)目錄到 vendor/bin
以外的其它目錄。
http_proxy or HTTP_PROXY
如果你是通過 HTTP 代理來使用 Composer,你可以使用 http_proxy
或 HTTP_PROXY
環境變數。只要簡單的將它設定為代理伺服器的 URL。許多作業系統已經為你的服務設定了此變數。
建議使用 http_proxy
(小寫)或者兩者都進行定義。因為某些工具,像 git 或 curl 將使用 http_proxy
小寫的版本。另外,你還可以使用 git config --global http.proxy <proxy url>
來單獨設定 git 的代理。
no_proxy
如果你是使用代理伺服器,並且想要對某些域名禁用代理,就可以使用 no_proxy
環境變數。只需要輸入一個逗號相隔的域名 排除 列表。
此環境變數接受域名、IP 以及 CIDR地址塊。你可以將它限制到一個埠(例如::80
)。你還可以把它設定為 *
來忽略所有的 HTTP 代理請求。
HTTP_PROXY_REQUEST_FULLURI
如果你使用了 HTTP 代理,但它不支援 request_fulluri
標籤,那麼你應該設定這個環境變數為 false
或 0
,來防止 composer 從 request_fulluri
讀取配置。
HTTPS_PROXY_REQUEST_FULLURI
如果你使用了 HTTPS 代理,但它不支援 request_fulluri
標籤,那麼你應該設定這個環境變數為 false
或 0
,來防止 composer 從 request_fulluri
讀取配置。
COMPOSER_HOME
COMPOSER_HOME
環境變數允許你改變 Composer 的主目錄。這是一個隱藏的、所有專案共享的全域性目錄(對本機的所有使用者都可用)。
它在各個系統上的預設值分別為:
-
*nix
/home/<user>/.composer
。 -
OSX
/Users/<user>/.composer
。 -
Windows
C:Users<user>AppDataRoamingComposer
。
COMPOSER_HOME/config.json
你可以在 COMPOSER_HOME
目錄中放置一個 config.json
檔案。在你執行 install
和 update
命令時,Composer 會將它與你專案中的 composer.json
檔案進行合併。
若 全域性 和 專案 存在相同配置項,那麼專案中的 composer.json
檔案擁有更高的優先順序。
COMPOSER_CACHE_DIR
COMPOSER_CACHE_DIR
環境變數允許你設定 Composer 的快取目錄,這也可以通過 cache-dir
進行配置。
它在各個系統上的預設值分別為:
-
*nix and OSX
$COMPOSER_HOME/cache
。 -
Windows
C:Users<user>AppDataLocalComposer
或%LOCALAPPDATA%/Composer
。
COMPOSER_PROCESS_TIMEOUT
這個環境變數控制著 Composer 執行命令的等待時間(例如:git 命令)。預設值為300秒(5分鐘)。
COMPOSER_DISCARD_CHANGES
這個環境變數控制著 discard-changes config option。
COMPOSER_NO_INTERACTION
如果設定為1,這個環境變數將使 Composer 在執行每一個命令時都放棄互動,相當於對所有命令都使用了 --no-interaction
。可以在搭建 虛擬機器/持續整合伺服器 時這樣設定。