你已經(jīng)學會了如何使用命令行界面做一些事情汪茧。本章將向你介紹所有可用的命令种樱。
為了從命令行獲得幫助信息儿惫,請運行?composer?或者?composer list?命令末秃,然后結合?--help?命令來獲得更多的幫助信息陡叠。
安裝?install?- -?參數(shù)
申明依賴?require?- -?參數(shù)
依賴性檢測?depends?- -?參數(shù)
更改配置?config?- -?使用方法?- -?參數(shù)?- -?修改包來源
創(chuàng)建項目?create-project?- -?參數(shù)
打印自動加載索引?dump-autoload?- -?參數(shù)
歸檔?archive?- -?參數(shù)
全局參數(shù)
下列參數(shù)可與每一個命令結合使用:
--verbose (-v):?增加反饋信息的詳細度玩郊。
-v 表示正常輸出。
-vv 表示更詳細的輸出匾竿。
-vvv 則是為了 debug瓦宜。
--help (-h):?顯示幫助信息。
--quiet (-q):?禁止輸出任何信息岭妖。
--no-interaction (-n):?不要詢問任何交互問題临庇。
--working-dir (-d):?如果指定的話,使用給定的目錄作為工作目錄昵慌。
--profile:?顯示時間和內(nèi)存使用信息假夺。
--ansi:?強制 ANSI 輸出。
--no-ansi:?關閉 ANSI 輸出斋攀。
--version (-V):?顯示當前應用程序的版本信息已卷。
進程退出代碼
0:?正常
1:?通用/未知錯誤
2:?依賴關系處理錯誤
初始化?init
在?“庫”?那一章我們看到了如何手動創(chuàng)建?composer.json?文件。實際上還有一個?init?命令可以更容易的做到這一點淳蔼。
當您運行該命令侧蘸,它會以交互方式要求您填寫一些信息裁眯,同時聰明的使用一些默認值。
php composer.phar init
初始化-參數(shù)
--name:?包的名稱讳癌。
--description:?包的描述穿稳。
--author:?包的作者晌坤。
--homepage:?包的主頁。
--require:?需要依賴的其它包它改,必須要有一個版本約束。并且應該遵循?foo/bar:1.0.0?這樣的格式商乎。
--require-dev:?開發(fā)版的依賴包,內(nèi)容格式與?--require?相同截亦。
--stability (-s):?minimum-stability?字段的值。
安裝?install
install?命令從當前目錄讀取?composer.json?文件崩瓤,處理了依賴關系袍啡,并把其安裝到?vendor?目錄下。
php composer.phar install
如果當前目錄下存在?composer.lock?文件境输,它會從此文件讀取依賴版本颖系,而不是根據(jù)?composer.json?文件去獲取依賴。這確保了該庫的每個使用者都能得到相同的依賴版本信粮。
如果沒有?composer.lock?文件趁啸,composer 將在處理完依賴關系后創(chuàng)建它。
安裝-參數(shù)
--prefer-source:?下載包的方式有兩種:?source?和?dist旅掂。對于穩(wěn)定版本 composer 將默認使用?dist方式访娶。而?source?表示版本控制源 。如果?--prefer-source?是被啟用的秘车,composer 將從?source?安裝(如果有的話)鲫尊。如果想要使用一個 bugfix 到你的項目,這是非常有用的。并且可以直接從本地的版本庫直接獲取依賴關系豪嚎。
--prefer-dist:?與?--prefer-source?相反,composer 將盡可能的從?dist?獲取侈询,這將大幅度的加快在 build servers 上的安裝扔字。這也是一個回避 git 問題的途徑,如果你不清楚如何正確的設置扭粱。
--dry-run:?如果你只是想演示而并非實際安裝一個包震檩,你可以運行?--dry-run?命令,它將模擬安裝并顯示將會發(fā)生什么博其。
--dev:?安裝?require-dev?字段中列出的包(這是一個默認值)迂猴。
--no-dev:?跳過?require-dev?字段中列出的包沸毁。
--no-scripts:?跳過?composer.json?文件中定義的腳本。
--no-plugins:?關閉 plugins儿普。
--no-progress:?移除進度信息掷倔,這可以避免一些不處理換行的終端或腳本出現(xiàn)混亂的顯示。
--optimize-autoloader (-o):?轉換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持巴柿。特別是在生產(chǎn)環(huán)境下建議這么做死遭,但由于運行需要一些時間,因此并沒有作為默認值钉迷。
更新?update
為了獲取依賴的最新版本糠聪,并且升級?composer.lock?文件谐鼎,你應該使用?update?命令。
php composer.phar update
這將解決項目的所有依賴身害,并將確切的版本號寫入?composer.lock草戈。
如果你只是想更新幾個包猾瘸,你可以像這樣分別列出它們:
php composer.phar update vendor/package vendor/package2
你還可以使用通配符進行批量更新:
php composer.phar update vendor/*
更新-參數(shù)
--prefer-source:?當有可用的包時,從?source?安裝淮悼。
--prefer-dist:?當有可用的包時袜腥,從?dist?安裝钉汗。
--dry-run:?模擬命令,并沒有做實際的操作福侈。
--dev:?安裝?require-dev?字段中列出的包(這是一個默認值)卢未。
--no-dev:?跳過?require-dev?字段中列出的包。
--no-scripts:?跳過?composer.json?文件中定義的腳本翘鸭。
--no-plugins:?關閉 plugins戳葵。
--no-progress:?移除進度信息拱烁,這可以避免一些不處理換行的終端或腳本出現(xiàn)混亂的顯示。
--optimize-autoloader (-o):?轉換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持守伸。特別是在生產(chǎn)環(huán)境下建議這么做浦妄,但由于運行需要一些時間剂娄,因此并沒有作為默認值玄呛。
--lock:?僅更新 lock 文件的 hash,取消有關 lock 文件過時的警告耳胎。
--with-dependencies?同時更新白名單內(nèi)包的依賴關系惕它,這將進行遞歸更新淹魄。
申明依賴?require
require?命令增加新的依賴包到當前目錄的?composer.json?文件中。
php composer.phar require
在添加或改變依賴時兆蕉, 修改后的依賴關系將被安裝或者更新缤沦。
如果你不希望通過交互來指定依賴包缸废,你可以在這條令中直接指明依賴包驶社。
php composer.phar require vendor/package:2.* vendor/package2:dev-master
申明依賴-參數(shù)
--prefer-source:?當有可用的包時衬吆,從?source?安裝绳泉。
--prefer-dist:?當有可用的包時零酪,從?dist?安裝。
--dev:?安裝?require-dev?字段中列出的包孝凌。
--no-update:?禁用依賴關系的自動更新月腋。
--no-progress:?移除進度信息榆骚,這可以避免一些不處理換行的終端或腳本出現(xiàn)混亂的顯示。
--update-with-dependencies?一并更新新裝包的依賴捌省。
全局執(zhí)行?global
global?命令允許你在?COMPOSER_HOME?目錄下執(zhí)行其它命令纲缓,像?install喊废、require?或?update操禀。
并且如果你將?$COMPOSER_HOME/vendor/bin?加入到了?$PATH?環(huán)境變量中,你就可以用它在命令行中安裝全局應用斤寂,下面是一個例子:
php composer.phar global require fabpot/php-cs-fixer:dev-master
現(xiàn)在?php-cs-fixer?就可以在全局范圍使用了(假設你已經(jīng)設置了你的 PATH)揪惦。如果稍后你想更新它器腋,你只需要運行?global update:
php composer.phar global update
搜索?search
search?命令允許你為當前項目搜索依賴包钩杰,通常它只搜索 packagist.org 上的包讲弄,你可以簡單的輸入你的搜索條件依痊。
php composer.phar search monolog
您也可以通過傳遞多個參數(shù)來進行多條件搜索胸嘁。
搜索-參數(shù)
--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
展示-參數(shù)
--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
依賴性檢測-參數(shù)
--link-type:?檢測的類型赛不,默認為?require?也可以是?require-dev罢洲。
有效性檢測?validate
在提交?composer.json?文件奏路,和創(chuàng)建 tag 前鸽粉,你應該始終運行?validate?命令。它將檢測你的?composer.json文件是否是有效的
php composer.phar validate
有效性檢測參數(shù)
--no-check-all:?Composer 是否進行完整的校驗帚戳。
依賴包狀態(tài)檢測?status
如果你經(jīng)常修改依賴包里的代碼儡首,并且它們是從 source(自定義源)進行安裝的蔬胯,那么?status?命令允許你進行檢查,如果你有任何本地的更改它將會給予提示产场。
php composer.phar status
你可以使用?--verbose?系列參數(shù)(-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
如果你已經(jīng)為整個系統(tǒng)安裝 Composer(參見?全局安裝),你可能需要在?root?權限下運行它:
sudo composer self-update
自我更新-參數(shù)
--rollback (-r):?回滾到你已經(jīng)安裝的最后一個版本违柏。
--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?是一個配置的值薪丁。可以使用數(shù)組作為配置的值(像?github-protocols)粱檀,多個?setting-value?是允許的茄蚯。
有效的配置選項睦优,請查看“架構”章節(jié)的?config?刨秆。
更改配置-參數(shù)
--global (-g):?操作位于?$COMPOSER_HOME/config.json?的全局配置文件忆畅。如果不指定該參數(shù)家凯,此命令將影響當前項目的 composer.json 文件绊诲,或?--file?參數(shù)所指向的文件。
--editor (-e):?使用文本編輯器打開 composer.json 文件抗俄。默認情況下始終是打開當前項目的文件。當存在?--global?參數(shù)時槽卫,將會打開全局 composer.json 文件歼培。
--unset:?移除由?setting-key?指定名稱的配置選項躲庄。
--list (-l):?顯示當前配置選項的列表钾虐。當存在?--global?參數(shù)時禾唁,將會顯示全局配置選項的列表。
--file="..." (-f):?在一個指定的文件上操作丐枉,而不是 composer.json瘦锹。注意:不能與?--global?參數(shù)一起使用闪盔。
修改包來源
除了修改配置選項泪掀,?config?命令還支持通過以下方法修改來源信息:
php composer.phar config repositories.foo vcs http://github.com/foo/bar
創(chuàng)建項目?create-project
你可以使用 Composer 從現(xiàn)有的包中創(chuàng)建一個新的項目异赫。這相當于執(zhí)行了一個?git clone?或?svn checkout?命令后將這個包的依賴安裝到它自己的 vendor 目錄。
此命令有幾個常見的用途:
你可以快速的部署你的應用鼠证。
你可以檢出任何資源包量九,并開發(fā)它的補丁。
多人開發(fā)項目类浪,可以用它來加快應用的初始化戚宦。
要創(chuàng)建基于 Composer 的新項目锈嫩,你可以使用 "create-project" 命令呼寸。傳遞一個包名,它會為你創(chuàng)建項目的目錄贝润。你也可以在第三個參數(shù)中指定版本號嚎卫,否則將獲取最新的版本捐祠。
如果該目錄目前不存在桑李,則會在安裝過程中自動創(chuàng)建贵白。
php composer.phar create-project doctrine/orm path 2.2.*
此外禁荒,你也可以無需使用這個命令,而是通過現(xiàn)有的?composer.json?文件來啟動這個項目寥掐。
默認情況下,這個命令會在 packagist.org 上查找你指定的包褐隆。
創(chuàng)建項目-參數(shù)
--repository-url:?提供一個自定義的儲存庫來搜索包庶弃,這將被用來代替 packagist.org」坦撸可以是一個指向?composer?資源庫的 HTTP URL葬毫,或者是指向某個?packages.json?文件的本地路徑屡穗。
--stability (-s):?資源包的最低穩(wěn)定版本村砂,默認為?stable础废。
--prefer-source:?當有可用的包時评腺,從?source?安裝歇僧。
--prefer-dist:?當有可用的包時诈悍,從?dist?安裝适袜。
--dev:?安裝?require-dev?字段中列出的包苦酱。
--no-install:?禁止安裝包的依賴。
--no-plugins:?禁用 plugins。
--no-scripts:?禁止在根資源包中定義的腳本執(zhí)行尾序。
--no-progress:?移除進度信息钓丰,這可以避免一些不處理換行的終端或腳本出現(xiàn)混亂的顯示。
--keep-vcs:?創(chuàng)建時跳過缺失的 VCS 每币。如果你在非交互模式下運行創(chuàng)建命令携丁,這將是非常有用的。
打印自動加載索引?dump-autoload
某些情況下你需要更新 autoloader梦鉴,例如在你的包中加入了一個新的類。你可以使用?dump-autoload?來完成痕慢,而不必執(zhí)行?install?或?update?命令尚揣。
此外,它可以打印一個優(yōu)化過的掖举,符合 PSR-0/4 規(guī)范的類的索引快骗,這也是出于對性能的可考慮。在大型的應用中會有許多類文件塔次,而 autoloader 會占用每個請求的很大一部分時間方篮,使用 classmaps 或許在開發(fā)時不太方便,但它在保證性能的前提下励负,仍然可以獲得 PSR-0/4 規(guī)范帶來的便利藕溅。
打印自動加載索引-參數(shù)
--optimize (-o):?轉換 PSR-0/4 autoloading 到 classmap 獲得更快的載入速度。這特別適用于生產(chǎn)環(huán)境继榆,但可能需要一些時間來運行巾表,因此它目前不是默認設置。
--no-dev:?禁用 autoload-dev 規(guī)則略吨。
查看許可協(xié)議?licenses
列出已安裝的每個包的名稱集币、版本、許可協(xié)議翠忠【瞎叮可以使用?--format=json?參數(shù)來獲取 JSON 格式的輸出。
執(zhí)行腳本?run-script
你可以運行此命令來手動執(zhí)行?腳本秽之,只需要指定腳本的名稱当娱,可選的?--no-dev?參數(shù)允許你禁用開發(fā)者模式。
診斷?diagnose
如果你覺得發(fā)現(xiàn)了一個 bug 或是程序行為變得怪異考榨,你可能需要運行?diagnose?命令跨细,來幫助你檢測一些常見的問題。
php composer.phar diagnose
歸檔?archive
此命令用來對指定包的指定版本進行 zip/tar 歸檔河质。它也可以用來歸檔你的整個項目冀惭,不包括 excluded/ignored(排除/忽略)的文件申鱼。
php composer.phar archive vendor/package 2.0.21 --format=zip
歸檔-參數(shù)
--format (-f):?指定歸檔格式:tar 或 zip(默認為 tar)。
--dir:?指定歸檔存放的目錄(默認為當前目錄)云头。
獲取幫助信息?help
使用?help?可以獲取指定命令的幫助信息。
php composer.phar help install
環(huán)境變量
你可以設置一些環(huán)境變量來覆蓋默認的配置淫半。建議盡可能的在?composer.json?的?config?字段中設置這些值溃槐,而不是通過命令行設置環(huán)境變量。值得注意的是環(huán)境變量中的值科吭,將始終優(yōu)先于?composer.json?中所指定的值昏滴。
COMPOSER
環(huán)境變量?COMPOSER?可以為?composer.json?文件指定其它的文件名。
例如:
COMPOSER=composer-other.json php composer.phar install
COMPOSER_ROOT_VERSION
通過設置這個環(huán)境變量对人,你可以指定 root 包的版本谣殊,如果程序不能從 VCS 上猜測出版本號,并且未在?composer.json?文件中申明牺弄。
COMPOSER_VENDOR_DIR
通過設置這個環(huán)境變量姻几,你可以指定 composer 將依賴安裝在?vendor?以外的其它目錄中。
COMPOSER_BIN_DIR
通過設置這個環(huán)境變量势告,你可以指定?bin(Vendor Binaries)目錄到?vendor/bin?以外的其它目錄蛇捌。
http_proxy or HTTP_PROXY
如果你是通過 HTTP 代理來使用 Composer,你可以使用?http_proxy?或?HTTP_PROXY?環(huán)境變量咱台。只要簡單的將它設置為代理服務器的 URL络拌。許多操作系統(tǒng)已經(jīng)為你的服務設置了此變量。
建議使用?http_proxy(小寫)或者兩者都進行定義回溺。因為某些工具春贸,像 git 或 curl 將使用?http_proxy?小寫的版本。另外遗遵,你還可以使用?git config --global http.proxy <proxy url>?來單獨設置 git 的代理萍恕。
no_proxy
如果你是使用代理服務器,并且想要對某些域名禁用代理瓮恭,就可以使用?no_proxy?環(huán)境變量雄坪。只需要輸入一個逗號相隔的域名?排除?列表。
此環(huán)境變量接受域名屯蹦、IP 以及 CIDR地址塊维哈。你可以將它限制到一個端口(例如::80)。你還可以把它設置為?*?來忽略所有的 HTTP 代理請求登澜。
HTTP_PROXY_REQUEST_FULLURI
如果你使用了 HTTP 代理阔挠,但它不支持?request_fulluri?標簽,那么你應該設置這個環(huán)境變量為?false?或?0脑蠕,來防止 composer 從?request_fulluri?讀取配置购撼。
HTTPS_PROXY_REQUEST_FULLURI
如果你使用了 HTTPS 代理跪削,但它不支持?request_fulluri?標簽,那么你應該設置這個環(huán)境變量為?false?或?0?迂求,來防止 composer 從?request_fulluri?讀取配置碾盐。
COMPOSER_HOME
COMPOSER_HOME?環(huán)境變量允許你改變 Composer 的主目錄。這是一個隱藏的揩局、所有項目共享的全局目錄(對本機的所有用戶都可用)毫玖。
它在各個系統(tǒng)上的默認值分別為:
*nix?/home/<user>/.composer。
OSX?/Users/<user>/.composer凌盯。
Windows?C:\Users\<user>\AppData\Roaming\Composer付枫。
COMPOSER_HOME/config.json
你可以在?COMPOSER_HOME?目錄中放置一個?config.json?文件。在你執(zhí)行?install?和?update?命令時驰怎,Composer 會將它與你項目中的?composer.json?文件進行合并阐滩。
若?全局?和?項目?存在相同配置項县忌,那么項目中的?composer.json?文件擁有更高的優(yōu)先級掂榔。
COMPOSER_CACHE_DIR
COMPOSER_CACHE_DIR?環(huán)境變量允許你設置 Composer 的緩存目錄,這也可以通過?cache-dir?進行配置芹枷。
它在各個系統(tǒng)上的默認值分別為:
*nix and OSX?$COMPOSER_HOME/cache衅疙。
Windows?C:\Users\<user>\AppData\Local\Composer?或?%LOCALAPPDATA%/Composer。
COMPOSER_PROCESS_TIMEOUT
這個環(huán)境變量控制著 Composer 執(zhí)行命令的等待時間(例如:git 命令)鸳慈。默認值為300秒(5分鐘)饱溢。
COMPOSER_DISCARD_CHANGES
這個環(huán)境變量控制著 discard-changes?config option。
COMPOSER_NO_INTERACTION
如果設置為1走芋,這個環(huán)境變量將使 Composer 在執(zhí)行每一個命令時都放棄交互绩郎,相當于對所有命令都使用了?--no-interaction∥坛眩可以在搭建?虛擬機/持續(xù)集成服務器?時這樣設置肋杖。