Laravel软件包生态系统概述

特别是对于“ PHP后端开发人员”“ Framework Laravel”课程的学生,我们准备了另一种有用的翻译。












Laravel世界中,  包装起着重要的作用。这个角色有多重要?有哪些配套?为了找出答案,我们从Packagist.org API中获取了数据, 并过滤掉了Laravel软件包。



我们如何定义Laravel软件包?使用文件 composer.json我们把包包Laravel生态系统,如果场namedescriptionkeywords 或type 包含一个字符串laravel另外,如果一个包包含laravel/framework 任何illuminate/*依赖项或任何子树组件  ,则将该包定义为Laravel包最后,该laravel领域的关键 extra 还是指向该软件包在Laravel框架生态系统中的成员资格的指针。



尽管这些条件并不能保证该软件包仅是Laravel,但确实表明该软件包是在考虑Laravel的情况下构建的。



最受欢迎的套餐



如果仅查看下载最多的软件包的 列表,结果将不会令人满意:这些是基本软件包,并且在Laravel项目之外具有大量用途。



| 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 |


通过消除这些“假阳性”结果,也许可以获得更有趣的评级。我们已经手动过滤了为Laravel项目创建并有目的地安装的30个最受欢迎的软件包。我们还概述了这些软件包的目标区域。



| | 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 |


目的地区域说明:



  • auth -认证和授权
  • dev -开发和调试工具
  • helper -支持和简化工作
  • integ -与其他服务整合
  • port -以各种格式导入和/或导出


此列表中的第一位是开发工具,然后是集成。







我们希望在最顶部看到更多Spatie软件包 ,但事实证明,这是maatwebsite / excel和Barry vd的工具 混合橡胶 的使用频率更高。



供应商概述



总共,我们从23,167个不同的开发人员中确定了47,337个Laravel软件包。结果是许多参与者的分布相当均匀。



其中一半(23,668)个软件包是由3927个核心开发人员创建的。这比起普莱斯定律在这里生效的意义要大得多 15042个开发人员每个仅发布了一个软件包。



如果按软件包数量对开发人员进行排序,则可以看到几乎未知的名称。以下是表现最佳的软件包开发人员,包括他们各自软件包的累计下载量。



| | 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 |


事实证明,有很多开发人员创建了大量的组件并在没有太多广告的情况下部署它们。要查看更多著名名称并比较它们的编号,让我们按下载总数对列表进行排序。



| | 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 |


如果改为按月下载量对列表进行排序,则结果将略有不同。



| | 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 |


这些分布明显超过顶部。不管我们是每天,每月还是总下载量,所有下载中的一半以上来自前6大软件包开发人员。例如,laravel,  illuminate,  nesbot,  spatie,  fideloper 和 barryvdh共享每天565万次下载中的285万 



您可以使用Hirsch Index之东西  来衡量开发人员的知名度。只有317个开发人员,每个开发人员每天至少下载317次。1,118个供应商每月有1,118或更多的下载,或总下载3003。



许可选项



我们的许可概述不是特别准确,因为使用不同的字符串表示相同的许可。例如gpl-3.0,  gpl 3.0,  gpl3gplv3,甚至gnu general public license version 3,和许多其他选项指向同一个许可证。



幸运的是,主要结论很明确,因为该行mit表示37,502个Laravel软件包的相应许可证。 6304软件包未获得许可,在Apache 2.0和GPL 3.0许可证下分发了500多个软件包。还有数百个具有BSD 2,BSD 3和GPL 2.0许可证的软件包。



Laravel软件包中有79%是MIT许可的,有14%是未许可的,其他每个许可证的使用率均在2%或更少。也许部分原因是Laravel框架本身的影响,该框架是根据MIT许可分发的。如果您查看所有软件包,则MIT许可证的普及率要低得多-60%。











超越Laravel



针对不同框架的软件包数量表明,社区参与了框架工具的开发,并愿意与其他贡献者共享其代码。我们还计算了丢弃的程序包的数量及其百分比,以查看哪些社区蓬勃发展,哪些社区落后。



| | 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% |






另一方面,下载总数反映了软件包对开发标准项目的重要性。



请注意,在计算此下载数量时,将考虑与框架相关的所有软件包,而不仅仅是基本软件包(与上述软件包数量的计算一样)。有关将程序​​包归类为特定框架标准,请参见 此处。一个软件包可以属于多个框架的生态系统。



| | 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 |






应当指出,Symfony的领先地位并不意味着大多数软件包都已下载以供基于该框架的项目使用。Laravel使用了几个核心的Symfony软件包,而其他许多Symfony软件包也可以在Laravel项目中使用。



同样,值得注意的是,尽管不再支持该项目,但Zend软件包每个月的下载量几乎与Laravel一样多。



最后,看看下载最多的PHP软件包的一般列表。



| | 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 |


本文提供的数据主要由加蒂斯·苏普妮妮克(GatisŠūpulnieks)于2020年4月和5月收集,作为“开发和使用Laravel软件包”研究的一部分。



相关资料:









:






All Articles