ayesh/composer-min-autoload

一个用于生成稍微精简的Autoloaders的Composer插件,包含新的`dump-min-autoload`命令

安装: 81

依赖项: 0

建议者: 0

安全: 0

星标: 12

关注者: 3

分支: 3

开放问题: 1

类型:composer-plugin

v0.0.3 2022-05-16 11:34 UTC

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.phpautoload_classmap.phpautoload_files.phpautoload_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本身。请采取预防措施并运行您的测试套件。你有测试,对吧?对吧?

如何使用

现在我们来说说吧!

  1. 安装插件

A: 按项目安装插件

composer require ayesh/composer-min-autoload

B: 如果您愿意,也可以全局安装此插件

composer global require ayesh/composer-min-autoload
  1. 导出最小Autoloader
composer dump-min-autoload

您也可以使用dma作为dump-min-autoload的简写。

获取原始Autoloader

每次更改包(要求/更新/删除)时,Composer都会生成标准的Autoloader。您可以运行composer dmo以覆盖您的精美最小Autoloader。