Tartalomjegyzék
Composer kezdés
- Szerző: Sallai András
- Copyright © 2019, Sallai András
- Szerkesztve: 2019, 2021, 2024
- Web: https://szit.hu
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ó.
Ha szeretnék a legújabbat használni, Linux alatt tegyük a következőket (két külön parancs):
curl https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
Az mv parancsot rendszergazdaként kell kiadni.
Debian GNU/Linux alatt csomagként is elérhető, de ajánlott az előző módszer:
apt install composer
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
Projekt helyben
A következő lépésre nincs szükség, ha globálisan telepítve van a composer és azt szeretnénk használni.
Kezdjünk egy új projektet, töltsük le a helyi könyvtárba a composert:
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.
Globális composer használata
mkdir projekt01 cd projekt01
Indítsuk a compozert:
compozer init
A generátor
A generátor – mint fentebb láttuk – a composer init vagy a ./composer.phar init paranccsal elindul.
A következőhöz hasonlót látunk:
./composer.phar init 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 Janos <janos@zold.lan>, n to skip]: Minimum Stability []: Package Type (e.g. library, project, metapackage, composer-plugin) []: n License []: MIT Define your dependencies. Would you like to define your dependencies (require) interactively [yes]? n Would you like to define your dev dependencies (require-dev) interactively [yes]? n Add PSR-4 autoload mapping? Maps namespace "Janos\Projekt01" to the entered relative path. [src/, n to skip]: { "name": "janos/projekt01", "description": "teszt projekt", "type": "n", "license": "MIT", "autoload": { "psr-4": { "Janos\\Projekt01\\": "src/" } }, "authors": [ { "name": "Nagy Janos", "email": "janos@zold.lan" } ], "require": {} } Do you confirm generation [yes]? y Generating autoload files Generated autoload files PSR-4 autoloading configured. Use "namespace Janos\Projekt01;" in src/ Include the Composer autoloader with: require 'vendor/autoload.php';
Elkészült váz
A futtatás után létrejön egy composer.json fájl:
- composer.json
{ "name": "janos/janos01", "description": "teszt projekt", "type": "n", "license": "MIT", "autoload": { "psr-4": { "Janos\\Projket01\\": "src/" } }, "authors": [ { "name": "Nagy Janos", "email": "janos@zold.lan" } ], "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
Szeretnénk a bootstrap-t használni.
./composer.phar require
Lehetséges kimenet:
./composer.phar require Search for a package: bootstrap Found 15 packages matching bootstrap [0] twbs/bootstrap [1] fortawesome/font-awesome [2] twitter/bootstrap [3] almasaeed2010/adminlte [4] twbs/bootstrap-sass [5] snapappointments/bootstrap-select [6] nette/bootstrap [7] kartik-v/bootstrap-star-rating [8] kartik-v/bootstrap-fileinput [9] eternicode/bootstrap-datepicker [10] bootstrap-select/bootstrap-select [11] sonata-project/doctrine-orm-admin-bundle [12] sonata-project/admin-bundle [13] orchid/platform [14] nette/forms Enter package # to add, or the complete package name if it is not listed: 6 Enter the version constraint to require (or leave blank to use the latest version): Using version ^3.1 for nette/bootstrap Search for a package: ./composer.json has been updated Running composer update nette/bootstrap Loading composer repositories with package information Updating dependencies Lock file operations: 8 installs, 0 updates, 0 removals - Locking nette/bootstrap (v3.1.1) - Locking nette/di (v3.0.9) - Locking nette/finder (v2.5.2) - Locking nette/neon (v3.2.2) - Locking nette/php-generator (v3.5.4) - Locking nette/robot-loader (v3.4.1) - Locking nette/schema (v1.2.1) - Locking nette/utils (v3.2.3) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 8 installs, 0 updates, 0 removals - Downloading nette/finder (v2.5.2) - Downloading nette/robot-loader (v3.4.1) - Downloading nette/php-generator (v3.5.4) - Downloading nette/neon (v3.2.2) - Downloading nette/di (v3.0.9) - Downloading nette/bootstrap (v3.1.1) - Installing nette/utils (v3.2.3): Extracting archive - Installing nette/schema (v1.2.1): Extracting archive - Installing nette/finder (v2.5.2): Extracting archive - Installing nette/robot-loader (v3.4.1): Extracting archive - Installing nette/php-generator (v3.5.4): Extracting archive - Installing nette/neon (v3.2.2): Extracting archive - Installing nette/di (v3.0.9): Extracting archive - Installing nette/bootstrap (v3.1.1): Extracting archive 3 package suggestions were added by new dependencies, use `composer suggest` to see details. 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/ | |--nette | | |--bootstrap/ | | |--di/ | | |--finder/ | | |--neon/ | | |--php-generator/ | | |--robot-loader/ | | |--schema/ | | `--utils/ | `--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": "janos/projekt01", "description": "teszt projekt", "type": "n", "license": "MIT", "autoload": { "psr-4": { "Janos\\Projekt01\\": "src/" } }, "authors": [ { "name": "Nagy Janos", "email": "janos@zold.lan" } ], "require": { "nette/bootstrap": "^3.1", "monolog/monolog": "^2.3" } }
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
Ha telepítjük a phpunit függőséget, a composer.json most így néz ki:
- composer.json
{ "name": "janos/projekt01", "description": "teszt projekt", "type": "n", "license": "MIT", "autoload": { "psr-4": { "Janos\\Projekt01\\": "src/" } }, "authors": [ { "name": "Nagy Janos", "email": "janos@zold.lan" } ], "require": { "nette/bootstrap": "^3.1", "monolog/monolog": "^2.3" }, "require-dev": { "phpunit/phpunit": "^9.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
composer parancsok
A composer.json fájl generálása, interaktív módon.
composer init
Függőség törlése
composer remove
Például:
composer remove components/jquery
A composer.json fájl ellenőrzése:
composer diagnose
Ez a parancs jóval több ellenőrzést végez mint a validate.
Függőségek telepítése a composer.lock alapján:
composer install
Függőségek telepítése a composer.json fájl alapján. Generálja vagy frissíti a composer.lock fájlt.
composer update
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:
Ha egy csomagot látunk a packagist.org weboldalon, de a ./composer.phar require futtatásakor megjelenő kereső nem találja, meg csak írjuk be a vendor és a csomagnevet, a composer telepíti. Például:
components/jquery
phpoffice/phpspreadsheet