Composer versies, hoe werken ze?
We hebben al eerder geschreven over Semantic Versioning. Als iedereen heel secuur Semantic Versioning zou toepassen hadden we niet zoveel notaties nodig voor composer versies. We kunnen dan volstaan met een notatie als ^1.0
. Maar wat betekenen alle tekens?
Hieronder staan de meest gebruikte notaties:
- Exacte versie notatie: Dit is de meest strikte notatie en wordt gebruikt om een specifieke versie van een package te installeren. Bijvoorbeeld:
phpunit/phpunit: 9.5.10
. - Patroon notatie: Dit is een vrij strikte notatie en wordt gebruikt om alleen patches vrij te laten. Bijvoorbeeld
phpunit/phpunit: 9.5.*
- Range notatie: Dit is een flexibele notatie die gebruikt wordt om een range van versies te installeren. Bijvoorbeeld:
phpunit/phpunit: ^9.5
. - Wildcard notatie: Dit is de meest flexibele notatie en wordt gebruikt om alle versies te installeren. Bijvoorbeeld:
phpunit/phpunit: *
.
Je kunt deze notaties gebruiken in zijn project door ze te specificeren in het composer.json
bestand. Hieronder staat een voorbeeld van hoe je de verschillende notaties kunt gebruiken in Laravel projecten:
{
"require": {
"php": "^7.4",
"laravel/framework": "^8.0",
"phpunit/phpunit": "^9.5"
}
}
In dit voorbeeld wordt er gebruik gemaakt van de range notatie om de Laravel framework package te installeren. Dit betekent dat alle versies vanaf 8.0 geïnstalleerd kunnen worden, maar niet hoger dan 9.x.x.
Er zijn ook versie notaties mogelijk met ||
, >
en <
. Deze notaties worden gebruikt om een range van versies te specificeren. Hieronder staan enkele voorbeelden:
-
>1.0
: Dit betekent dat alle versies hoger dan 1.0 geïnstalleerd kunnen worden. -
<2.0
: Dit betekent dat alle versies lager dan 2.0 geïnstalleerd kunnen worden. -
>=1.0
: Dit betekent dat alle versies vanaf 1.0 geïnstalleerd kunnen worden. -
<=2.0
: Dit betekent dat alle versies tot en met 2.0 geïnstalleerd kunnen worden. -
||
: Dit betekent dat een package geïnstalleerd kan worden als het voldoet aan één van de opgegeven versie ranges. Bijvoorbeeld:phpunit/phpunit: 9.5 || 10.0
.Je kunt deze notaties gebruiken in zijn project door ze te specificeren in het
composer.json
bestand. Hieronder staat een voorbeeld van hoe je de verschillende notaties kunt gebruiken in Laravel projecten:
{
"require": {
"php": "^7.4",
"laravel/framework": ">8.0 <9.0",
"phpunit/phpunit": ">=9.5"
}
}
In dit voorbeeld wordt er gebruik gemaakt van de >
en <
notaties om de Laravel framework package te installeren. Dit betekent dat alle versies hoger dan 8.0 en lager dan 9.0 geïnstalleerd kunnen worden.
Verder zijn er ook nog andere mogelijkheden met bijvoorbeeld -
, maar die worden bijna nooit gebruikt.
Onze AI heeft deze bronnen gebruikt:
- Versions and constraints - Composer. https://getcomposer.org/doc/articles/versions.md.
- composer php - Laravel PHP Version - Stack Overflow. https://stackoverflow.com/questions/72456686/laravel-php-version.
- composer keeps installing an old version of laravel. https://stackoverflow.com/questions/52740581/composer-keeps-installing-an-old-version-of-laravel.
- composer how to define a version for a package - Stack Overflow. https://stackoverflow.com/questions/31559587/composer-how-to-define-a-version-for-a-package.
- notation software - music software for everyday musicians. https://www.notation.com/.