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.json en composer.lock
  • Dependency resolution - Handelt automatisch package dependencies af
  • Eenvoudige updates - Eén commando om te updaten, met conflict detectie
  • Rollback mogelijkheid - composer.lock laat 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 update uit, 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 update uit 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:

  1. Na aankoop ontvangt u repository credentials via e-mail
  2. 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
  1. Voeg authenticatie toe aan auth.json:
{
    "http-basic": {
        "packages.magmodules.eu": {
            "username": "fake-7f3a9c2e8b1d4f6a0e5c8b2d9f4a7c1e",
            "password": "fake-2d8f4b6a1c9e3d7f5b0a8c4e6d2f9a3b"
        }
    }
}
  1. 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:

  1. Haal keys op van marketplace.magento.com → My Profile → Access Keys
  2. Maak of bewerk auth.json in 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:

Support:

Artikel bijgewerkt:
star star star star star
star star star star star
Alexandru-Manuel Carabus
Magmodules sets the bar for Magento module quality and support—we check their catalog first for client feature requests, and they’re our first choice for licenses.
Google 11 Nov 2025
star star star star star
star star star star star
Matt Austin
Possibly the fastest support response times of any Magento Extension vendor. Great extensions too!
Google 09 Sep 2025
star star star star star
star star star star star
Jan Privé
Dankzij de heldere uitleg en snelle reactie van Magmodules kon mijn vraag, en dus mijn Magento-probleem, binnen enkele uren worden beantwoord. Doeltreffend, zonder moeilijke termen, gewoon zo als het zou moeten zijn.... Bedankt!
Google 05 Sep 2025
star star star star star
star star star star star
Denis Metzler
To evaluate a provider, it is not enough to consider only the product offered, but also its after-sales service, such as support and troubleshooting. Magmodules has been extremely satisfactory at all levels on multiple occasions and sets the bar at the top when comparing the competition.
Google 02 Sep 2025
star star star star star
star star star star star
Bleijenberg winkelinrichting en materialen
Goed bereikbaar, reageren snel en denken oplossingsgericht. Een aanrader.
Google 30 Jul 2025
star star star star star
star star star star star
Patrick Verduijn
Magmodules biedt plugins aan die van hoge kwaliteit zijn tegen een goede prijs, waar dit bedrijf in uitblinkt is de bereidheid om de zeldzame feedback & problemen met de plugins te willen onderzoeken, mee te willen denken in het debuggen van problemen en goede oplossingen toe te passen. In mijn decennium ervaring met Magento & 3th parties is Magmodules absoluut een uniqum binnen de markt.
Google 25 Jul 2025
star star star star star
star star star star star
Erik de Groot
Magemodules heeft hele sterke Magento extensies en een proactieve support. Al jaren heel erg tevreden over jullie service en producten!
Google 18 Jul 2025
star star star star star
star star star star star
René Zeuner
We are using the Mollie Magento extension from Magmodules. It works excellently without flaws. Very fast, competent and friendly support. Thanks!
Google 30 Jun 2025
star star star star star
star star star star star
R. U.
Erg goed team, reageren snel en duidelijk en hebben met toegang tot onze database erg goed geholpen (eigenlijk een gratis customization).
Google 18 Jun 2025
star star star star star
star star star star star
Hugo de Groot
Uitstekende support! Wij gebruiken o.a. de Rich Snippets Suite extensie voor onze Magento 2 webshop (Hyvä) en hadden een specifieke vraag over structured data op PLP-pagina’s. Binnen no-time kregen we een inhoudelijk en duidelijk antwoord. Zeer prettig contact en goed onderbouwde uitleg. Absoluut een betrouwbare partner voor Magento-extensies!
Google 13 Jun 2025