In der Laravel- Welt spielen Pakete eine wichtige Rolle. Wie wichtig ist diese Rolle und welche Pakete gibt es? Um dies herauszufinden, haben wir Daten aus der Packagist.org- API entnommen und Laravel-Pakete herausgefiltert.
Wie haben wir Laravel-Pakete definiert? Verwenden einer Datei
composer.json
. Wir behandeln Tasche Laravel Ökosystem, wenn die Felder name
, description
, keywords
oder type
eine Zeichenfolge enthalten laravel
. Außerdem wurde ein Paket als Laravel-Paket definiert, wenn es laravel/framework
eine Teilbaumkomponente illuminate/*
als Abhängigkeit enthielt . Schließlich war der Schlüssel laravel
auf diesem Gebiet extra
auch ein Hinweis auf die Zugehörigkeit des Pakets zum Laravel-Framework-Ökosystem.
Diese Kriterien garantieren zwar nicht, dass es sich bei dem Paket ausschließlich um Laravel handelt, sie weisen jedoch darauf hin, dass das Paket unter Berücksichtigung von Laravel erstellt wurde.
Die beliebtesten Pakete
Wenn Sie sich die Liste der am häufigsten heruntergeladenen Pakete ansehen , werden die Ergebnisse nicht gefallen: Dies sind Basispakete und Pakete mit einer Vielzahl von Verwendungsmöglichkeiten außerhalb von Laravel-Projekten.
| Package | Monthly downloads | |-------------------------|-------------------| | nesbot/carbon | 4084214 | | laravel/framework | 2987907 | | laravel/tinker | 2455355 | | fideloper/proxy | 2376631 | | nunomaduro/collision | 1510258 | | intervention/image | 1099989 | | facade/ignition | 966800 | | facade/flare-client-php | 934651 | | composer/installers | 803222 | | illuminate/support | 756189 |
Vielleicht kann eine interessantere Bewertung erhalten werden, indem diese „falsch positiven“ Ergebnisse eliminiert werden. Wir haben die 30 beliebtesten Pakete, die für Laravel-Projekte erstellt und gezielt installiert wurden, manuell gefiltert. Wir haben auch die Zielbereiche für diese Pakete beschrieben.
| | Package | Monthly | Total | Purpose | |----|------------------------------------|---------|----------|---------| | 1 | maatwebsite/excel | 680466 | 17769696 | port | | 2 | laravelcollective/html | 678048 | 21785383 | helper | | 3 | barryvdh/laravel-ide-helper | 644297 | 18918427 | dev | | 4 | barryvdh/laravel-debugbar | 625080 | 19404288 | dev | | 5 | laravel/passport | 552633 | 10099903 | auth | | 6 | beyondcode/laravel-dump-server | 530901 | 11035024 | dev | | 7 | sentry/sentry-laravel | 455879 | 8440070 | integ | | 8 | laravel/ui | 433850 | 1599042 | auth | | 9 | barryvdh/laravel-cors | 400920 | 10823255 | helper | | 10 | laravel/socialite | 394471 | 10166784 | auth | | 11 | laravel/slack-notification-channel | 385921 | 7172937 | integ | | 12 | tymon/jwt-auth | 359693 | 9107092 | auth | | 13 | barryvdh/laravel-dompdf | 349572 | 8006731 | port | | 14 | laravel/helpers | 337956 | 1692185 | helper | | 15 | spatie/laravel-permission | 308453 | 5224001 | auth | | 16 | laravel/horizon | 304864 | 4599598 | integ | | 17 | laravel/dusk | 256261 | 4542482 | dev | | 18 | laravel/nexmo-notification-channel | 238192 | 6080124 | integ | | 19 | laravel/telescope | 227966 | 2289576 | dev | | 20 | bugsnag/bugsnag-laravel | 223167 | 6544766 | dev | | 21 | yajra/laravel-datatables-oracle | 212985 | 5644721 | integ | | 22 | aws/aws-sdk-php-laravel | 212260 | 7070121 | integ | | 23 | orchestra/testbench-core | 199780 | 1864659 | dev | | 24 | orchestra/testbench | 195269 | 2279889 | dev | | 25 | symplify/package-builder | 193661 | 1484783 | dev | | 26 | laravel/scout | 177270 | 3391042 | integ | | 27 | barryvdh/laravel-snappy | 156741 | 3651684 | port | | 28 | webpatser/laravel-uuid | 153883 | 4774711 | helper | | 29 | spatie/laravel-medialibrary | 149290 | 2293823 | helper | | 30 | spatie/laravel-activitylog | 148932 | 2387978 | dev |
Erklärung der Zielgebiete:
auth
- Authentifizierung und Autorisierungdev
- Entwicklungs- und Debugging-Toolshelper
- Unterstützung und Vereinfachung der Arbeitinteg
- Integration mit anderen Dienstenport
- Import und / oder Export in verschiedenen Formaten
Den ersten Platz in dieser Liste belegen Entwicklungstools, gefolgt von Integration.
Wir haben erwartet, dass ganz oben weitere Spatie- Pakete zu sehen sind , aber es stellte sich heraus, dass maatwebsite / excel und tools von Barry vd. Heuvels werden häufiger verwendet.
Lieferantenübersicht
Insgesamt haben wir 47.337 Laravel-Pakete von 23.167 verschiedenen Entwicklern identifiziert. Das Ergebnis ist eine ziemlich gleichmäßige Verteilung mit vielen kleinen Teilnehmern.
Die Hälfte der Pakete (23.668) wurde von 3927 Kernentwicklern erstellt. Dies ist deutlich mehr, als wenn hier das Preisgesetz in Kraft gewesen wäre . 15.042 Entwickler haben jeweils nur ein Paket veröffentlicht.
Wenn Sie die Entwickler nach der Anzahl der Pakete sortieren, sehen Sie fast unbekannte Namen. Hier sind die leistungsstärksten Paketentwickler mit den kumulativen Downloads ihrer jeweiligen Pakete.
| | Developer | Count | Daily | Monthly | Total | |----|-------------------------------|-------|-------|---------|----------| | 1 | socialiteproviders | 159 | 10645 | 256409 | 5826725 | | 2 | bantenprov | 132 | 0 | 5 | 3160 | | 3 | spatie | 124 | 89124 | 2746665 | 43095685 | | 4 | railken | 119 | 0 | 11082 | 313129 | | 5 | laravel-enso | 95 | 1519 | 29456 | 879635 | | 6 | amethyst | 92 | 1232 | 8118 | 100819 | | 7 | faustbrian | 85 | 152 | 2639 | 52698 | | 8 | artisanry | 78 | 129 | 1190 | 11938 | | 9 | sukohi | 75 | 58 | 1773 | 53805 | | 10 | anomaly | 59 | 198 | 6095 | 974489 | | 11 | sanatorium | 59 | 0 | 0 | 20 | | 12 | laravel-notification-channels | 54 | 3107 | 99536 | 1621420 | | 13 | hnhdigital-os | 54 | 38 | 1571 | 20304 | | 14 | arcanedev | 53 | 3875 | 127702 | 3293360 | | 15 | inetstudio | 53 | 241 | 3870 | 77009 | | 16 | larakit | 49 | 1 | 410 | 18540 | | 17 | orchestra | 48 | 21569 | 544696 | 7606461 | | 18 | abuseio | 45 | 1 | 951 | 78289 | | 19 | genealabs | 43 | 3219 | 87234 | 1215349 | | 20 | smorken | 41 | 36 | 985 | 14277 |
Es stellt sich heraus, dass es einige Entwickler gibt, die eine große Anzahl von Komponenten erstellen und diese ohne viel Werbung bereitstellen. Um bekanntere Namen zu sehen und die Nummern für sie zu vergleichen, sortieren wir die Liste nach der Gesamtzahl der Downloads.
| | Developer | Count | Daily | Monthly | Total | |----|-------------------|-------|--------|---------|-----------| | 1 | laravel | 39 | 364375 | 9832728 | 225867755 | | 2 | illuminate | 33 | 244509 | 7210832 | 197044965 | | 3 | nesbot | 1 | 179106 | 4084214 | 112631927 | | 4 | barryvdh | 19 | 82289 | 2246578 | 63115434 | | 5 | spatie | 124 | 89124 | 2746665 | 43095685 | | 6 | fideloper | 3 | 100748 | 2376631 | 41313378 | | 7 | intervention | 7 | 46259 | 1260102 | 33891504 | | 8 | composer | 1 | 10603 | 803222 | 26065561 | | 9 | league | 7 | 18996 | 731742 | 24433630 | | 10 | nunomaduro | 19 | 68333 | 1734552 | 23394056 | | 11 | laravelcollective | 6 | 32460 | 710099 | 23285426 | | 12 | maatwebsite | 6 | 27955 | 717140 | 18258360 | | 13 | cocur | 1 | 19246 | 491761 | 16609476 | | 14 | jenssegers | 15 | 24263 | 544700 | 16468485 | | 15 | beyondcode | 29 | 14221 | 677724 | 12648233 | | 16 | laracasts | 11 | 10352 | 317232 | 12119703 | | 17 | graham-campbell | 36 | 11092 | 291114 | 10184667 | | 18 | facade | 5 | 67794 | 1915933 | 9860242 | | 19 | yajra | 19 | 17794 | 446360 | 9792222 | | 20 | tymon | 2 | 11437 | 359693 | 9107116 |
Wenn Sie die Liste stattdessen nach monatlichen Downloads sortieren, unterscheidet sich das Ergebnis geringfügig.
| | Developer | Count | Daily | Monthly | Total | |----|-------------------|-------|--------|---------|-----------| | 1 | laravel | 39 | 364375 | 9832728 | 225867755 | | 2 | illuminate | 33 | 244509 | 7210832 | 197044965 | | 3 | nesbot | 1 | 179106 | 4084214 | 112631927 | | 4 | spatie | 124 | 89124 | 2746665 | 43095685 | | 5 | fideloper | 3 | 100748 | 2376631 | 41313378 | | 6 | barryvdh | 19 | 82289 | 2246578 | 63115434 | | 7 | facade | 5 | 67794 | 1915933 | 9860242 | | 8 | nunomaduro | 19 | 68333 | 1734552 | 23394056 | | 9 | intervention | 7 | 46259 | 1260102 | 33891504 | | 10 | composer | 1 | 10603 | 803222 | 26065561 |
Diese Verteilungen überwiegen deutlich die Spitze. Unabhängig davon, ob es sich um tägliche, monatliche oder vollständige Downloads handelt, stammt mehr als die Hälfte aller Downloads von den Top-6-Paketentwicklern. Zum Beispiel werden 2,85 Millionen von 5,65 Millionen täglichen Downloads von Laravel , Illuminate , Nesbot , Spatie , Fideloper und Barryvdh geteilt .
Sie können so etwas wie den Hirsch-Index verwenden , um die Popularität von Entwicklern zu messen. Es gibt nur 317 Entwickler mit jeweils mindestens 317 Downloads pro Tag. 1.118 Anbieter haben 1.118 oder mehr Downloads pro Monat oder 3003 für die Gesamtzahl der Downloads.
Lizenzoptionen
Unsere Lizenzübersicht ist nicht besonders genau, da unterschiedliche Zeichenfolgen verwendet werden, um dieselbe Lizenz zu kennzeichnen. Zum Beispiel
gpl-3.0
, gpl 3.0
, gpl3
, gplv3
, auch gnu general public license version 3
, und viele andere Optionen weisen auf die gleiche Lizenz.
Glücklicherweise sind die wichtigsten Schlussfolgerungen klar, da die Zeile
mit
die entsprechende Lizenz für 37.502 Laravel-Pakete angibt. 6304-Pakete sind nicht lizenziert, mehr als 500 Pakete werden unter Apache 2.0- und GPL 3.0-Lizenzen verteilt. Es gibt auch mehrere hundert Pakete mit BSD 2-, BSD 3- und GPL 2.0-Lizenzen.
79% der Laravel-Pakete sind MIT-lizenziert, 14% sind nicht lizenziert und jede der verbleibenden Lizenzen wird in 2% oder weniger Paketen verwendet. Vielleicht ist dies teilweise der Einfluss des Laravel-Frameworks selbst, das unter der MIT-Lizenz vertrieben wird. Wenn Sie sich alle Pakete ansehen, ist die Popularität der MIT-Lizenz deutlich geringer - 60%.
Jenseits von Laravel
Die Anzahl der Pakete für verschiedene Frameworks zeigt, dass die Community an der Entwicklung der Tools des Frameworks beteiligt ist und inwieweit sie bereit ist, ihren Code mit anderen Mitwirkenden zu teilen. Wir haben auch die Anzahl der abgelegten Pakete und ihren Prozentsatz gezählt, um festzustellen, welche Communities florieren und welche hinterherhinken.
| | Framework | Packages | Abandoned | Aband. % | |----|---------------|----------|-----------|----------| | 1 | Laravel | 47337 | 2618 | 5,5% | | 2 | Symfony | 39428 | 3362 | 8,5% | | 3 | Yii | 15354 | 552 | 3,6% | | 4 | ZendFramework | 7459 | 790 | 10,6% | | 5 | WordPress | 6446 | 480 | 7,4% | | 6 | Nette | 3460 | 342 | 9,9% | | 7 | CakePHP | 2607 | 173 | 6,6% | | 8 | Slim | 1411 | 64 | 4,5% | | 9 | Laminas | 811 | 17 | 2,0% | | 10 | Phalcon | 726 | 40 | 5,5% | | 11 | Codeigniter | 663 | 91 | 13,7% | | 12 | Aura | 450 | 32 | 7,1% | | 13 | Kohana | 341 | 43 | 12,6% | | 14 | FuelPHP | 148 | 12 | 8,1% | | 15 | PHPixie | 73 | 1 | 1,4% |
Andererseits spiegelt die Gesamtzahl der Downloads die Bedeutung von Paketen für die Entwicklung von Standardprojekten wider.
Bitte beachten Sie, dass bei der Berechnung dieser Anzahl von Downloads alle mit dem Framework verbundenen Pakete berücksichtigt werden, nicht nur die grundlegenden (wie bei der Berechnung der Anzahl der oben genannten Pakete). Hier finden Sie die Kriterien für die Klassifizierung eines Pakets als zu einem bestimmten Framework gehörend . Ein Paket kann zu Ökosystemen mehrerer Frameworks gehören.
| | Framework | Monthly | Total | |----|---------------|-----------|------------| | 1 | Symfony | 366029776 | 8945189030 | | 2 | Laravel | 56523199 | 1315681505 | | 3 | ZendFramework | 50789083 | 1460984224 | | 4 | Nette | 14137793 | 295710951 | | 5 | Laminas | 9540512 | 134960483 | | 6 | Yii | 5662063 | 200378585 | | 7 | CakePHP | 4067892 | 112091915 | | 8 | WordPress | 3871828 | 96962490 | | 9 | Slim | 2123558 | 46196613 | | 10 | FuelPHP | 930846 | 32043126 | | 11 | Codeigniter | 919926 | 30474042 | | 12 | Kohana | 912106 | 31918403 | | 13 | Aura | 467771 | 18063339 | | 14 | Phalcon | 137762 | 4322810 | | 15 | PHPixie | 5353 | 572100 |
Es ist zu beachten, dass die führende Position von Symfony nicht bedeutet, dass die meisten Pakete zur Verwendung in Projekten heruntergeladen werden, die auf diesem Framework basieren. Einige der wichtigsten Symfony-Pakete werden von Laravel verwendet, und viele andere Symfony-Pakete können auch in Laravel-Projekten verwendet werden.
Insbesondere haben Zend-Pakete fast so viele Downloads pro Monat wie Laravel, obwohl dieses Projekt nicht mehr unterstützt wird.
Schauen Sie sich zum Schluss die allgemeine Liste der am häufigsten heruntergeladenen PHP-Pakete an.
| | Package | Monthly | Total | |----|-----------------------------------|---------|-----------| | 1 | symfony/polyfill-mbstring | 7943600 | 210645235 | | 2 | psr/log | 7768451 | 238663129 | | 3 | symfony/polyfill-ctype | 7284741 | 110601284 | | 4 | psr/container | 6847606 | 119345271 | | 5 | symfony/console | 6713344 | 199367074 | | 6 | guzzlehttp/guzzle | 6607580 | 168514253 | | 7 | symfony/finder | 6486878 | 176261290 | | 8 | psr/http-message | 6384401 | 164860087 | | 9 | guzzlehttp/promises | 6372505 | 149984782 | | 10 | guzzlehttp/psr7 | 6350221 | 161806561 | | 11 | doctrine/instantiator | 6199120 | 180684872 | | 12 | symfony/process | 6167368 | 169254030 | | 13 | phpdocumentor/reflection-docblock | 6140913 | 165150240 | | 14 | monolog/monolog | 6109702 | 196673732 | | 15 | symfony/event-dispatcher | 6098870 | 190433052 | | 16 | webmozart/assert | 5905460 | 144395517 | | 17 | doctrine/lexer | 5895066 | 157678399 | | 18 | ralouphie/getallheaders | 5861396 | 66293788 | | 19 | doctrine/inflector | 5743593 | 171588858 | | 20 | phpdocumentor/type-resolver | 5706391 | 136101740 |
Die in diesem Artikel vorgestellten Daten wurden hauptsächlich von Gatis Šūpulnieks im April und Mai 2020 im Rahmen der Forschung „Entwicklung und Verwendung von Laravel-Paketen“ gesammelt.
Relevante Quellen:
- Ausgangsdaten
- In Verbindung stehender Artikel von Jason McCreary
- Der Autor dieses Artikels: Juris Evertovskis
- : Gatis Šūpulnieks
- ,