命令行

2018-02-24 16:19 更新

你已經(jīng)學(xué)會(huì)了如何使用命令行界面做一些事情。本章將向你介紹所有可用的命令。

為了從命令行獲得幫助信息,請(qǐng)運(yùn)行?composer?或者?composer list?命令,然后結(jié)合?--help?命令來(lái)獲得更多的幫助信息。

全局參數(shù)

下列參數(shù)可與每一個(gè)命令結(jié)合使用:

  • --verbose (-v):?增加反饋信息的詳細(xì)度。
    • -v 表示正常輸出。
    • -vv 表示更詳細(xì)的輸出。
    • -vvv 則是為了 debug。
  • --help (-h):?顯示幫助信息。
  • --quiet (-q):?禁止輸出任何信息。
  • --no-interaction (-n):?不要詢(xún)問(wèn)任何交互問(wèn)題。
  • --working-dir (-d):?如果指定的話(huà),使用給定的目錄作為工作目錄。
  • --profile:?顯示時(shí)間和內(nèi)存使用信息。
  • --ansi:?強(qiáng)制 ANSI 輸出。
  • --no-ansi:?關(guān)閉 ANSI 輸出。
  • --version (-V):?顯示當(dāng)前應(yīng)用程序的版本信息。

進(jìn)程退出代碼

  • 0:?正常
  • 1:?通用/未知錯(cuò)誤
  • 2:?依賴(lài)關(guān)系處理錯(cuò)誤

初始化?init

在?“庫(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

初始化-參數(shù)

  • --name:?包的名稱(chēng)。
  • --description:?包的描述。
  • --author:?包的作者。
  • --homepage:?包的主頁(yè)。
  • --require:?需要依賴(lài)的其它包,必須要有一個(gè)版本約束。并且應(yīng)該遵循?foo/bar:1.0.0?這樣的格式。
  • --require-dev:?開(kāi)發(fā)版的依賴(lài)包,內(nèi)容格式與?--require?相同。
  • --stability (-s):?minimum-stability?字段的值。

安裝?install

install?命令從當(dāng)前目錄讀取?composer.json?文件,處理了依賴(lài)關(guān)系,并把其安裝到?vendor?目錄下。

php composer.phar install

如果當(dāng)前目錄下存在?composer.lock?文件,它會(huì)從此文件讀取依賴(lài)版本,而不是根據(jù)?composer.json?文件去獲取依賴(lài)。這確保了該庫(kù)的每個(gè)使用者都能得到相同的依賴(lài)版本。

如果沒(méi)有?composer.lock?文件,composer 將在處理完依賴(lài)關(guān)系后創(chuàng)建它。

安裝-參數(shù)

  • --prefer-source:?下載包的方式有兩種:?source?和?dist。對(duì)于穩(wěn)定版本 composer 將默認(rèn)使用?dist?方式。而?source?表示版本控制源 。如果?--prefer-source?是被啟用的,composer 將從?source?安裝(如果有的話(huà))。如果想要使用一個(gè) bugfix 到你的項(xiàng)目,這是非常有用的。并且可以直接從本地的版本庫(kù)直接獲取依賴(lài)關(guān)系。
  • --prefer-dist:?與?--prefer-source?相反,composer 將盡可能的從?dist?獲取,這將大幅度的加快在 build servers 上的安裝。這也是一個(gè)回避 git 問(wèn)題的途徑,如果你不清楚如何正確的設(shè)置。
  • --dry-run:?如果你只是想演示而并非實(shí)際安裝一個(gè)包,你可以運(yùn)行?--dry-run?命令,它將模擬安裝并顯示將會(huì)發(fā)生什么。
  • --dev:?安裝?require-dev?字段中列出的包(這是一個(gè)默認(rèn)值)。
  • --no-dev:?跳過(guò)?require-dev?字段中列出的包。
  • --no-scripts:?跳過(guò)?composer.json?文件中定義的腳本。
  • --no-plugins:?關(guān)閉 plugins。
  • --no-progress:?移除進(jìn)度信息,這可以避免一些不處理?yè)Q行的終端或腳本出現(xiàn)混亂的顯示。
  • --optimize-autoloader (-o):?轉(zhuǎn)換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持。特別是在生產(chǎn)環(huán)境下建議這么做,但由于運(yùn)行需要一些時(shí)間,因此并沒(méi)有作為默認(rèn)值。

