Composer Handleiding voor Magento 2
Composer is de dependency manager die Magento 2 aandrijft. Begrijpen hoe het werkt maakt het installeren, updaten en troubleshooten van extensies veel eenvoudiger. Deze handleiding behandelt alles van basis tot geavanceerd gebruik.
Waarom Composer?
De Oude Manier (Magento 1)
In Magento 1 werden extensies geïnstalleerd door bestanden in de codebase te kopiëren. Dit veroorzaakte:
- Versie conflicten - Geen manier om bij te houden welke versie geïnstalleerd was
- Update nachtmerries - Handmatige bestandsvervanging, hopend dat niets breekt
- Dependency hell - Extensies die met elkaar conflicteren
- Geen rollback - Kapotte installatie? Succes met terugdraaien
- Beveiligingsrisico's - Geen verificatie van package integriteit
De Composer Manier
Composer lost dit allemaal op:
- Versie management - Exacte versies bijgehouden in
composer.jsonencomposer.lock - Dependency resolution - Handelt automatisch package dependencies af
- Eenvoudige updates - Eén commando om te updaten, met conflict detectie
- Rollback mogelijkheid -
composer.locklaat je exacte vorige staat herstellen - Package integriteit - Checksums verifiëren dat packages niet zijn gemanipuleerd
- Reproduceerbare builds - Zelfde
composer.lock= identieke installatie overal
Praktische Voordelen
Scenario: U moet een extensie updaten die een nieuwere versie van een library nodig heeft die een andere extensie ook gebruikt.
- Zonder Composer: Uren handmatig controleren, potentiële conflicten, kapotte winkel
- Met Composer: Voer
composer updateuit, Composer lost het op of vertelt precies wat conflicteert
Composer Basis
Belangrijke Bestanden
composer.json Het dependency manifest van uw project. Bevat:
- Vereiste packages en versie constraints
- Repositories (waar packages te vinden zijn)
- Autoload configuratie
- Scripts en hooks
composer.lock Snapshot van exact geïnstalleerde versies. Dit bestand:
- Zorgt dat iedereen identieke versies krijgt
- Moet worden gecommit naar version control
- Is de bron van waarheid voor wat daadwerkelijk geïnstalleerd is
vendor/ Waar Composer packages installeert. Bewerk nooit bestanden hier - ze worden overschreven.
Essentiële Commando's
# Installeer alle dependencies van composer.lock
composer install
# Update packages naar nieuwste versies binnen constraints
composer update
# Voeg een nieuw package toe
composer require vendor/package
# Verwijder een package
composer remove vendor/package
# Toon geïnstalleerde packages
composer show
# Leeg Composer cache
composer clear-cache
Beschikbare Versies Controleren
Alle Versies van een Package Bekijken
composer show vendor/package-name --all
Voorbeeld:
composer show magmodules/magento2-channable --all
Output toont alle beschikbare versies:
versions : * 1.15.0, 1.14.2, 1.14.1, 1.14.0, 1.13.0, ...
De * geeft uw huidige geïnstalleerde versie aan.
Beschikbare Updates Bekijken
# Alle packages met beschikbare updates
composer outdated
# Specifieke vendor
composer outdated magmodules/*
# Toon alleen minor en patch updates (veilige updates)
composer outdated --minor-only
Versie Constraints Controleren
Bekijk welke versie zou worden geïnstalleerd:
composer show vendor/package-name --available
Waarom Kan Ik een Specifieke Versie Niet Installeren?
composer why-not vendor/package-name 2.0.0
Dit toont welke packages of constraints die versie blokkeren.
Voorbeeld:
composer why-not magmodules/magento2-channable 2.0.0
Output kan tonen:
magento/product-community-edition 2.4.6 requires magmodules/magento2-channable (^1.0)
Repository Configuratie
Geconfigureerde Repositories Bekijken
composer config repositories --list
Of controleer composer.json direct:
grep -A 20 '"repositories"' composer.json
Veelvoorkomende Repository Types
Packagist (standaard) Publieke repository, automatisch ingeschakeld:
{
"repositories": {
"packagist.org": {
"type": "composer",
"url": "https://packagist.org"
}
}
}
Magento Marketplace Voor Adobe Commerce en marketplace extensies:
{
"repositories": {
"magento": {
"type": "composer",
"url": "https://repo.magento.com/"
}
}
}
Privé Repository (Satis/Packagist) Voor privé packages:
{
"repositories": {
"private": {
"type": "composer",
"url": "https://packages.yourcompany.com"
}
}
}
VCS Repository Direct vanuit Git:
{
"repositories": {
"custom-module": {
"type": "vcs",
"url": "https://github.com/vendor/package.git"
}
}
}
Path Repository Lokale development:
{
"repositories": {
"local-module": {
"type": "path",
"url": "../my-local-module"
}
}
}
Repository Toevoegen via CLI
composer config repositories.repo-name composer https://packages.example.com
Repository Authenticatie Controleren
composer config --global --list | grep http-basic
Authenticatie wordt opgeslagen in auth.json (globaal of project niveau).
Versie Constraints Uitgelegd
Begrijpen van versie constraints voorkomt onverwachte updates.
Exacte Versie
"vendor/package": "1.2.3"
Alleen versie 1.2.3, niets anders.
Wildcard
"vendor/package": "1.2.*"
Elke versie die begint met 1.2 (1.2.0, 1.2.1, 1.2.99).
Range
"vendor/package": ">=1.2.0 <2.0.0"
Versie 1.2.0 of hoger, maar onder 2.0.0.
Tilde (~) - Volgende Significante Release
"vendor/package": "~1.2.3"
Equivalent aan >=1.2.3 <1.3.0. Staat alleen patch updates toe.
"vendor/package": "~1.2"
Equivalent aan >=1.2.0 <2.0.0. Staat minor en patch updates toe.
Caret (^) - Semver Compatibel
"vendor/package": "^1.2.3"
Equivalent aan >=1.2.3 <2.0.0. Staat alle non-breaking updates toe (aannemend semver).
Dit is de meest voorkomende en aanbevolen constraint.
Stability Flags
"vendor/package": "1.0.0@beta"
"vendor/package": "dev-main"
Gebruik voor pre-release of development versies.
Extensies Installeren
Magmodules Repository
Wanneer u een extensie koopt bij Magmodules, krijgt u toegang tot onze privé Composer repository. Dit is waarom Composer belangrijk is voor onze klanten:
- Directe toegang - Extensies zijn direct beschikbaar na aankoop
- Eenvoudige updates - Voer
composer updateuit voor de nieuwste versie - Licentie validatie - Uw domein wordt automatisch geautoriseerd
- Alle aankopen op één plek - Eén repository voor al uw Magmodules extensies
Toegang instellen:
- Na aankoop ontvangt u repository credentials via e-mail
- Voeg de Magmodules repository toe aan uw
composer.json:
{
"repositories": {
"magmodules": {
"type": "composer",
"url": "https://packages.magmodules.eu"
}
}
}
Of via CLI:
composer config repositories.magmodules composer https://packages.magmodules.eu
- Voeg authenticatie toe aan
auth.json:
{
"http-basic": {
"packages.magmodules.eu": {
"username": "fake-7f3a9c2e8b1d4f6a0e5c8b2d9f4a7c1e",
"password": "fake-2d8f4b6a1c9e3d7f5b0a8c4e6d2f9a3b"
}
}
}
- Installeer de extensie:
composer require magmodules/magento2-channable
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento setup:static-content:deploy
bin/magento cache:flush
Uw beschikbare packages controleren:
Eenmaal geauthenticeerd, bekijk alle packages waar u toegang toe heeft:
composer search magmodules
Waarom niet gewoon een ZIP downloaden?
Wij gebruiken uitsluitend Composer omdat:
- Versie tracking - Weet altijd welke versie u draait
- Dependency management - Extensies kunnen specifieke library versies vereisen
- Veilige updates - Composer controleert compatibiliteit voor het updaten
- Consistente deploys - Zelfde versie op staging en productie via
composer.lock - Geen handmatig bestandsbeheer - Geen risico op incomplete uploads of permissie problemen
Van Packagist (Publiek)
Sommige Magmodules extensies zijn ook beschikbaar op de publieke Packagist repository:
composer require magmodules/magento2-googleshopping
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento setup:static-content:deploy
bin/magento cache:flush
Van Magento Marketplace
Stel eerst authenticatie in:
- Haal keys op van marketplace.magento.com → My Profile → Access Keys
- Maak of bewerk
auth.jsonin Magento root:
{
"http-basic": {
"repo.magento.com": {
"username": "your-public-key",
"password": "your-private-key"
}
}
}
Of wanneer gevraagd tijdens installatie, voer public key in als username, private key als password.
Van Privé Repository
# Voeg repository eerst toe
composer config repositories.private composer https://packages.example.com
# Require dan het package
composer require vendor/private-package
Specifieke Versie
composer require vendor/package:1.2.3
Development Versie
composer require vendor/package:dev-main
Probleemoplossing
Geheugen Fouten
php -d memory_limit=-1 /usr/local/bin/composer update
Of stel in via php.ini:
memory_limit = 4G
Trage Downloads
Gebruik parallelle downloads:
composer config --global repo.packagist.org composer https://packagist.org
composer global require hirak/prestissimo
Of met Composer 2 (ingebouwde parallelle downloads):
composer self-update --2
Lock File Niet Gesynchroniseerd
Warning: The lock file is not up to date with the latest changes in composer.json
Oplossing:
composer update --lock
Class Not Found Na Installatie
Regenereer autoloader:
composer dump-autoload
bin/magento setup:di:compile
Package Niet Gevonden
Controleer of repository is geconfigureerd:
composer config repositories --list
Controleer package naam spelling:
composer search package-name
Dependency Conflicten
Bekijk wat het conflict veroorzaakt:
composer why vendor/conflicting-package
composer why-not vendor/desired-package 2.0.0
Alles Wissen en Opnieuw Beginnen
rm -rf vendor/ generated/
composer clear-cache
composer install
Best Practices
Commit Altijd composer.lock
Dit zorgt dat alle omgevingen identieke packages hebben:
git add composer.json composer.lock
git commit -m "Add new extension"
Gebruik composer install in Productie
# Development: staat updates toe
composer update
# Productie: gebruikt exacte versies van lock file
composer install --no-dev --optimize-autoloader
Review Voor Updaten
# Bekijk wat zou veranderen
composer update --dry-run
# Voer dan daadwerkelijk update uit
composer update
Houd Composer Up-to-Date
composer self-update
Bewerk Geen vendor/ Bestanden
Wijzigingen gaan verloren bij volgende composer install of update. In plaats daarvan:
- Maak patches (met
cweagans/composer-patches) - Override classes via Magento's preference/plugin systeem
- Fork het package als uitgebreide wijzigingen nodig zijn
Gebruik Exacte Versies voor Kritieke Packages
Voor packages waar onverwachte updates dingen kunnen breken:
"vendor/critical-package": "1.2.3"
Documenteer Privé Repositories
In de README van uw project:
## Vereiste Repositories
Dit project vereist toegang tot:
- repo.magento.com (Magento Marketplace credentials)
- packages.ourcompany.com (interne packages)
Neem contact op met DevOps voor authenticatie credentials.
Handige Aliassen
Voeg toe aan uw .bashrc of .zshrc:
alias ci="composer install"
alias cu="composer update"
alias cr="composer require"
alias cs="composer show"
alias co="composer outdated"
alias ccc="composer clear-cache"
Meer Hulp Nodig?
Documentatie:
- Alle Help Artikelen - Compleet documentatie overzicht
Support:
- Contact Opnemen - Hulp van ons team