不容錯(cuò)過(guò)的Composer

01:Comopser簡(jiǎn)介和安裝-【包依賴(lài)管理】

  • 網(wǎng)址:getcomposer.org
  • 保存的文件夾:vendor目錄
  • 安裝:
  • mac:
    • 下載會(huì)獲取到composer.phar這個(gè)文件
    • 移動(dòng)到環(huán)境變量目錄并改名:mv composer.phar /usr/local/bin/composer
    • 移動(dòng)到環(huán)境變量的目錄后,等于注冊(cè)了全局使用,并且已經(jīng)更改名字為:composer
    • 那么可以直接再終端使用 composer前綴 后面跟隨命令即可

02:package引用和版本

  • 項(xiàng)目下composer.json的寫(xiě)法, 如何引入包得寫(xiě)法
{
  "require":{
    "mustache/mustache":"2.9.0",//這里就是寫(xiě)入包名字與具體版本號(hào)
    //前面這個(gè)是vendor目錄的包得vendor name
    //然后第2個(gè)同名的就對(duì)應(yīng)包的名字,一般來(lái)說(shuō)是這樣寫(xiě)法
  }
}
  • 引入版本時(shí)候~號(hào)說(shuō)明
    • 例子:~2.8.1,那么范圍區(qū)間是2.8.1 to 2.9.0
    • 例子:~2.8,那么范圍區(qū)間就變成 2.8 to 3.0
    • ~號(hào):代表一個(gè)區(qū)間,0--9
  • 引入版本時(shí)候^號(hào)說(shuō)明
    • 例子:^2.8,那么代表是,2.8 到 3.0,也就是說(shuō)最大得版本號(hào)+1的點(diǎn)0版本,也就是2.8的2+1,.8變成.0
    • 例子:今天實(shí)踐了下,^號(hào)也可以理解成為安裝最新版本,下面例子就出現(xiàn)最新版的包了
{
  "require":{
    "mustache/mustache":"^2.7"
  }
}
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing mustache/mustache (v2.11.1) Loading from cache
Writing lock file
Generating autoload files
  • 可以直接再package網(wǎng)站進(jìn)行搜索,并且直接使用包得命令在終端直接下載
    • composer require <vendorname>/<name> 這樣就可以下載了,但下載的是最新版

03:理解composer的install和update

  • composer.json對(duì)應(yīng)的是composer update
  • composer.lock對(duì)應(yīng)的是composer install,
  • 注意:沒(méi)有l(wèi)ock文件composer就執(zhí)行json文件

04:composer自動(dòng)加載簡(jiǎn)單分析

  • 第一步:vendor/autoload.php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit23bbeae59271b037728c906bcb04be61::getLoader();
  • 第二步:查看autoload_real.php,目錄:vendor/composer/autoload_real.php
    • 通過(guò)getLoader方法里的一個(gè)foreach進(jìn)行注冊(cè)
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ( $map as $namespace => $path ) {
    $loader->set($namespace,$path);
}
  • 第三步:查看autoload_namespaces.php,目錄:vendor/composer/autoload_namespaces.php
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
    'Mustache' => array($vendorDir . '/mustache/mustache/src'),
    //src目錄下就按照以上的命名空間來(lái)操作
);
  • 第四步:查看依賴(lài)包目錄下得composer.json文件,看它通過(guò)那個(gè)命名空間規(guī)范來(lái)加載
    • 目錄:mustache/composer.json
    • 通過(guò)psr-0規(guī)范標(biāo)準(zhǔn)
"autoload": {
        "psr-0": { "Mustache": "src/" }
    }
  • 整條自動(dòng)加載流程:
    • 引入自動(dòng)加載文件 autoload.php
    • 自動(dòng)執(zhí)行autoload_real.php中得方法getLoader()
    • 方法中調(diào)用了autoload_namespaces.php進(jìn)行返回一個(gè)數(shù)組,到此自動(dòng)加載命名空間 基本結(jié)束
    • namespaces文件執(zhí)行的命名空間標(biāo)準(zhǔn)需要查看依賴(lài)包下得composer.json文件

05:Find A Package

  • 在packagist.org進(jìn)行搜索依賴(lài)包
  • 再終端可以使用命令 :composer serach <包名>
  • 顯示具體信息終端命令:composer --all <包名>

06:使用composer創(chuàng)建項(xiàng)目

  • 常見(jiàn)命令 :composer create-project
  • composer創(chuàng)建項(xiàng)目終端命令:composer create-project <原始名字>/<默認(rèn)名字> <別名> <版本號(hào)>

07: Understanding Require Dev

  • composer一個(gè)特點(diǎn):require-dev--本地開(kāi)發(fā)使用到得package
  • 如果下載一個(gè)項(xiàng)目,并不需要dev環(huán)境中得package可以使用:composer install --no-dev來(lái)操作
  • 所以上傳自己項(xiàng)目時(shí)候需要包含composer.lock這個(gè)文件

08:composer運(yùn)行shell命令

  • 網(wǎng)址:getcomposer.org/doc/articles/scripts.md下得command events看到具體命令
  • 只需要在composer.json文件加上scipts這樣的引導(dǎo)數(shù)組即可,下面例子參考:
"scripts":{
    "post-install-cmd":"echo 'hello'"
}

09:發(fā)布自己的Package

  • 第一步:登陸github,創(chuàng)建項(xiàng)目
  • 第二步:終端git clone 項(xiàng)目地址
  • 第三步:進(jìn)入項(xiàng)目目錄,創(chuàng)建composer.json文件:執(zhí)行命令composer init即可
  • 第四步:根據(jù)提示填寫(xiě)完畢穿件composer.json
    • package name <vendor>/<name>
    • description
    • author
    • minimum stability
    • package type
    • license
  • 第五步命令:git add .
  • 第六步命令:git commit -m"更改的描述"
  • 第七步命令:git push
  • 第八步:發(fā)布到packaglist.org,登陸自己的id
  • 第九步:點(diǎn)擊右上角submit,然后粘貼github連接后,再點(diǎn)擊check
  • 第十步:添加自動(dòng)更新webhook
    • 到 github項(xiàng)目,點(diǎn)擊settings
    • 點(diǎn)擊左邊導(dǎo)航webhooks & services
    • 點(diǎn)擊右邊的add services
    • 搜索package
    • 填寫(xiě)user token,token可以再packagist得profile找到
    • 粘貼token,然后addservice
    • 然后點(diǎn)擊生成出來(lái)的package出現(xiàn)畫(huà)面
    • 點(diǎn)擊test service,出現(xiàn)ok表示成功
  • 備注:綁定完成后,當(dāng)你git提交更新后就會(huì)同步到package那邊了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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