更新?update

為了獲取依賴(lài)的最新版本,并且升級(jí)?composer.lock?文件,你應(yīng)該使用?update?命令。

php composer.phar update

這將解決項(xiàng)目的所有依賴(lài),并將確切的版本號(hào)寫(xiě)入?composer.lock

如果你只是想更新幾個(gè)包,你可以像這樣分別列出它們:

php composer.phar update vendor/package vendor/package2

你還可以使用通配符進(jìn)行批量更新:

php composer.phar update vendor/*

更新-參數(shù)

  • --prefer-source:?當(dāng)有可用的包時(shí),從?source?安裝。
  • --prefer-dist:?當(dāng)有可用的包時(shí),從?dist?安裝。
  • --dry-run:?模擬命令,并沒(méi)有做實(shí)際的操作。
  • --dev:?安裝?require-dev?字段中列出的包(這是一個(gè)默認(rèn)值)。
  • --no-dev:?跳過(guò)?require-dev?字段中列出的包。
  • --no-scripts:?跳過(guò)?composer.json?文件中定義的腳本。
  • --no-plugins:?關(guān)閉 plugins。
  • --no-progress:?移除進(jìn)度信息,這可以避免一些不處理?yè)Q行的終端或腳本出現(xiàn)混亂的顯示。
  • --optimize-autoloader (-o):?轉(zhuǎn)換 PSR-0/4 autoloading 到 classmap 可以獲得更快的加載支持。特別是在生產(chǎn)環(huán)境下建議這么做,但由于運(yùn)行需要一些時(shí)間,因此并沒(méi)有作為默認(rèn)值。
  • --lock:?僅更新 lock 文件的 hash,取消有關(guān) lock 文件過(guò)時(shí)的警告。
  • --with-dependencies?同時(shí)更新白名單內(nèi)包的依賴(lài)關(guān)系,這將進(jìn)行遞歸更新。

申明依賴(lài)?require

require?命令增加新的依賴(lài)包到當(dāng)前目錄的?composer.json?文件中。

php composer.phar require

在添加或改變依賴(lài)時(shí), 修改后的依賴(lài)關(guān)系將被安裝或者更新。

如果你不希望通過(guò)交互來(lái)指定依賴(lài)包,你可以在這條令中直接指明依賴(lài)包。

php composer.phar require vendor/package:2.* vendor/package2:dev-master

申明依賴(lài)-參數(shù)

  • --prefer-source:?當(dāng)有可用的包時(shí),從?source?安裝。
  • --prefer-dist:?當(dāng)有可用的包時(shí),從?dist?安裝。
  • --dev:?安裝?require-dev?字段中列出的包。
  • --no-update:?禁用依賴(lài)關(guān)系的自動(dòng)更新。
  • --no-progress:?移除進(jìn)度信息,這可以避免一些不處理?yè)Q行的終端或腳本出現(xiàn)混亂的顯示。
  • --update-with-dependencies?一并更新新裝包的依賴(lài)。

全局執(zhí)行?global

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

search?命令允許你為當(dāng)前項(xiàng)目搜索依賴(lài)包,通常它只搜索 packagist.org 上的包,你可以簡(jiǎn)單的輸入你的搜索條件。

php composer.phar search monolog

您也可以通過(guò)傳遞多個(gè)參數(shù)來(lái)進(jìn)行多條件搜索。

搜索-參數(shù)

  • --only-name (-N):?僅針對(duì)指定的名稱(chēng)搜索(完全匹配)。

展示?show

列出所有可用的軟件包,你可以使用?show?命令。

php composer.phar show

如果你想看到一個(gè)包的詳細(xì)信息,你可以輸入一個(gè)包名稱(chēng)。

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

展示-參數(shù)

  • --installed (-i):?列出已安裝的依賴(lài)包。
  • --platform (-p):?僅列出平臺(tái)軟件包(PHP 與它的擴(kuò)展)。
  • --self (-s):?僅列出當(dāng)前項(xiàng)目信息。

依賴(lài)性檢測(cè)?depends

depends?命令可以查出已安裝在你項(xiàng)目中的某個(gè)包,是否正在被其它的包所依賴(lài),并列出他們。

php composer.phar depends --link-type=require monolog/monolog

nrk/monolog-fluent
poc/poc
propel/propel
symfony/monolog-bridge
symfony/symfony

依賴(lài)性檢測(cè)-參數(shù)

  • --link-type:?檢測(cè)的類(lèi)型,默認(rèn)為?require?也可以是?require-dev。

有效性檢測(cè)?validate

在提交?composer.json?文件,和創(chuàng)建 tag 前,你應(yīng)該始終運(yùn)行?validate?命令。它將檢測(cè)你的?composer.json?文件是否是有效的

php composer.phar validate

有效性檢測(cè)參數(shù)

  • --no-check-all:?Composer 是否進(jìn)行完整的校驗(yàn)。

依賴(lài)包狀態(tài)檢測(cè)?status

如果你經(jīng)常修改依賴(lài)包里的代碼,并且它們是從 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

自我更新?self-update

將 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

自我更新-參數(shù)

  • --rollback (-r):?回滾到你已經(jīng)安裝的最后一個(gè)版本。
  • --clean-backups:?在更新過(guò)程中刪除舊的備份,這使得更新過(guò)后的當(dāng)前版本是唯一可用的備份。

更改配置?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)的名稱(chēng),setting-value1?是一個(gè)配置的值。可以使用數(shù)組作為配置的值(像?github-protocols),多個(gè)?setting-value?是允許的。

有效的配置選項(xiàng),請(qǐng)查看“架構(gòu)”章節(jié)的?config?。

更改配置-參數(shù)

  • --global (-g):?操作位于?$COMPOSER_HOME/config.json?的全局配置文件。如果不指定該參數(shù),此命令將影響當(dāng)前項(xiàng)目的 composer.json 文件,或?--file?參數(shù)所指向的文件。
  • --editor (-e):?使用文本編輯器打開(kāi) composer.json 文件。默認(rèn)情況下始終是打開(kāi)當(dāng)前項(xiàng)目的文件。當(dāng)存在?--global?參數(shù)時(shí),將會(huì)打開(kāi)全局 composer.json 文件。
  • --unset:?移除由?setting-key?指定名稱(chēng)的配置選項(xiàng)。
  • --list (-l):?顯示當(dāng)前配置選項(xiàng)的列表。當(dāng)存在?--global?參數(shù)時(shí),將會(huì)顯示全局配置選項(xiàng)的列表。
  • --file="..." (-f):?在一個(gè)指定的文件上操作,而不是 composer.json。注意:不能與?--global?參數(shù)一起使用。

修改包來(lái)源

除了修改配置選項(xiàng),?config?命令還支持通過(guò)以下方法修改來(lái)源信息:

php composer.phar config repositories.foo vcs http://github.com/foo/bar

創(chuàng)建項(xiàng)目?create-project

你可以使用 Composer 從現(xiàn)有的包中創(chuàng)建一個(gè)新的項(xiàng)目。這相當(dāng)于執(zhí)行了一個(gè)?git clone?或?svn checkout命令后將這個(gè)包的依賴(lài)安裝到它自己的 vendor 目錄。

此命令有幾個(gè)常見(jiàn)的用途:

  1. 你可以快速的部署你的應(yīng)用。
  2. 你可以檢出任何資源包,并開(kāi)發(fā)它的補(bǔ)丁。
  3. 多人開(kāi)發(fā)項(xiàng)目,可以用它來(lái)加快應(yīng)用的初始化。

要?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 上查找你指定的包。

創(chuàng)建項(xiàng)目-參數(shù)

  • --repository-url:?提供一個(gè)自定義的儲(chǔ)存庫(kù)來(lái)搜索包,這將被用來(lái)代替 packagist.org??梢允且粋€(gè)指向?composer?資源庫(kù)的 HTTP URL,或者是指向某個(gè)?packages.json?文件的本地路徑。
  • --stability (-s):?資源包的最低穩(wěn)定版本,默認(rèn)為?stable
  • --prefer-source:?當(dāng)有可用的包時(shí),從?source?安裝。
  • --prefer-dist:?當(dāng)有可用的包時(shí),從?dist?安裝。
  • --dev:?安裝?require-dev?字段中列出的包。
  • --no-install:?禁止安裝包的依賴(lài)。
  • --no-plugins:?禁用 plugins。
  • --no-scripts:?禁止在根資源包中定義的腳本執(zhí)行。
  • --no-progress:?移除進(jìn)度信息,這可以避免一些不處理?yè)Q行的終端或腳本出現(xiàn)混亂的顯示。
  • --keep-vcs:?創(chuàng)建時(shí)跳過(guò)缺失的 VCS 。如果你在非交互模式下運(yùn)行創(chuàng)建命令,這將是非常有用的。

打印自動(dòng)加載索引?dump-autoload

某些情況下你需要更新 autoloader,例如在你的包中加入了一個(gè)新的類(lèi)。你可以使用?dump-autoload?來(lái)完成,而不必執(zhí)行?install?或?update?命令。

此外,它可以打印一個(gè)優(yōu)化過(guò)的,符合 PSR-0/4 規(guī)范的類(lèi)的索引,這也是出于對(duì)性能的可考慮。在大型的應(yīng)用中會(huì)有許多類(lèi)文件,而 autoloader 會(huì)占用每個(gè)請(qǐng)求的很大一部分時(shí)間,使用 classmaps 或許在開(kāi)發(fā)時(shí)不太方便,但它在保證性能的前提下,仍然可以獲得 PSR-0/4 規(guī)范帶來(lái)的便利。

打印自動(dòng)加載索引-參數(shù)

  • --optimize (-o):?轉(zhuǎn)換 PSR-0/4 autoloading 到 classmap 獲得更快的載入速度。這特別適用于生產(chǎn)環(huán)境,但可能需要一些時(shí)間來(lái)運(yùn)行,因此它目前不是默認(rèn)設(shè)置。
  • --no-dev:?禁用 autoload-dev 規(guī)則。

查看許可協(xié)議?licenses

列出已安裝的每個(gè)包的名稱(chēng)、版本、許可協(xié)議。可以使用?--format=json?參數(shù)來(lái)獲取 JSON 格式的輸出。

執(zhí)行腳本?run-script

你可以運(yùn)行此命令來(lái)手動(dòng)執(zhí)行?腳本,只需要指定腳本的名稱(chēng),可選的?--no-dev?參數(shù)允許你禁用開(kāi)發(fā)者模式。

診斷?diagnose

如果你覺(jué)得發(fā)現(xiàn)了一個(gè) bug 或是程序行為變得怪異,你可能需要運(yùn)行?diagnose?命令,來(lái)幫助你檢測(cè)一些常見(jiàn)的問(wèn)題。

php composer.phar diagnose

歸檔?archive

此命令用來(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

歸檔-參數(shù)

  • --format (-f):?指定歸檔格式:tar 或 zip(默認(rèn)為 tar)。
  • --dir:?指定歸檔存放的目錄(默認(rèn)為當(dāng)前目錄)。

獲取幫助信息?help

使用?help?可以獲取指定命令的幫助信息。

php composer.phar help install

環(huán)境變量

你可以設(shè)置一些環(huán)境變量來(lái)覆蓋默認(rèn)的配置。建議盡可能的在?composer.json?的?config?字段中設(shè)置這些值,而不是通過(guò)命令行設(shè)置環(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

通過(guò)設(shè)置這個(gè)環(huán)境變量,你可以指定 root 包的版本,如果程序不能從 VCS 上猜測(cè)出版本號(hào),并且未在?composer.json?文件中申明。

COMPOSER_VENDOR_DIR

通過(guò)設(shè)置這個(gè)環(huán)境變量,你可以指定 composer 將依賴(lài)安裝在?vendor?以外的其它目錄中。

COMPOSER_BIN_DIR

通過(guò)設(shè)置這個(gè)環(huán)境變量,你可以指定?binVendor Binaries)目錄到?vendor/bin?以外的其它目錄。

http_proxy or HTTP_PROXY

如果你是通過(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?來(lái)單獨(dú)設(shè)置 git 的代理。

no_proxy

如果你是使用代理服務(wù)器,并且想要對(duì)某些域名禁用代理,就可以使用?no_proxy?環(huán)境變量。只需要輸入一個(gè)逗號(hào)相隔的域名?排除?列表。

此環(huán)境變量接受域名、IP 以及 CIDR地址塊。你可以將它限制到一個(gè)端口(例如::80)。你還可以把它設(shè)置為?*?來(lái)忽略所有的 HTTP 代理請(qǐng)求。

HTTP_PROXY_REQUEST_FULLURI

如果你使用了 HTTP 代理,但它不支持?request_fulluri?標(biāo)簽,那么你應(yīng)該設(shè)置這個(gè)環(huán)境變量為?false?或?0?,來(lái)防止 composer 從?request_fulluri?讀取配置。

HTTPS_PROXY_REQUEST_FULLURI

如果你使用了 HTTPS 代理,但它不支持?request_fulluri?標(biāo)簽,那么你應(yīng)該設(shè)置這個(gè)環(huán)境變量為?false?或?0?,來(lái)防止 composer 從?request_fulluri?讀取配置。

COMPOSER_HOME

COMPOSER_HOME?環(huán)境變量允許你改變 Composer 的主目錄。這是一個(gè)隱藏的、所有項(xiàng)目共享的全局目錄(對(duì)本機(jī)的所有用戶(hù)都可用)。

它在各個(gè)系統(tǒng)上的默認(rèn)值分別為:

  • *nix?/home//.composer。
  • OSX?/Users//.composer
  • Windows?C:\Users\\AppData\Roaming\Composer。

COMPOSER_HOME/config.json

你可以在?COMPOSER_HOME?目錄中放置一個(gè)?config.json?文件。在你執(zhí)行?install?和?update?命令時(shí),Composer 會(huì)將它與你項(xiàng)目中的?composer.json?文件進(jìn)行合并。

該文件允許你為用戶(hù)的項(xiàng)目設(shè)置?配置信息?和?資源庫(kù)。

若?全局?和?項(xiàng)目?存在相同配置項(xiàng),那么項(xiàng)目中的?composer.json?文件擁有更高的優(yōu)先級(jí)。

COMPOSER_CACHE_DIR

COMPOSER_CACHE_DIR?環(huán)境變量允許你設(shè)置 Composer 的緩存目錄,這也可以通過(guò)?cache-dir?進(jìn)行配置。

它在各個(gè)系統(tǒng)上的默認(rèn)值分別為:

  • *nix and OSX?$COMPOSER_HOME/cache
  • Windows?C:\Users\\AppData\Local\Composer?或?%LOCALAPPDATA%/Composer。

COMPOSER_PROCESS_TIMEOUT

這個(gè)環(huán)境變量控制著 Composer 執(zhí)行命令的等待時(shí)間(例如:git 命令)。默認(rèn)值為300秒(5分鐘)。

COMPOSER_DISCARD_CHANGES

這個(gè)環(huán)境變量控制著 discard-changes?config option。

COMPOSER_NO_INTERACTION

如果設(shè)置為1,這個(gè)環(huán)境變量將使 Composer 在執(zhí)行每一個(gè)命令時(shí)都放棄交互,相當(dāng)于對(duì)所有命令都使用了?--no-interaction。可以在搭建?虛擬機(jī)/持續(xù)集成服務(wù)器?時(shí)這樣設(shè)置。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)