## composer命令
命令行工具#
你已經學會了如何使用命令行工具做一些事情。本章將向你介紹所有可用的命令。
為了從命令行獲得幫助信息,請運行?composer?或者?composer list?獲取所有的命令列表, 然后通過?--help?來獲得更多的幫助信息。
Composer 使用了?symfony/console?,你可以通過縮略名來調用相應的命令,前提是這個縮略名不會混淆。
composer dumpCopy
相當于調用?composer dump-autoload.
全局選項#
以下選項可以在每條命令中使用:
--verbose (-v):?增加提示信息。
--help (-h):?查看幫助信息。
--quiet (-q):?不輸出任何信息。
--no-interaction (-n):?不詢問任何相關的問題。
--no-plugins:?取消插件。
--working-dir (-d):?指定工作目錄,默認為當前目錄。
--profile:?查看耗時和內存使用情況。
--ansi:?強制輸出為 ANSI 編碼格式。
--no-ansi:?取消 ANSI 編碼格式輸出。
--version (-V):?查看版本號。
返回結果碼#
0:?OK 正確碼
1:?通常 / 未知錯誤碼
2:?需要解決的錯誤碼
init 命令#
在?創建擴展包?我們知道了如何手動創建 ?composer.json?,?init?命令可以簡便創建擴展包操作。
當你運行該命令時,它會詢問你填寫相應的字段,同時會給出一些默認值。
php composer.phar initCopy
選項#
--name:?擴展包名。
--description:?擴展包簡介。
--author:?擴展包作者
--type:?擴展包類型。
--homepage:?擴展包主頁。
--require:?擴展包版本約束,編寫格式 foo/bar:1.0.0 。
--require-dev:?開發模式下約束,寫法同 --require 。
--stability (-s):?最低的穩定版本 minimum-stability 的值。
--license (-l):?擴展包的授權協議。
--repository:?提供一個(或多個)自定義倉庫。它們將存儲在 composer.json 中,并在提示輸入需求列表時用于自動完成。每個倉庫都可以是指向 composer 倉庫的 HTTP URL ,也可以是類似于倉庫?的 JSON 字符串。
安裝 #
install 命令會讀取?當前目錄的 composer.json?文件,解決依賴關系,并把它們安裝到?vendor 文件夾中。
php composer.phar installCopy
如果當前文件夾下存在?composer.lock 文件,Composer 會使用其中指定的版本,而不是解決在依賴關系。這確保了組內開發人員使用的擴展包一致。
如果沒有 composer.lock 文件,Composer 會在解決依賴關系之后自動創建。
選項#
--prefer-source:?有兩種方式下載擴展包: 源代碼版?和?可執行版 。對于穩定版本,Composer 會默認使用 可執行版 。 源碼版 來自版本控制工具的,如果啟用了 --prefer-source?, Composer 會安裝 源碼版 。這有一個小提示,如果你想修復 bug ,那么從依賴關系中,直接本地克隆一個倉庫。
--prefer-dist:?和?--prefer-source 相反,如果 可執行版本 存在,Compser 會直接安裝。這會加快服務器上構建速度同時不用更新 vendor 。你沒有正確安裝, git 克隆該擴展包也是一種方式。
--dry-run:?如果想運行時指明不安裝某一擴展包,你可以使用?--dry-run 。這會模擬該安裝并提示會出現的問題。
--dev:?安裝?require-dev?中的擴展列表(默認執行)。
--no-dev:?跳過 require-dev 中的擴展列表。. 自動加載中會跳過 autoload-dev?規則。
--no-autoloader:?跳過自動加載。
--no-scripts:?跳過?composer.json 中聲明的腳本。
--no-progress:?移除進度的展示,有的命令或腳本不處理退格字符,引起顯示混亂。
--no-suggest:?跳過擴展包建議。
--optimize-autoloader (-o):?轉換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持。特別是在生產環境下建議這么做,但由于運行需要一些時間,因此并沒有作為默認值。
--classmap-authoritative (-a):?僅從 classmap 加載類。會附帶啟動 --optimize-autoloader 。
--apcu-autoloader:?啟用 APCu 來緩存所有類。
--ignore-platform-reqs:?忽略?php,?hhvm,?lib-*?和 ext-*?要求并強制安裝,就算本地環境不完全要求。平臺配置選項可見 platform?。
update / u#
為了獲取最新版本的依賴以及升級?composer.lock?文件,你應該使用?update 命令。這個命令也被鏈接成 upgrade,因為它和 upgrade 做的事相同,你可以類比 apt-get 等包管理工具。
php composer.phar updateCopy
這會獲取項目的所有依賴并且將確切的版本號寫入?composer.lock。
如果你只是想升級部分依賴而不是全部,你可以像這樣把他們列出來:
php composer.phar update vendor/package vendor/package2Copy
你也可以使用通配符一次升級很多依賴:
php composer.phar update vendor/*Copy
選項#
--prefer-source:?如果可以的話從?源碼?安裝依賴。
--prefer-dist:?如果可以的話從?發布?安裝依賴。
--dry-run:?模擬執行命令但事實上不做任何更改。
--dev:?安裝?require-dev 列出的依賴(這也是默認行為)。
--no-dev:?不安裝?require-dev 列出的依賴。自動加載生成也會跳過 autoload-dev。
--lock:?只升級 lock 文件的哈希以消除 lock 文件過期的警告。
--no-autoloader:?不生成自動加載。
--no-scripts:?跳過執行?composer.json 中定義的腳本。
--no-progress:?移除進度條的顯示來避免和一些終端或不支持退格字符的腳本沖突。
--no-suggest:?跳過輸出中建議的依賴。
--with-dependencies:?添加白名單中的依賴到白名單,除了那些根依賴。
--with-all-dependencies:?添加所有白名單中的依賴到白名單,包括那些根依賴。
--optimize-autoloader (-o):?轉換 PSR-0/4 自動加載到 classmap 以獲取更快的加載速度。很建議在生產環境中這樣做,但執行比較耗時,所以默認是關閉的。
--classmap-authoritative (-a):?只自動加載 classmap 中的類名。需要開啟?--optimize-autoloader。
--apcu-autoloader:?使用 APCu 來緩存找到和沒找到的類名。
--ignore-platform-reqs:?忽略?php,hhvm,lib-*?和?ext-*?依賴并強制安裝,即使本地計算機不能完全支持這些特性。詳見?platform。
--prefer-stable:?穩定版本優先。
--prefer-lowest:?最低版本優先。測試依賴的最低版本時候很有用,一般和?--prefer-stable 聯用。
--interactive:?交互式的選擇哪些依賴要被升級,帶自動補全。
--root-reqs:?限制根依賴的升級。
require#
require?命令將新的依賴添加到當前目錄的?composer.json?文件中。如果文件不存在則會自動創建。
php composer.phar requireCopy
添加或升級其中的依賴之后,修改的依賴會被安裝或升級。
如果你不想交互式的選擇依賴,你可以將他們傳遞到命令參數中。
php composer.phar require vendor/package:2.* vendor/package2:dev-masterCopy
如果你沒有指定包名,Composer 會提示你尋找并且給出結果列表以供使用。
選項#
--dev:?將依賴添加到?require-dev。
--prefer-source:?盡可能從?源碼?安裝。
--prefer-dist:?盡可能從?發布?安裝。
--no-progress:?移除進度條的顯示來避免和一些終端或不支持退格字符的腳本沖突。
--no-suggest:?跳過輸出中建議的依賴。
--no-update:?禁止依賴自動升級。
--no-scripts:?跳過執行在?composer.json 定義的腳本。
--update-no-dev:?用?--no-dev?選項執行依賴升級。
--update-with-dependencies:?升級最近引入的依賴,排除根依賴。
--update-with-all-dependencies:?升級最近引入的依賴,包括根依賴。
--ignore-platform-reqs:?忽略 php,hhvm,lib-* 和 ext-* 依賴并強制安裝,即使本地計算機不能完全支持這些特性。詳見 platform。 詳見?platform。
--prefer-stable:?穩定版本優先。
--prefer-lowest:?最低版本優先。測試依賴的最低版本時候很有用,一般和 ?--prefer-stable 聯用。
--sort-packages:?保持?composer.json 中的依賴排列順序。
--optimize-autoloader (-o):?轉換 PSR-0/4 自動加載到 classmap 以獲取更快的加載速度。很建議在生產環境中這樣做,但執行比較耗時,所以默認是關閉的。
--classmap-authoritative (-a):?只自動加載 classmap 中的類名。需要開啟?--optimize-autoloader。
--apcu-autoloader:?使用 APCu 來緩存找到和沒找到的類名。
remove#
?remove?命令用于移除?composer.json?中的擴展包。
php composer.phar remove vendor/package vendor/package2Copy
移除后,將不再安裝。
選項#
--dev:?移除 require-dev 中的安裝包
--no-progress:?不展示處理進度,可能有不處理退格字符的命令或者腳本會污染展示。
--no-update:?取消自動更新依賴。
--no-scripts:?不執行 composer.json 中的腳本。
--update-no-dev:?更新,除了開發的擴展包。
--update-with-dependencies:?同時更新已移除包的依賴關系。
--ignore-platform-reqs: 忽略 php, hhvm, lib-* 和 ext-* 要求并強制安裝,就算本地環境不完全要求。平臺配置選項可見?platform?。
--optimize-autoloader (-o): 轉換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持。特別是在生產環境下建議這么做,但由于運行需要一些時間,因此并沒有作為默認值。
--classmap-authoritative (-a): 僅從 classmap 加載類。會附帶啟動 --optimize-autoloader。
--apcu-autoloader: 啟用 APCu 來緩存所有類。
check-platform-reqs#
check-platform-reqs 命令檢查你的 PHP 和擴展版本是否滿足已安裝依賴的平臺需求。這可以用來驗證生產服務器是否有供項目運行需要的所有擴展。
global#
global 命令允許你在?COMPOSER_HOME?目錄運行像?install,remove,require?or?update?這些命令。
這僅僅是用來管理存儲在中心目錄中你想從任意位置運行的 CLI 工具和 Composer 插件。
這可以用來安裝全局 CLI 工具。例如:
php composer.phar global require friendsofphp/php-cs-fixerCopy
現在?php-cs-fixer?就可以在全局使用了。確保你的全局?vendor 可執行文件?目錄在你的?$PATH 環境變量中,你可以通過如下命令來查看其位置:
php composer.phar global config bin-dir --absoluteCopy
如果你想升級全局可執行文件,你可以執行全局升級:
php composer.phar global updateCopy
search#
搜索命令允許你搜索當前項目下的包倉庫。通常這會是一個 packagist 。你只需要簡單的輸入將你想要搜索的內容。
php composer.phar search monologCopy
你也可以通過輸入多個參數來搜索你想要的內容。
選項#
--only-name (-N):?只通過名稱來搜索。
--type (-t):?搜索特定的包類型。
show#
要列出所有可用的包,可以使用?show?命令。
php composer.phar showCopy
要過濾列表你可以使用通配符:
php composer.phar show monolog/*
monolog/monolog 1.19.0 Sends your logs to files, sockets, inboxes, databases and various web servicesCopy
如果你查看包的詳細信息,你可以傳遞該包名:
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] https://github.com/Seldaek/monolog.git 3d4e60d0cbc4b888fe5ad223d77964428b1978da
dist : [zip] https://github.com/Seldaek/monolog/zipball/3d4e60d0cbc4b888fe5ad223d77964428b1978da 3d4e60d0cbc4b888fe5ad223d77964428b1978da
license : MIT
autoload
psr-0
Monolog : src/
requires
php >=5.3.0Copy
你甚至也可以傳遞包的版本,你會得到該版本的詳細信息。
php composer.phar show monolog/monolog 1.0.2Copy
選項#
--all :?列出你所有倉庫中可用的包。
--installed (-i):?列出所有已安裝的包(默認啟用,并且此選項已棄用)。
--platform (-p):?只列出平臺依賴(PHP 和擴展)。
--available (-a):?只列出可用的包。
--self (-s):?列出根依賴信息。
--name-only (-N):?只列出包名。
--path (-P):?列出包路徑。
--tree (-t):?以樹的形式列出你的依賴,如果傳遞了包名,它會列出這個包的依賴樹。
--latest (-l):?列出所有已安裝的包以及它們的最新版本。
--outdated (-o):?包含 --latest,但這 只會 列出有新版本可用的包。
--minor-only (-m):?和 --latest 聯用。只列出有小的語義化升級的包。
--direct (-D):?限制列出你的直系依賴。
--strict:?如果有包過期,返回非零值。
--format (-f):?選擇輸出的信息格式,文本(默認)或 JSON。
outdated#
?outdated?命令會列出已安裝的擴展包是否可更新,包括當前版本和最新版本。這有一個別名?composer show -lo。
展示的顏色含義如下:The color coding is as such:
green (=): 該依賴包已經是最新版本了。
yellow (~): 有最新版本可用,但是不兼容。由 SemVer(語義化版本規范) 的提示給出引起的向后兼容問題,可以更新但是可能會引起兼容性問題。
red (!): 有新版本可用,符合 SemVer 即兼容,推薦更新。
Options#
--all (-a):?展示所有擴展包,不止過時的擴展包 (命令別稱 :?composer show -l)。
--direct (-D):?僅展示直接依賴項列表。
--strict:?如果擴展包過時,返回 exit code 不為零的擴展。
--minor-only (-m):?僅展示鏡像版本兼容的可更新擴展。
--format (-f):?設置輸出格式為 text (默認) 或者 json。
browse / home#
browse?(和 home 鏈接)會在瀏覽器中打開包的倉庫地址或其主頁。
選項#
--homepage (-H):?打開包的主頁而不是倉庫地址。
--show (-s):?只展示主頁或倉庫地址。
suggests#
列出已安裝的包的所有建議依賴。你可以傳遞一個或多個?vendor/package 格式的參數來只顯示那些包的建議依賴。
使用?--by-package?或?--by-suggestion?參數來通過提供建議的包或建議的包來分組格式化輸出。
使用?--verbose (-v)?參數來顯示上述兩種格式化輸,即?--by-package --by-suggestion 同時啟用的結果。
選項#
--by-package:?通過提供建議的包分組格式化輸出。
--by-suggestion:?通過建議的包分組格式化輸出。
--no-dev:?排除?require-dev?中包的建議。
depends (why)#
depends?命令告訴你為什么其他包依賴某個包。而用?require-dev 安裝的包關系則只會考慮根依賴。
php composer.phar depends doctrine/lexer
doctrine/annotations v1.2.7 requires doctrine/lexer (1.*)
doctrine/common v2.6.1 requires doctrine/lexer (1.*)Copy
你可以在包后面指定版本來限制查找。
添加?--tree?或?-t?參數以遞歸地顯示樹狀依賴關系圖。例如:
php composer.phar depends psr/log -t
psr/log 1.0.0 Common interface for logging libraries
|- aboutyou/app-sdk 2.6.11 (requires psr/log 1.0.*)
| `- __root__ (requires aboutyou/app-sdk ^2.6)
|- monolog/monolog 1.17.2 (requires psr/log ~1.0)
| `- laravel/framework v5.2.16 (requires monolog/monolog ~1.11)
| `- __root__ (requires laravel/framework ^5.2)
`- symfony/symfony v3.0.2 (requires psr/log ~1.0)
`- __root__ (requires symfony/symfony ^3.0)Copy
選項#
--recursive (-r):?遞歸獲取一直到根依賴。
--tree (-t):?按照樹狀顯示結果,會啟用 -r 參數。
prohibits (why-not)#
prohibits?命令告訴你那些包被給定的包屏蔽。通過指定包版本可以驗證在你的項目中是否可以執行升級操作,如果不能的話會告訴你為什么。看下面的例子:
php composer.phar prohibits symfony/symfony 3.1
laravel/framework v5.2.16 requires symfony/var-dumper (2.8.*|3.0.*)Copy
你也可以指定平臺依賴,比如檢查你的服務器是否可以升級到 PHP 8.0:
php composer.phar prohibits php:8
doctrine/cache v1.6.0 requires php (~5.5|~7.0)
doctrine/common v2.6.1 requires php (~5.5|~7.0)
doctrine/instantiator 1.0.5 requires php (>=5.3,<8.0-DEV)Copy
通過 depends?你可以遞歸地查找,會列出哪些依賴的包會導致沖突。
選項#
--recursive (-r):?遞歸獲取一直到根依賴。
--tree (-t):?按照樹狀顯示結果,會啟用 -r 參數。
驗證#
你應該經常在你提交你的 composer.json 文件和發布新的 tag 之前執行 ?validate 命令。它將會檢查你的 composer.json 是否是合法的。
php composer.phar validateCopy
選項#
--no-check-all:?不要拋出警告如果你要求你的?composer.json? 使用版本約束。
--no-check-lock:?不要拋出錯誤如果 ?composer.json 存在并且不是最新的。
--no-check-publish:?不要拋出錯誤如果 composer.json 文件不適合作為包發布到 Packagist 上但是在其他方面他是有效的。
--with-dependencies:?同時會驗證 composer.json 里所有安裝的依賴關系。
--strict:?當發生警告或者錯誤時返回一個非零的退出編碼。
狀態#
如果你經常需要修改依賴項的代碼并且他們是從源碼中安裝的,?status 命令可以檢查你本地代碼中的修改內容。
php composer.phar statusCopy
使用 --verbose 選項,你可以獲取更多關于改動的內容信息。
php composer.phar status -v
你在以下依賴項中有修改:
vendor/seld/jsonlint:
M READMEownCopy
self-update (selfupdate)#
升級 Composer 到最新版本,執行?self-update?命令。它會將你的?composer.phar?替換到最新版本。
php composer.phar self-updateCopy
如果你想要升級到指定版本:
php composer.phar self-update 1.0.0-alpha7Copy
如果你在系統全局安裝了 COmposer(詳見?global installation),你可能需要以 root 執行命令:
sudo -H composer self-updateCopy
選項#
--rollback (-r):?回滾到你安裝的上一個版本。
--clean-backups:?刪除以前版本的備份,這使得當前版本的 Composer 會成為唯一的備份。
--no-progress:?不顯示下載進度。
--update-keys:?提示用戶升級 key。
--stable:?強制升級到穩定版。
--preview:?強制升級到預覽版。
--snapshot:?強制升級到快照版。
config#
config?命令允許你編輯存儲在本地 composer.json 或全局的 config.json 文件中的 Composer 設置和倉庫。
它允許你編輯本地?composer.json 文件中的絕大部分設置。
php composer.phar config --listCopy
使用#
config [options] [setting-key] [setting-value1] ... [setting-valueN]
setting-key?是一個設置項名稱并且?setting-value1?是一個設置項值。對能接收一組值的設置項來說 (比如?github-protocols),
不止一個設置值可以被傳遞。
你可以編輯下列屬性的值:
description,?homepage,?keywords,?license,?minimum-stability,?name,?prefer-stable,?type?和?version.
詳見?Config?以獲取所有的設置項。
選項#
--global (-g):?操作默認位于?$COMPOSER_HOME/config.json?的全局設置。 沒有這個選項,命令則只會影響本地的 composer.json 文件或?--file 指定的文件。
--editor (-e):?通過環境變量?EDITOR?定義的文本編輯器打開本地的 composer.json 文件。通過?--global?參數可以打開全局配置文件。
--auth (-a):?影響驗證文件(只配合 --editor 參數使用)。
--unset:?移除?setting-key 設置項。
--list (-l):?顯示當前所有設置項。通過?--global?參數可以顯示全局所有設置項。
--file="..." (-f):?操作指定的文件而不是 composer.json。注意此參數不可與 --global?聯用。
--absolute:?當獲取 -dir 設置項時返回絕對路徑而不是相對路徑。
修改倉庫#
除了修改設置項,config 命令也支持對倉庫進行更改,如下的方式:
php composer.phar config repositories.foo vcs https://github.com/foo/barCopy
如果你的倉庫需要更多的選項,你可以按照 JSON 的形式傳遞參數:
php composer.phar config repositories.foo '{"type": "vcs", "url": "http://svn.example.org/my-project/", "trunk-path": "master"}'Copy
修改 Extra 的值#
除了修改設置項,config?命令也支持對 extra 進行更改,如下方式:
php composer.phar config extra.foo.bar valueCopy
. 表示數組參數,最多允許三層。以上會設置 extra 為?"extra": { "foo": { "bar": "value" } }.
create-project#
你可以使用 Composer 從已存在的包創建新的項目。這跟從 Git/Svn 克隆項目并執行?composer install?安裝依賴是等效的。
有以下幾個應用場景:
你可以發布應用的包。
你可以檢索任何包并開始在補丁上進行開發。
有很多不同開發者的項目可以用這個特性來進行應用的初始化以開發。
使用 Composer 來創建一個新的項目你可以使用?create-project?命令。給它傳遞一個包名,和要創建項目所在的目錄名。你也可以將版本號作為第三個參數傳入,否則會使用最新的版本。
如果目錄不存在,它會在安裝的過程中自動創建。
php composer.phar create-project doctrine/orm path 2.2.*Copy
也可以在你一個有?composer.json?文件的目錄里不加參數來執行這個命令來啟動一個項目。
默認此命令會從 packagist.org 檢索包。
選項#
--stability (-s):?包的最小穩定性,默認是?穩定版。
--prefer-source:?盡可能從 源碼 安裝包。
--prefer-dist:?盡可能從 發布 安裝包。
--repository:?自定義包的搜索倉庫,會替代默認的 Packagist。可以使一個指向?composer?倉庫的 HTTP 地址,一個指向本地?packages.json?文件的路徑,或是一個?repositories?所接受的 JSON 字符串。
--dev:?安裝?require-dev 里的依賴。
--no-dev:?不安裝 require-dev 的依賴。
--no-scripts:?不執行根依賴中定義的腳本。
--no-progress:?移除進度條的顯示來避免和一些終端或不支持退格字符的腳本沖突。
--no-secure-http:?安裝根依賴的時候臨時禁止 HTTP 安全校驗。使用此參數風險自擔。
--keep-vcs:?跳過已創建項目的 VCS 元數據刪除。在非交互式環境中執行此命令會很有用。
--remove-vcs:?強制刪除 VCS 元數據并不給任何提示。
--no-install:?禁止安裝依賴。
--ignore-platform-reqs:?忽略 php,hhvm,lib-* 和 ext-* 依賴并強制安裝,即使本地計算機不能完全支持這些特性。
dump-autoload (dumpautoload)#
如果你要為 classmap 中新的類名生成自動加載,可以使用?dump-autoload?命令而不必執行安裝或升級。
除此之外,它可以轉換 PSR-0/4 包到 classmap 中以實現更好的性能。在有很多類的大型項目中,自動加載在每次請求中占了相當多的時間。 在開發中為一切使用 classmap 會有些不太方便,但啟用此項你仍可以為了方便而去使用 PSR-0/4 以及同時為了性能去使用 classmap。
選項#
--no-scripts:?跳過定義在?composer.json?文件中腳本的執行。
--optimize (-o):?轉換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持。特別是在生產環境下建議這么做,但由于運行需要一些時間,因此并沒有作為默認值。
--classmap-authoritative (-a):? 僅從 classmap 加載類。會啟用?--optimize。
--apcu:?啟用 APCu 來緩存所有類。
--no-dev:?禁止 autoload-dev 規則。
clear-cache (clearcache)#
從 Composer 的緩存目錄中刪除一切。
licenses#
列出已安裝每個包許可證的名稱和版本。使用?--format=json?參數來輸出機器可讀的內容。
選項#
--format:?格式化輸出:文本或 JSON(默認是文本)。
--no-dev:?從輸出中移除 dev 依賴。
run-script#
選項#
--timeout:?設置腳本執行超時時間,0 為不超時。
--dev:?設置 dev 模式。
--no-dev:?關閉 dev 模式。
--list (-l):?列出用戶定義的腳本。
要手動運行 腳本?你可以使用此命令,同時傳遞腳本名稱以及必要參數。
exec#
執行依賴中的可執行文件或腳本。你可以執行任何命令并且它會確保命令執行前 Composer 的執行文件路徑在 PATH 環境變量中。
選項#
--list (-l):?列出所有可用的 composer 執行文件。
diagnose#
如果你發現了一個 bug 或是一些不對勁的地方,你可能想要執行?diagnose?命令來自動檢查一些常見的問題。
php composer.phar diagnoseCopy
archive#
這個命令會為給定版本的包生成一個 zip/tar 的壓縮包。它也可以為整個項目生成一個壓縮包并排除已忽略的文件。
php composer.phar archive vendor/package 2.0.21 --format=zipCopy
選項#
--format (-f):?壓縮文件的格式: tar 或 zip(默認是 tar)。
--dir:?將壓縮文件保存到此目錄(默認是當前路徑)。
--file:?將壓縮文件保存為給定的文件名。
help#
想了解某個命令的更多信息,可以使用?help 命令。
php composer.phar help installCopy
命令行補全#
命令行補全可以按照此?說明。
環境變量#
你可以設置一些環境變量來覆蓋某些設置。但盡可能在?composer.json 的 config 項中設置。值得注意的是環境變量的優先級高于?composer.json 中的定義。
COMPOSER#
設置?COMPOSER?變量可以指定別的 composer.json?文件名。
例如:
COMPOSER=composer-other.json php composer.phar installCopy
在這個例子中,生成的 lock 文件會使用此名稱?composer-other.lock。
COMPOSER_ROOT_VERSION#
在根依賴版本不能從 VCS 中猜測或沒有在?composer.json 文件中列出的時候,通過設置此變量你可以指定其版本。
COMPOSER_VENDOR_DIR#
通過設置此變量你可以讓 Composer 將依賴文件安裝在其他目錄而非?vendor。
COMPOSER_BIN_DIR#
通過設置此變量你可以改變?bin?(Vendor Binaries) 目錄的位置而非?vendor/bin。
http_proxy 或 HTTP_PROXY#
如果你在 HTTP 代理下使用 Composer,你可以使用標準的?http_proxy?或?HTTP_PROXY?環境變量。簡單地把它設置成代理的地址。其實一些操作系統已經為你設置好了。
使用?http_proxy?(小寫字母)或大小寫都是用甚至會更好,因為一些工具像 git、curl 等等只會使用小寫的?http_proxy 。除此之外你也可以這樣為 Git 設置代理?git config --global http.proxy <proxy url>。
如果你在非 CLI 環境中使用 Composer(比如 CMS 集成環境或類似) 并且也需要設置代理,那請用?CGI_HTTP_PROXY?變量來替代。詳見?httpoxy.org。
no_proxy 或 NO_PROXY#
如果你正在使用 HTTP 代理并且想要為一些域名禁用代理,你可以設置?no_proxy?或?NO_PROXY?環境變量。簡單地把它設置為逗號分隔的你 不想要 走代理的域名。
次環境變量接收值為域名、IP 地址以及在 CIDR 中被屏蔽的 IP。你可以指定過濾特定端口(例如 :80)。你也可以將它設置為 * 通配符來為所有的 HTTP 請求禁用代理。
HTTP_PROXY_REQUEST_FULLURI#
如果你正在使用代理但它不支持 request_fulluri 參數,那你應該將此變量設置為?false?或?0?以避免 Composer 設置 request_fulluri 參數。
HTTPS_PROXY_REQUEST_FULLURI#
如果你正在使用代理但它不支持為 HTTPS 請求設置 request_fulluri 參數,那你應該將此變量設置為?false?或?0?以避免 Composer 設置 request_fulluri 參數。
COMPOSER_HOME#
COMPOSER_HOME?變量允許你更改 Composer 主目錄。這是個隱藏的并且在計算機里每個用戶的 Home 目錄下的目錄,所有項目都可以共享此目錄。
默認它會指向 Windows 的?C:\Users\<user>\AppData\Roaming\Composer?以及 OSX 的?/Users/<user>/.composer?目錄。在遵守?XDG Base Directory Specifications 的 *nix 系統中,它指向?$XDG_CONFIG_HOME/composer。 在其他的 *nix 系統 中,它指向?/home/<user>/.composer。
COMPOSER_HOME/config.json#
你可以將?config.json?文件放置在?COMPOSER_HOME?變量指向的位置。這樣在運行?install?和?update?命令的時候 Composer 會將這個文件中的設置項與當前目錄的 composer.json 文件中的合并。
此文件允許你為用戶項目設置?repositories?和?configuration?中的設置內容。
一旦 全局 設置項與?本地?相同,本地 項目中?composer.json?的設置項總會是優先被使用的。
COMPOSER_CACHE_DIR#
COMPOSER_CACHE_DIR?允許你設置 Composer 的緩存路徑,此設置也可以用?cache-dir?選項來設置。
默認他會指向 *nix 和 OSX 的?$COMPOSER_HOME/cache?,以及 WIndows 的?C:\Users\<user>\AppData\Local\Composer?(或?%LOCALAPPDATA%/Composer)。
COMPOSER_PROCESS_TIMEOUT#
此變量控制 Composer 執行命令(比如 Git 命令)直到完成的超時時間。默認是 300 秒(5 分鐘)。
COMPOSER_CAFILE#
你可以設置此變量來指定 SSL/TLS 驗證的 = 使用證書的路徑。
COMPOSER_AUTH#
COMPOSER_AUTH?允許你以變量的形式設置驗證。變量值應該是 JSON 格式,包含 http-basic,github-oauth,bitbucket-oauth 等等。 其內容遵守 spec from the config。
COMPOSER_DISCARD_CHANGES#
此變量控制?discard-changes 設置項。
COMPOSER_NO_INTERACTION#
如果它被設為 1,其效果就像在執行每個命令時都加了?--no-interaction?參數。可以在 構建系統以及 CI 系統中設置。
COMPOSER_ALLOW_SUPERUSER#
如果它被設為 1,則以后使用 root 身份運行命令時不會收到警告。它也會禁止自動清理 sudo 會話,所以你應該只在完全使用 root 身份執行命令(例如在 Docker 容器中)時設置此項。
COMPOSER_MEMORY_LIMIT#
設置此項會像 PHP 的 memory_limit 參數一樣起作用。
COMPOSER_MIRROR_PATH_REPOS#
如果設為 1, 會把默認倉庫路徑的策略從?symlink 改為 mirror。但即使它被設置了,也會被倉庫自己的設置項覆蓋。
COMPOSER_HTACCESS_PROTECT#
默認是?1。如果設為?0,Composer 不會在主目錄、緩存目錄以及其他數據目錄創建?.htaccess 文件。
- composer教程文檔
- Composer 的常用命令
- 鏡像操作
- 教程收集
- composer命令
- 全局選項
- init命令
- 安裝命令
- update命令
- require命令
- remove命令
- check-platform-reqs
- globa命令
- search命令
- show命令
- outdated命令
- Options命令
- browse / home命令
- suggests命令
- depends (why)命令
- prohibits (why-not)命令
- validate驗證命令
- status狀態命令
- self-update (selfupdate)
- config命令
- create-project命令
- dump-autoload (dumpautoload)
- clear-cache (clearcache)
- licenses命令
- run-script命令
- exec命令
- diagnose命令
- archive命令
- help命令
- 環境變量
- composer.json說明
- composer.json示例1
- 自制composer包
- 制作步驟1、生成composer包
- 制作步驟2:生成目錄結構
- 制作步驟3:完善程序
- 制作步驟4:上傳程序包
- 示例:手把手教你發布自己的 Composer 包
- 示例:一步一步創建自己的composer包
- 實例2
- 鏡像與常用包
- 中國鏡像
- 常用包收集
- composer包的使用
- 包的使用
- 本地自定義文件的使用