Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:composer

< Web

Composer

A Composerről

A Composer egy függőségkezelő eszköz, amelyet PHP programok számára találtak ki. A Composer php nyelven íródott, a terjesztése is egy .phar kiterjesztésű (PHP archív) fájlban történik.

A composer nem globális telepítésre lett kitalálva, de a Debian GNU/Linux például tartalmazza csomag formájában.

Telepítés

A Composer nem globális telepítésre lett kitalálva, de azért ez is megoldható.

Debian GNU/Linux alatt:

apt install composer

Ha szeretnék a legújabbat használni, Linux alatt tegyük a következőket:

curl https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

Az mv parancsot rendszergazdaként kell kiadni.

Windows alatt szerezzük be a Composer-Setup.exe telepítőt:

Ha kész a telepítése nézzük meg a composer verziónkat:

composer -V

Ezt ajánlott szimpla felhasználóként megtenni.

A composer frissítése:

composer selfupdate

Új projekt

Kezdjünk egy új projektet:

mkdir Projekt01
cd Porjekt01
curl -sS https://getcomposer.org/installer | php

A futtatáshoz szükség van parancssoros php-ra. Debian GNU/Linuxon ez a php7.0-cli segítségével érhető el. A telepített program valójában php7.0, de van egy rámutató php szimbolikus link.

./composer.phar init

Ekkor elindul a Composer config generator.

                                            
  Welcome to the Composer config generator  
                                            


This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [janos/projekt01]: 
Description []: teszt projekt
Author [Nagy János <janos@zold.and>, n to skip]: n
Minimum Stability []: 
Package Type (e.g. library, project, metapackage, composer-plugin) []: project
License []: MIT    

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no

{
    "name": "janos/projekt01",
    "description": "teszt projekt",
    "type": "project",
    "license": "MIT",
    "require": {}
}

Do you confirm generation [yes]? yes

A futtatás után létrejön egy composer.json fájl:

{
    "name": "andras/projekt01",
    "description": "teszt projekt",
    "type": "project",
    "license": "MIT",
    "require": {}
}

A composer.json fájlt ajánlott felvenni a verziókövetkő rendszerre:

git add composer.json
git commit -m "add composer.json"

Függőségek felvétele

./composer.phar require

Lehetséges kimenet:

Search for a package: jquery

Found 15 packages matching jquery

   [0] yajra/laravel-datatables-oracle 
   [1] querypath/querypath 
   [2] kartik-v/bootstrap-fileinput 
   [3] bootstrap-select/bootstrap-select Abandoned. Use snapappointments/bootstrap-select instead.
   [4] fullcalendar/fullcalendar 
   [5] vakata/jstree 
   [6] sunra/php-simple-html-dom-parser 
   [7] select2/select2 
   [8] paquettg/php-html-parser 
   [9] ivaynberg/select2 
  [10] datatables/datatables 
  [11] webcreate/jquery-ias 
  [12] robinherbots/jquery.inputmask 
  [13] robicch/jquery-gantt 
  [14] components/jquery 

Enter package # to add, or the complete package name if it is not listed:14
Enter the version constraint to require (or leave blank to use the latest version): 
Using version ^3.3 for components/jquery
Search for a package:
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing components/jquery (3.3.1): Loading from cache
Writing lock file
Generating autoload files

Létrejön egy vendor könyvtár és egy composer.lock. A teljesség igénye nélkül:

Projekt01
   |--vendor/
   |    |--components/
   |    |      |--jquery
   |    |            |--jquery.js
   |    |            |--jquery-min.js
   |    |--composer/
   |    |--autoload.php
   |--composer.json
   |--composer.lock
   |--composer.phar

A composer.lock fájlban rögzül, a letöltött függőség verziószáma. Így a projekt mindig ehhez a verzióhoz fog kötődni.

A composer.lock fájl is mehet a verziókezelő tárolójába:

git add composer.lock
git commit -m "add composer.lock"

Ha a monolog nevű PHP csomagot szeretnénk a projektünkhöz adni:

./composer.phar require
Search for a package: monolog
...

A composer.json állomány most a következő képen néz ki:

composer.json
{
    "name": "andras/projekt01",
    "description": "teszt projekt",
    "type": "project",
    "license": "MIT",
    "require": {
        "components/jquery": "^3.3",
        "monolog/monolog": "^1.24"
    }
}

Csomag fejlesztési időben

Most olyan függőséget szeretnénk telepíteni, amely csak fejlesztési időben része a projektnek:

./composer.phar require --dev

A composer.json most így néz ki:

composer.json
{
    "name": "andras/projekt01",
    "description": "teszt projekt",
    "type": "project",
     "license": "MIT",
    "require": {
        "components/jquery": "^3.3",
        "monolog/monolog": "^1.24"
    },
    "require-dev": {
        "phpunit/phpunit": "^6.5"
    }
}

Az autoloader újragenerálása

composer dumpautoload

vagy:

composer dump-autoload

Kézi szerkesztés

A .json állomány szerkeszthető egy szövegszerkesztővel is.

nano composer.json

Ilyenkor érdemes a szerkesztés után a fájl érvényességét megvizsgálni:

composer validate

A Composer csomagjai

A Composer csomagjai két részből állnak:

vendor csomagnév

A vendor sokszor megegyezik a csomagnévvel.

A Composer csomagjai között a következő helyen tallózhatunk:

oktatas/web/composer.txt · Utolsó módosítás: 2019/12/21 14:19 szerkesztette: admin