为什么以下的根composer.json
会导致vendor/composer/autoload_classmap.php
包含Smarty类的所有类映射 - 尽管composer.json
的{{1}}未来任何typo3-ter/smarty
配置?
autoload
答案 0 :(得分:6)
一些背景信息:
https://composer.typo3.org是一个作曲家存储库,可以通过编辑器安装传统 TYPO3扩展存储库(TER)扩展。由于TER扩展程序没有供应商名称,因此所有共享相同的供应商,即“typo3-ter”。
这个(传统)作曲家存储库是使用TER的元信息(与其他TER扩展和TYPO3版本,作者,描述......的依赖关系)构建的。
要使此存储库对最终用户更有用,特别是因为TYPO3> 7.6在通过composer安装时完全依赖于composer自动加载器,complete extension directory将添加到composer类映射中。没有它,扩展类根本不可加载,无需任何额外配置。
因为这可能会带来麻烦,所以我教过TER来部分捕获composer.json中的信息,以防该文件存在。这意味着如果一个composer.json存在和 it contains an autoload section,则此部分用于在composer.typo3.org上为此扩展生成自动加载信息
关于smarty扩展:
令人惊讶的是,这个扩展已经有了一个composer.json文件。但它被打破了。首要的是:它错过了自动加载信息,尽管它显然有类可用。由于缺少自动加载信息,composer.typo3.org包生成器将完整目录添加为类映射。
如果这会导致麻烦(你从来没有提到过,但我假设是这样),你应该直接将repo作为“vcs”类型添加到你的composer.json中,并且需要“rtp / smarty”而不是“typo3” - 三联/ smarty的”。
或者您要求作者修复composer.json并将新版本上传到TER,或者甚至更好地直接在packagist.org上注册该包