PHP依賴管理工具:Composer

PHP自己有一個叫pecl的代碼類庫。可以使用工具pear來獲取pecl庫中的代碼。但是現在聽說比較難用,于是就誕生了Composer。我就不做太多的介紹了,下面給出一些鏈接,有興趣的同學自己可以去看看。有很多別人寫好的非常優秀的類庫。
英文官網:https://getcomposer.org/
代碼庫:https://packagist.org/
中文網站:http://www.phpcomposer.com/

Composer的安裝

(1)Windows安裝Composer
我使用的是XAMPP,在xampp\php的目錄下新建一個文件夾取名“composer”,下載composer.phar到此目錄。在composer目錄新建名為“composer.bat”的命令行文件。添加內容:

@php "%~dp0composer.phar" %*

1

添加xampp\php目錄和xampp\php\composer目錄到環境變量中
2

(2)Mac、Linux安裝Composer
對于Mac和Linux而言,把下載到的composer.par文件改名為composer,然后移動到系統的命令目錄(對于Mac和Linux而言通常是/usr/local/bin)。
由于Mac自帶PHP環境因此就直接可以再teminal里使用composer了,而對于沒有自帶安裝PHP環境的Linux而言就需要安裝好PHP環境,并確保在composer的同目錄中添加PHP可執行文件的符號鏈接。

Composer的使用

1. 初始化一個Composer項目

(1)先定位到我項目的根目錄:

d:
cd xampp/htdocs/myProject

(2)然后就可以執行composer的命令了:

composer init
2. Composer倉庫packagist需要CA證書

Composer使用的是OpenSSl訪問了packagegit.org的代碼倉庫的。所以需要我們提供自己的證書。
我用的是XAMPP,在xampp\perl\vendor\lib\Mozilla\CA目錄下有這個證書——cacert.pem。如果沒有也可以自己去下載cacert.pem放到自己想放的目錄。
然后在php.ini中打開擴展:

extension=php_openssl.dll

最后在php.ini中添加CA證書的路徑:

[Mozilla CA]
openssl.cafile= D:\xampp\perl\vendor\lib\Mozilla\CA\cacert.pem
3. 通過composer來管理bower和npm的資源

對于Composer而言,他是一個php類庫依賴管理工具。對于bootstrap和jQuery等Css、Javascript庫就需要bower和npm來管理。但是我們可以通過給Composer全局(global)安裝一個composer asset plugin插件來處理這些前端代碼庫。命令如下:

composer global require "fxp/composer-asset-plugin:~1.1.1"

Paste_Image.png

composer asset plugin還支持一些自定義的設置,參看composer asset plugin wiki文檔。比如Yii2(我所使用的一個PHP框架)的項目中就使用了Define a custom directory for the assets installation(自定義資源安裝目錄)這一功能。在默認情況下composer asset plugin插件會把bower和npm的庫安裝到'vendor/bower-asset''vendor/npm-asset'目錄。通過在composer.json的"extra"中設置"asset-installer-paths"可以實現更改安裝目錄的需求,代碼如下:

"extra": {
  "asset-installer-paths": {
    "npm-asset-library": "vendor/npm", 
    "bower-asset-library": "vendor/bower" 
  }
}
在Yii2中使用前端庫(Bower and NPM Assets)

大多數 JavaScript、CSS 庫通過BowerNPM管理, 如果你的應用或擴展使用這些庫,推薦你遵循以下步驟來管理庫中的資源:
(1)修改應用或擴展的 composer.json文件將庫名列入require中, 應使用"bower-asset/PackageName"(Bower包)或"npm-asset/PackageName"(NPM包)來對應你所需的前端庫。
(2)創建一個資源類并將你的應用或擴展要使用的JavaScript、CSS 文件列入到類中, 應設置yii\web\AssetBundle::sourcePath屬性為"@bower/PackageName""@npm/PackageName",因為根據別名Composer會安裝Bower或NPM包到對應的目錄下。
(3)注意: 一些包會將它們分布式文件放到一個子目錄中,對于這種情況,應指定子目錄作為yii\web\AssetBundle::sourcePath屬性值,例如,yii\web\JqueryAsset使用 "@bower/jquery/dist"而不是 "@bower/jquery"
(4)Yii2中Bower和NPM中資源的發布默認情況下,當資源被發布的時候,所有在yii\web\AssetBundle::$sourcePath目錄下的資源和文件夾都會被發布。當然你也可以通過publishOptions來自定義需要發布的內容。例如,如果只想要發布yii\web\AssetBundle::$sourcePath下面的一個或者幾個資源,你可以寫如下的類:

<?php
namespace app\assets;
use yii\web\AssetBundle;

class FontAwesomeAsset extends AssetBundle 
{    
  public $sourcePath = '@bower/font-awesome';     
  public $css = [
    'css/font-awesome.min.css',
  ];    
  public $publishOptions = [
    'only' => [
      'fonts/',
      'css/',
    ]
  ];
}

以上的例子是定義fontawesome的資源類。通過指定了only選項, 只有fonts和css這兩個子選項會被發布。

GitHub API rate limit 問題

由于GitHub對不明身份的主機獲取代碼進行了限制,因此在使用Composer安裝或者更新的時候會提示讓你輸入GitHub的token。
解決辦法是:
訪問GitHub網站,到Your Profile > Edit Profile > Personal access tokens > Generate new token生成一個token值,復制到Composer的命令行需要輸入token的地方即可。如果沒有成功的話還可以使用以下命令來單獨設置token:

composer config -g github-oauth.github.com your-token

成功后會在C:\Users\Username\AppData\Roaming\Composer(Mac的話是:/Users/Username/.composer)目錄下生成一個auth.json文件。這個文件里面就保存了你的GitHub的token。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容