直接說命令彷佛很枯燥,咱就來個命令 + 圖片,但願你們喜歡。php
啓動:命令行輸入composer 或 composer -v既能看到命令列表,一共35個。git
由於數量較多,分爲3篇說完,本篇介紹其中的 about、init、install、update、clear-cache/clearcache、archive、browsehome 這9個。github
這個命令實際意義不大,至關於composer的一句話簡介吧,也不須要其餘參數json
顧名思義,初始化你的composer項目,再簡單一點說就是嚮導的形式幫你生成一個composer.json,若是你喜歡手動建立composer.json也沒有問題。segmentfault
這個過程將你的項目也歸入了composer體系,composer.json裏包含項目的基本信息(好比做者,項目名稱等)和項目所須要的依賴(你vendor裏的那些庫),總之,經過init你新建了一個composer.json。瀏覽器
咱們看一下它的樣子緩存
你暫時無需在乎composer.json裏那些key-value,咱們將在composer.json篇詳細講解。服務器
重要且很是經常使用的命令,這兩個命令須要放一塊兒說才更好理解,install - 安裝、update - 更新。說到這裏,咱們有必要順一順composer安裝一個擴展的邏輯,認真看,這將是本篇最最重要的部分。yii2
咱們要先科普下兩個文件,composer.json和composer.lockcomposer
好比在composer.json有一條依賴是 "abei2017/yii2-emoji": "^1.0",那麼你在composer.lock能夠看到yii2-emoji當前用的是1.0.0版本,因此纔有了下面的邏輯。
當咱們composer install後,composer安裝器進行了以下操做
composer.lock 是一個標尺。
固然若是你手動修改了composer.json,而後執行composer install後,會發現一個警告信息,看下圖。
上面圖中警告出現的場景是我在composer.json中改了項目的name值,而後composer install。這個警告是告訴咱們Composer發現composer.json哈希值和composer.lock中記載的不一樣,所以不進行任何處理。
可是,可是,可是,咱們如何在這個場景下保證json和lock文件一致那,其實也很簡單,在咱們改動了composer.json後執行以下命令
composer update nothing // 或composer update --lock
上面的命令不會處理依賴(有例外,若是改動了require數據,則會處理依賴),僅僅保證json和lock文件的一致。
要記住,install命令處理依賴的依據是composer.lock文件,好比一個image擴展當前最新版本是3.0,lock文件記錄使用的是2.0,則install會按照2.0來安裝,就像官方所說「composer.lock確保了該庫的每一個使用者都能獲得相同的依賴版本。」
接下來咱們說說update,強大的update,永遠追求最新版本的update。
update命令負責更新,從上面咱們知道它能經過更新保證json和lock文件的一致,另外好比你在composer.json中修改了好比require(依賴)的增長或減小,執行 composer update也能直接幫你安裝或刪除相關依賴並保證json和lock文件的一致。
要記住的是 composer update 更新的是全部且更新到最新版本,若是要單獨更新某個庫,可使用 composer update abei2017/yii2-emoji 。
update是一把利劍,它讓不少人後悔莫已。
到此刻你會發現,install和update彷佛均可以安裝擴展,那麼咱們如何準確使用他們那?咱們如今溫習一下上面學習的結果,3條。
因此通常咱們以下部署程序
一句話就是保證composer.lock的一致和穩定。其實最穩定安裝擴展的方法是requrie命令(下篇講到)。
另外上面是在思路方面爲你們介紹install 和 update,這兩個命令還有不少參數,剛阿北看了下到很好了解,這裏列出來不一一講解,有不懂留言便可。
install
update
這個要說下,和名字同樣,清空全部緩存,咱們來順一順。
當咱們使用require安裝一個擴展的時候,composer會在咱們機器上留一個緩存文件夾,通常是在 C:UsersAdministratorAppDataLocalComposer(須要執行一次require纔有會Composer目錄),它的基本結構以下
切記,不要和全局目錄混淆了,全局目錄的位置爲C:UsersAdministratorAppDataRoamingComposer,裏面含有好比全局配置文件,全局安裝的擴展包等。
下面咱們來看一下這個過程,首先我requrie了一個擴展包,以下圖
如圖所示,這個過程是從服務器下載的,而後咱們看看緩存文件夾
看到了吧,此刻在緩存文件夾的files子文件夾裏多了一個abei2017/yii2-emoji/xxx.zip的文件,這個就是緩存,接下來咱們刪除項目的yii2-emoji而後再安裝,看看有何不一樣了,看下圖
不同了吧,下一次從緩存讀取,你是否發現速度快了不少,那是必須的。
因此,有些問題你能夠清空緩存試試,好比版本問題等等。好了,咱們尚未說clear-cache命令那(clearcache一個意思)
composer clearcache
流程明白了吧,記住,這個clearcache也同時刪除了C:UsersAdministratorAppDataLocal下的Composer文件夾自身。
首先要知道這仍然是一個從遠程下載的過程,只不過下載後將其打包成了zip/tar壓縮包,好比你能夠打包某個擴展發給你的同事等。官方手冊的書寫方法會讓一些初學者誤會 對於包的指定是不能含有vendor的,接下來的命令是正確的
composer archive abei2017/yii2-emoji --format=zip --dir ./zip
結果以下圖,咱們一一說明下。
要注意:運行此命令生成歸檔文件並不會下載此擴展相關的依賴。
瀏覽,這個命令我以爲最大的一個用處就是打開倉庫頁面、好比我輸入了
composer browse abei2017/yii2-emoji
命令行會調出瀏覽器並打開 https://github.com/abei2017/y... ,這個命令和另一個home命令差很少。
composer home abei2017/yii2-emoji
本篇就說這些,其中update在後面還有講,尤爲是介紹requrie命令時候要和它有一些對比,也幫你們分析出當咱們安裝或升級一個擴展的時候,正確姿式爲什麼用require而不是update。