ayesh / composer-min-autoload
一个用于生成稍微精简的Autoloaders的Composer插件,包含新的`dump-min-autoload`命令
Requires
- php: ^8.1
- composer-plugin-api: ^2.0
Requires (Dev)
- composer/composer: ^2.3
- phpunit/phpunit: ^9.5.20
Conflicts
- hhvm: *
This package is auto-updated.
Last update: 2024-09-20 14:04:41 UTC
README
一个用于生成稍微精简的Autoloader的Composer插件,包含新的dump-min-autoload
命令
Composer的Autoloader对我来说太稳定了。
Composer的Autoloader文件太大了,它们占用了我的20KB硬盘的大部分空间。
Composer的Autoloader需要加载四个文件来加载?只有三个是可以接受的!
一个在COVID-19大流行期间由一个无聊的家伙拼凑起来的Composer插件?把它放到生产环境中!
这些听起来像你吗?别再说更多了,家人,Composer Min Autoload为你解决了这个问题。
Composer Min Autoload是一个生成稍微精简的Autoloader的Composer插件。
什么?Composer的Autoloader膨胀了?
Composer的Autoloader稳定且经过深思熟虑。它甚至可以在PHP 5.2上运行,尽管Composer本身需要PHP 5.2。
当你生成Composer的Autoloader时,会创建这些文件
vendor
|--- autoload.php: This is the file that you include
|--- composer
|--- autoload_real.php: Coordinates the autoloader class
|--- ClassLoader.php: The `ClassLoader` class itself
|--- autoload_static.php: Opcache-frendly `static` arrays of autoload directives. Requires PHP >= 5.6 && !hhvm
|--- autoload_psr4.php: `PSR-4` mappings. Only used when `static` is not used.
|--- autoload_classmap.php: Classmap. Only used when `static` is not used.
|--- autoload_files.php: Always-include files. Only used when `static` is not used.
|--- autoload_namespaces.php: Namespace mappings. Only used when `static` is not used.
|--- platform_check.php A run-time check for platform requirements.
如果你使用PHP 5.6或更高版本,只使用前四个文件,最后四个文件成为无效代码。
此插件尝试通过重新组织代码来优化Autoloader
- 删除
autoload_psr4.php
、autoload_classmap.php
、autoload_files.php
、autoload_namespaces.php
- 将
autoload_real.php
逻辑移动到autoload.php
文件,并删除autoload_real.php
- 如果存在,删除
platform_check.php
文件(由Composer v2生成)
使用Composer Min Autoload,你将得到一个稍微优化的Autoloader
vendor
|--- autoload.php: This is the file that you include. Also coordinates ClassLoader class with static list.
|--- composer
|--- ClassLoader.php: The `ClassLoader` class itself
|--- autoload_static.php: Opcache-frendly `static` arrays of autoload directives. Requires PHP >= 5.6 && !hhvm
但是,为什么?
- Covid-19的无聊
- 我在CI/CF设置中提交
vendor
目录的Git,并希望diff略小一些。 - 我知道我将永远不会在PHP < 7.4、Zend编码器或HHVM上运行此代码
- GitHub上的星标很酷
它是生产就绪的吗?
¯\_(ツ)_/¯
此插件几乎复制了其Autoload生成器代码的整个Composer本身。请采取预防措施并运行您的测试套件。你有测试,对吧?对吧?
如何使用
现在我们来说说吧!
- 安装插件
A: 按项目安装插件
composer require ayesh/composer-min-autoload
B: 如果您愿意,也可以全局安装此插件
composer global require ayesh/composer-min-autoload
- 导出最小Autoloader
composer dump-min-autoload
您也可以使用dma
作为dump-min-autoload
的简写。
获取原始Autoloader
每次更改包(要求/更新/删除)时,Composer都会生成标准的Autoloader。您可以运行composer dmo
以覆盖您的精美最小Autoloader。