composer使用詳解2

包版本

在前面的例子中,我們引入的 monolog 版本指定為 1.0.*。這表示任何從 1.0 開始的開發(fā)分支,它將會匹配 1.0.0、1.0.2 或者 1.0.20。

版本約束可以用幾個不同的方法來指定。

名稱 實(shí)例 描述
確切的版本號 1.0.2 你可以指定包的確切版本。
范圍 >=1.0 >=1.0,<2.0 >=1.0,<1.1或者>=1.2 通過使用比較操作符可以指定有效的版本范圍。 有效的運(yùn)算符:>、>=、<、<=、!=。 你可以定義多個范圍,用逗號隔開,這將被視為一個邏輯AND處理。一個管道符號豎線將作為邏輯OR處理。 AND 的優(yōu)先級高于 OR。
通配符 1.0.* 你可以使用通配符來指定一種模式。1.0.與>=1.0,<1.1是等效的。
賦值運(yùn)算符 ~1.2 這對于遵循語義化版本號的項(xiàng)目非常有用。~1.2相當(dāng)于>=1.2,<2.0。

composer.lock - 鎖文件

在安裝依賴后,Composer 將把安裝時確切的版本號列表寫入 composer.lock 文件。這將鎖定改項(xiàng)目的特定版本。

請?zhí)峤荒銘?yīng)用程序的 composer.lock (包括 composer.json)到你的版本庫中

這是非常重要的,因?yàn)?install 命令將會檢查鎖文件是否存在,如果存在,它將下載指定的版本(忽略 composer.json 文件中的定義)。

這意味著,任何人建立項(xiàng)目都將下載與指定版本完全相同的依賴。你的持續(xù)集成服務(wù)器、生產(chǎn)環(huán)境、你團(tuán)隊(duì)中的其他開發(fā)人員、每件事、每個人都使用相同的依賴,從而減輕潛在的錯誤對部署的影響。即使你獨(dú)自開發(fā)項(xiàng)目,在六個月內(nèi)重新安裝項(xiàng)目時,你也可以放心的繼續(xù)工作,即使從那時起你的依賴已經(jīng)發(fā)布了許多新的版本。

如果不存在 composer.lock 文件,Composer 將讀取 composer.json 并創(chuàng)建鎖文件。

這意味著如果你的依賴更新了新的版本,你將不會獲得任何更新。此時要更新你的依賴版本請使用 update 命令。這將獲取最新匹配的版本(根據(jù)你的 composer.json 文件)并將新版本更新進(jìn)鎖文件。

php composer.phar update
如果只想安裝或更新一個依賴,你可以白名單它們:

php composer.phar update monolog/monolog [...]

鏡像原理

一般情況下,安裝包的數(shù)據(jù)(主要是 zip 文件)一般是從 github.com 上下載的,安裝包的元數(shù)據(jù)是從 packagist.org 上下載的。

然而,由于眾所周知的原因,國外的網(wǎng)站連接速度很慢,并且隨時可能被“墻”甚至“不存在”。

“Packagist 中國全量鏡像”所做的就是緩存所有安裝包和元數(shù)據(jù)到國內(nèi)的機(jī)房并通過國內(nèi)的 CDN 進(jìn)行加速,這樣就不必再去向國外的網(wǎng)站發(fā)起請求,從而達(dá)到加速 composer install 以及 composer update 的過程,并且更加快速、穩(wěn)定。因此,即使 packagist.org、github.com 發(fā)生故障(主要是連接速度太慢和被墻),你仍然可以下載、更新安裝包。

使用中國鏡像

方法一: 修改 composer 的全局配置文件(推薦方式)
打開命令行窗口(windows用戶)或控制臺(Linux、Mac 用戶)并執(zhí)行如下命令:

  composer config -g repo.packagist composer https://packagist.phpcomposer.com

方法二: 修改當(dāng)前項(xiàng)目的 composer.json 配置文件:

打開命令行窗口(windows用戶)或控制臺(Linux、Mac 用戶),進(jìn)入你的項(xiàng)目的根目錄(也就是 composer.json 文件所在目錄),執(zhí)行如下命令:

composer config repo.packagist composer https://packagist.phpcomposer.com

上述命令將會在當(dāng)前項(xiàng)目中的 composer.json 文件的末尾自動添加鏡像的配置信息(你也可以自己手工添加):

"repositories": {
    "packagist": {
        "type": "composer",
        "url": "https://packagist.phpcomposer.com"
    }
}

以 laravel 項(xiàng)目的 composer.json 配置文件為例,執(zhí)行上述命令后如下所示(注意最后幾行):

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*"
    },
    "config": {
        "preferred-install": "dist"
    },
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        }
    }
}

OK,一切搞定!試一下 composer install 來體驗(yàn)飛一般的速度吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容