Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:composer:kezdes

< Composer

Composer kezdés

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
oktatas/web/composer/kezdes.txt · Utolsó módosítás: 2024/02/16 10:39 szerkesztette: admin