2016年10月10日 星期一

Composer 文件(中文)

基本用法#

簡介#

For our basic usage introduction, we will be installing monolog/monolog, a logging library. If you have not yet installed Composer, refer to the Intro chapter.
Note: for the sake of simplicity, this introduction will assume you have performed a local install of Composer.

composer.json:專案設定#

要開始的專案中使用 Composer,你所需要的是一個 composer.json 檔案。這個檔案描述你的專案的依賴關係, 並可能也包含其他詮釋資料。

require 鍵#

你在 composer.json 中指定的第一個(往往只有一個)的是 require 鍵。你只是簡單告訴 Composer 你的專案依賴哪些套件。
{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}
正如你所看到的,require 讓一個物件對應 套件名稱(如 monolog/monolog) 到 套件版本(如 1.0.*)。

套件名稱#

套件名稱包括了一個 vendor 名稱和專案名稱。 通常這些會是相同的 - vendor 名稱的存在僅是為了防止命名衝突。 它允許兩個不同的人建立一個名為 json 的函式庫,然後會被命名為 igorw/json 和 seldaek/json
在這裡,我們需要 monolog/monolog,所以 vendor 名稱與專案名稱相同。 對於具有一個唯一名稱的專案是推薦的。 它也允許在相同命名空間底下添加更多相關專案。 如果你在維護一個函式庫, 這會讓它很容易將其分割成更小的解耦部份。

套件版本#

In the previous example we were requiring version 1.0.* of Monolog. This means any version in the 1.0 development branch. It is the equivalent of saying versions that match >=1.0 <1 .1="" code="">.
Version constraints can be specified in several ways, read versions for more in-depth information on this topic.

穩定度#

預設情況下,只有穩定發行版會被考慮在內。如果你也想取得依賴套件的 RC、beta、alpha 或 dev 版本, 你可以使用 stability 旗標。 要對全部套件變更,而非每個依賴套件設定,你也可以使用 minimum-stability 設定。

安裝依賴套件#

要取回定義的依賴套件到你本地的專案中,只要執行 composer.phar 的 install 命令。
php composer.phar install
這會尋找匹配所提供版本約束最新版本的 monolog/monolog 並下載它到 vendor 目錄中。 慣例是放置第三方程式碼到一個名為 vendor 的目錄。 Monolog 的情況會放到 vendor/monolog/monolog 中。
小秘訣: 如果你正為你的專案使用 git,你可能想要添加 vendor 到你的 .gitignore 中。 你真的不希望添加那些程式碼到你的儲存庫。
You will notice the install command also created a composer.lock file.

composer.lock - 鎖檔案#

在安裝依賴套件之後,Composer 會把安裝的確切版本列表寫入一個 composer.lock 檔案。 它鎖定專案為指定版本。
Commit 你的應用程式的 composer.lock (隨著 composer.json)到版本控制中。
這很重要,因為 install 命令檢查鎖檔案是否存在, 而如果是的話,它下載這裡指定的版本(無論 composer.json 表示的是什麼)。
這意味著,任何設置專案的人都會下載完全相同版本的依賴套件。 你的 CI 伺服器、產品機器、 你團隊的其他開發人員、每件事物及每個人都運行相同的依賴套件, 這減輕了只影響佈署的某些部份錯誤的可能性。 即使你獨自開發,在六個月內重新安裝專案, 你可以確信安裝的依賴套件仍然有效, 即使你的依賴套件從那之後發布了很多新版本。
如果不存在 composer.lock 檔案,Composer 會從 composer.json 讀取依賴套件和版本,並在執行 update 或 install 之後建立鎖檔案。
這意味著,如果任何依賴套件有新版本,你不會自動取得更新。 要更新新的版本,使用 update 命令。 這會取回最新匹配版本(根據你的 composer.json 檔案) 並且也用新版本更新鎖檔案。
php composer.phar update
註: 如果 composer.lock 和 composer.json 不同步的話, Composer 在執行 install 命令時會顯示警告。
如果你只想要安裝或升級單一依賴套件,你可以列出他們:
php composer.phar update monolog/monolog [...]
註: 對函式庫來說沒有必要 commit 鎖檔案, 參閱:函式庫 - 鎖檔案

Packagist#

Packagist 是主要的 Composer 儲存庫。一個 Composer 儲存庫基本上是一個套件來源:一個你可以從之取得套件的地方。 Packagist 目標是成為大家使用的中央儲存庫。 這意味著你可以自動 require 其中任何可用的套件。
如果你去到 Packagist 網站(packagist.org), 你可以瀏覽並搜尋套件。
任何使用 Composer 的開源專案建議在 Packagist 上發表他們的套件。函式庫並不需要放在 Packagist 來被 Composer 使用, 但它能讓其他開發者更快速地發現和採用。

自動載入#

對於指定了自動載入資訊的函式庫,Composer 產生一個 vendor/autoload.php 檔案。你可以簡單地引入此檔案, 你會得到免費的自動載入。
require __DIR__ . '/vendor/autoload.php';
這使得它很容易使用第三方程式碼。例如:如果你的專案依賴 Monolog,你可以從它開始使用類別, 而他們會被自動載入。
$log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');
你甚至可以添加你自己的程式碼到自動載入器,透過添加一個 autoload 欄位到 composer.json
{
    "autoload": {
        "psr-4": {"Acme\\": "src/"}
    }
}
Composer 會為命名空間 Acme 註冊一個 PSR-4 自動載入器。
你定義一個從命名空間到目錄的對映。src 目錄會在你專案的 root,與 vendor 目錄同層級。 一個範例檔案名稱會是 src/Foo.php包含一個 Acme\Foo 類別。
在添加 autoload 欄位後,你必須再次執行 dump-autoload 來重新產生 vendor/autoload.php 檔案。
引入該檔案也會回傳 autoloader 實例,所以你可以儲存 include 呼叫的回傳值在一個變數中,並添加更多命名空間。 這對在一個測試套裝中自動載入類別來說是很有用的,例如。
$loader = require  __DIR__ . '/vendor/autoload.php';
$loader->add('Acme\\Test\\', __DIR__);
除了 PSR-4 自動載入,Composer 也支援 PSR-0、classmap 和自動載入檔案。 更多資訊,參見 autoload 參考。
註: Composer 提供它自己的自動載入器。如果你不想要使用, 你可以只引入 vendor/composer/autoload_*.php 檔案, 它回傳允許你配置自己的自動載入器的關聯陣列。

from : https://getcomposer.ycnets.com/doc/01-basic-usage.md#introduction

沒有留言:

wibiya widget