你已經(jīng)學(xué)會(huì)了如何使用命令行界面做一些事情。本章將向你介紹所有可用的命令。
為了從命令行獲得幫助信息,請(qǐng)運(yùn)行 composer
或者 composer list
命令,然后結(jié)合 --help
命令來(lái)獲得更多的幫助信息。
下列參數(shù)可與每一個(gè)命令結(jié)合使用:
在 庫(kù) 那一章我們看到了如何手動(dòng)創(chuàng)建 composer.json
文件。實(shí)際上還有一個(gè) init
命令可以更容易的做到這一點(diǎn)。
當(dāng)您運(yùn)行該命令,它會(huì)以交互方式要求您填寫(xiě)一些信息,同時(shí)聰明的使用一些默認(rèn)值。
php composer.phar init
foo/bar:1.0.0
這樣的格式。minimum-stability
字段的值。install
命令從當(dāng)前目錄讀取 composer.json
文件,處理了依賴關(guān)系,并把其安裝到 vendor
目錄下。
php composer.phar install
如果當(dāng)前目錄下存在 composer.lock
文件,它會(huì)從此文件讀取依賴版本,而不是根據(jù) composer.json
文件去獲取依賴。這確保了該庫(kù)的每個(gè)使用者都能得到相同的依賴版本。
如果沒(méi)有 composer.lock
文件,composer 將在處理完依賴關(guān)系后創(chuàng)建它。
source
和 dist
。對(duì)于穩(wěn)定版本 composer 將默認(rèn)使用 dist
方式。而 source
表示版本控制源 。如果 --prefer-source
是被啟用的,composer 將從 source
安裝(如果有的話)。如果想要使用一個(gè) bugfix 到你的項(xiàng)目,這是非常有用的。并且可以直接從本地的版本庫(kù)直接獲取依賴關(guān)系。--prefer-source
相反,composer 將盡可能的從 dist
獲取,這將大幅度的加快在 build servers 上的安裝。這也是一個(gè)回避 git 問(wèn)題的途徑,如果你不清楚如何正確的設(shè)置。--dry-run
命令,它將模擬安裝并顯示將會(huì)發(fā)生什么。require-dev
字段中列出的包(這是一個(gè)默認(rèn)值)。require-dev
字段中列出的包。composer.json
文件中定義的腳本。為了獲取依賴的最新版本,并且升級(jí) composer.lock
文件,你應(yīng)該使用 update
命令。
php composer.phar update
這將解決項(xiàng)目的所有依賴,并將確切的版本號(hào)寫(xiě)入 composer.lock
。
如果你只是想更新幾個(gè)包,你可以像這樣分別列出它們:
php composer.phar update vendor/package vendor/package2
你還可以使用通配符進(jìn)行批量更新:
php composer.phar update vendor/*
source
安裝。dist
安裝。require-dev
字段中列出的包(這是一個(gè)默認(rèn)值)。require-dev
字段中列出的包。composer.json
文件中定義的腳本。require
命令增加新的依賴包到當(dāng)前目錄的 composer.json
文件中。
php composer.phar require
在添加或改變依賴時(shí), 修改后的依賴關(guān)系將被安裝或者更新。
如果你不希望通過(guò)交互來(lái)指定依賴包,你可以在這條令中直接指明依賴包。
php composer.phar require vendor/package:2.* vendor/package2:dev-master
source
安裝。dist
安裝。require-dev
字段中列出的包。global
命令允許你在 COMPOSER_HOME 目錄下執(zhí)行其它命令,像 install
、require
或 update
。
并且如果你將 $COMPOSER_HOME/vendor/bin
加入到了 $PATH
環(huán)境變量中,你就可以用它在命令行中安裝全局應(yīng)用,下面是一個(gè)例子:
php composer.phar global require fabpot/php-cs-fixer:dev-master
現(xiàn)在 php-cs-fixer
就可以在全局范圍使用了(假設(shè)你已經(jīng)設(shè)置了你的 PATH)。如果稍后你想更新它,你只需要運(yùn)行 global update
:
php composer.phar global update
search
命令允許你為當(dāng)前項(xiàng)目搜索依賴包,通常它只搜索 packagist.org 上的包,你可以簡(jiǎn)單的輸入你的搜索條件。
php composer.phar search monolog
您也可以通過(guò)傳遞多個(gè)參數(shù)來(lái)進(jìn)行多條件搜索。
列出所有可用的軟件包,你可以使用 show
命令。
php composer.phar show
如果你想看到一個(gè)包的詳細(xì)信息,你可以輸入一個(gè)包名稱。
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
你甚至可以輸入一個(gè)軟件包的版本號(hào),來(lái)顯示該版本的詳細(xì)信息。
php composer.phar show monolog/monolog 1.0.2
depends
命令可以查出已安裝在你項(xiàng)目中的某個(gè)包,是否正在被其它的包所依賴,并列出他們。
php composer.phar depends --link-type=require monolog/monolog
nrk/monolog-fluent
poc/poc
propel/propel
symfony/monolog-bridge
symfony/symfony
require
也可以是 require-dev
。在提交 composer.json
文件,和創(chuàng)建 tag 前,你應(yīng)該始終運(yùn)行 validate
命令。它將檢測(cè)你的 composer.json
文件是否是有效的
php composer.phar validate
如果你經(jīng)常修改依賴包里的代碼,并且它們是從 source(自定義源)進(jìn)行安裝的,那么 status
命令允許你進(jìn)行檢查,如果你有任何本地的更改它將會(huì)給予提示。
php composer.phar status
你可以使用 --verbose
系列參數(shù)(-v|vv|vvv)來(lái)獲取更詳細(xì)的詳細(xì):
php composer.phar status -v
You have changes in the following dependencies:
vendor/seld/jsonlint:
M README.mdown
將 Composer 自身升級(jí)到最新版本,只需要運(yùn)行 self-update
命令。它將替換你的 composer.phar
文件到最新版本。
php composer.phar self-update
如果你想要升級(jí)到一個(gè)特定的版本,可以這樣簡(jiǎn)單的指定它:
php composer.phar self-update 1.0.0-alpha7
如果你已經(jīng)為整個(gè)系統(tǒng)安裝 Composer(參見(jiàn) 全局安裝),你可能需要在 root
權(quán)限下運(yùn)行它:
sudo composer self-update
config
config
命令允許你編輯 Composer 的一些基本設(shè)置,無(wú)論是本地的 composer.json
或者全局的 config.json
文件。
php composer.phar config --list
config [options] [setting-key] [setting-value1] ... [setting-valueN]
setting-key
是一個(gè)配置選項(xiàng)的名稱,setting-value1
是一個(gè)配置的值??梢允褂脭?shù)組作為配置的值(像 github-protocols
),多個(gè) setting-value
是允許的。
有效的配置選項(xiàng),請(qǐng)查看“架構(gòu)”章節(jié)的 config 。
$COMPOSER_HOME/config.json
的全局配置文件。如果不指定該參數(shù),此命令將影響當(dāng)前項(xiàng)目的 composer.json 文件,或 --file
參數(shù)所指向的文件。--global
參數(shù)時(shí),將會(huì)打開(kāi)全局 composer.json 文件。setting-key
指定名稱的配置選項(xiàng)。--global
參數(shù)時(shí),將會(huì)顯示全局配置選項(xiàng)的列表。--global
參數(shù)一起使用。除了修改配置選項(xiàng), config
命令還支持通過(guò)以下方法修改來(lái)源信息:
php composer.phar config repositories.foo vcs http://github.com/foo/bar
你可以使用 Composer 從現(xiàn)有的包中創(chuàng)建一個(gè)新的項(xiàng)目。這相當(dāng)于執(zhí)行了一個(gè) git clone
或 svn checkout
命令后將這個(gè)包的依賴安裝到它自己的 vendor 目錄。
此命令有幾個(gè)常見(jiàn)的用途:
要?jiǎng)?chuàng)建基于 Composer 的新項(xiàng)目,你可以使用 "create-project" 命令。傳遞一個(gè)包名,它會(huì)為你創(chuàng)建項(xiàng)目的目錄。你也可以在第三個(gè)參數(shù)中指定版本號(hào),否則將獲取最新的版本。
如果該目錄目前不存在,則會(huì)在安裝過(guò)程中自動(dòng)創(chuàng)建。
php composer.phar create-project doctrine/orm path 2.2.*
此外,你也可以無(wú)需使用這個(gè)命令,而是通過(guò)現(xiàn)有的 composer.json
文件來(lái)啟動(dòng)這個(gè)項(xiàng)目。
默認(rèn)情況下,這個(gè)命令會(huì)在 packagist.org 上查找你指定的包。
composer
資源庫(kù)的 HTTP URL,或者是指向某個(gè) packages.json
文件的本地路徑。stable
。source
安裝。dist
安裝。require-dev
字段中列出的包。某些情況下你需要更新 autoloader,例如在你的包中加入了一個(gè)新的類。你可以使用 dump-autoload
來(lái)完成,而不必執(zhí)行 install
或 update
命令。
此外,它可以打印一個(gè)優(yōu)化過(guò)的,符合 PSR-0/4 規(guī)范的類的索引,這也是出于對(duì)性能的可考慮。在大型的應(yīng)用中會(huì)有許多類文件,而 autoloader 會(huì)占用每個(gè)請(qǐng)求的很大一部分時(shí)間,使用 classmaps 或許在開(kāi)發(fā)時(shí)不太方便,但它在保證性能的前提下,仍然可以獲得 PSR-0/4 規(guī)范帶來(lái)的便利。
列出已安裝的每個(gè)包的名稱、版本、許可協(xié)議。可以使用 --format=json
參數(shù)來(lái)獲取 JSON 格式的輸出。
你可以運(yùn)行此命令來(lái)手動(dòng)執(zhí)行 腳本,只需要指定腳本的名稱,可選的 --no-dev
參數(shù)允許你禁用開(kāi)發(fā)者模式。
如果你覺(jué)得發(fā)現(xiàn)了一個(gè) bug 或是程序行為變得怪異,你可能需要運(yùn)行 diagnose
命令,來(lái)幫助你檢測(cè)一些常見(jiàn)的問(wèn)題。
php composer.phar diagnose
此命令用來(lái)對(duì)指定包的指定版本進(jìn)行 zip/tar 歸檔。它也可以用來(lái)歸檔你的整個(gè)項(xiàng)目,不包括 excluded/ignored(排除/忽略)的文件。
php composer.phar archive vendor/package 2.0.21 --format=zip
使用 help
可以獲取指定命令的幫助信息。
php composer.phar help install
你可以設(shè)置一些環(huán)境變量來(lái)覆蓋默認(rèn)的配置。建議盡可能的在 composer.json
的 config
字段中設(shè)置這些值,而不是通過(guò)命令行設(shè)置環(huán)境變量。值得注意的是環(huán)境變量中的值,將始終優(yōu)先于 composer.json
中所指定的值。
環(huán)境變量 COMPOSER
可以為 composer.json
文件指定其它的文件名。
例如:
COMPOSER=composer-other.json php composer.phar install
通過(guò)設(shè)置這個(gè)環(huán)境變量,你可以指定 root 包的版本,如果程序不能從 VCS 上猜測(cè)出版本號(hào),并且未在 composer.json
文件中申明。
通過(guò)設(shè)置這個(gè)環(huán)境變量,你可以指定 composer 將依賴安裝在 vendor
以外的其它目錄中。
通過(guò)設(shè)置這個(gè)環(huán)境變量,你可以指定 bin
(Vendor Binaries)目錄到 vendor/bin
以外的其它目錄。
如果你是通過(guò) HTTP 代理來(lái)使用 Composer,你可以使用 http_proxy
或 HTTP_PROXY
環(huán)境變量。只要簡(jiǎn)單的將它設(shè)置為代理服務(wù)器的 URL。許多操作系統(tǒng)已經(jīng)為你的服務(wù)設(shè)置了此變量。
建議使用 http_proxy
(小寫(xiě))或者兩者都進(jìn)行定義。因?yàn)槟承┕ぞ?,?git 或 curl 將使用 http_proxy
小寫(xiě)的版本。另外,你還可以使用 git config --global http.proxy <proxy url>
來(lái)單獨(dú)設(shè)置 git 的代理。
如果你是使用代理服務(wù)器,并且想要對(duì)某些域名禁用代理,就可以使用 no_proxy
環(huán)境變量。只需要輸入一個(gè)逗號(hào)相隔的域名 排除 列表。
此環(huán)境變量接受域名、IP 以及 CIDR地址塊。你可以將它限制到一個(gè)端口(例如::80
)。你還可以把它設(shè)置為 *
來(lái)忽略所有的 HTTP 代理請(qǐng)求。
如果你使用了 HTTP 代理,但它不支持 request_fulluri
標(biāo)簽,那么你應(yīng)該設(shè)置這個(gè)環(huán)境變量為 false
或 0
,來(lái)防止 composer 從 request_fulluri
讀取配置。
如果你使用了 HTTPS 代理,但它不支持 request_fulluri
標(biāo)簽,那么你應(yīng)該設(shè)置這個(gè)環(huán)境變量為 false
或 0
,來(lái)防止 composer 從 request_fulluri
讀取配置。
COMPOSER_HOME
環(huán)境變量允許你改變 Composer 的主目錄。這是一個(gè)隱藏的、所有項(xiàng)目共享的全局目錄(對(duì)本機(jī)的所有用戶都可用)。
它在各個(gè)系統(tǒng)上的默認(rèn)值分別為:
/home/<user>/.composer
。/Users/<user>/.composer
。C:\Users\<user>\AppData\Roaming\Composer
。你可以在 COMPOSER_HOME
目錄中放置一個(gè) config.json
文件。在你執(zhí)行 install
和 update
命令時(shí),Composer 會(huì)將它與你項(xiàng)目中的 composer.json
文件進(jìn)行合并。
該文件允許你為用戶的項(xiàng)目設(shè)置 配置信息 和 資源庫(kù)。
若 全局 和 項(xiàng)目 存在相同配置項(xiàng),那么項(xiàng)目中的 composer.json
文件擁有更高的優(yōu)先級(jí)。
COMPOSER_CACHE_DIR
環(huán)境變量允許你設(shè)置 Composer 的緩存目錄,這也可以通過(guò) cache-dir 進(jìn)行配置。
它在各個(gè)系統(tǒng)上的默認(rèn)值分別為:
$COMPOSER_HOME/cache
。C:\Users\<user>\AppData\Local\Composer
或 %LOCALAPPDATA%/Composer
。這個(gè)環(huán)境變量控制著 Composer 執(zhí)行命令的等待時(shí)間(例如:git 命令)。默認(rèn)值為300秒(5分鐘)。
這個(gè)環(huán)境變量控制著 discard-changes config option。
如果設(shè)置為1,這個(gè)環(huán)境變量將使 Composer 在執(zhí)行每一個(gè)命令時(shí)都放棄交互,相當(dāng)于對(duì)所有命令都使用了 --no-interaction
??梢栽诖罱?虛擬機(jī)/持續(xù)集成服務(wù)器 時(shí)這樣設(shè)置。
更多建議: