Минимальная установка Magento 2

Однажды мне понадобилось установить Magento 2 в качестве движка для блога (да, и такое бывает…)
Есть готовый модуль Magefan\Blog, его и использовал. Но решил попробовать выпилить из Magento всё лишнее
Тем более не, так давно наткнулся на Хабре на статью по минимальной установке Magento.
Изначально движок я ставил стандартно с помощью composer
$ sudo composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.x magento2
Оно ставит пакет magento/product-community-edition со всей своей кучей зависимостей и ненужных модулей

Потом я долго сидел и руками отключал те модули, которые можно отключить:
bin/magento module:disable <Module>
А потом решил воспользоваться той статей с habr’а Делал все как написано в статье (хотя я ставил версию 2.4.7 более свежую, чем у автора, но сильных различий я не заметил)
Единственно, у меня вылезла ошибка, описанная здесь
Насколько я понял это из-за более свежей версии библиотеки ICU library
Патч взял там же на github и применил его у себя в composer.json
"extra": {
"magento-force": "override",
"composer-exit-on-patch-failure": true,
"patches": {
"magento/framework": {
"ICU library where AmPmMarkers": "patches/composer/github-issue-38364.diff"
}
}
}
Еще мне не понравилось, что пропала версия (родной метод \Magento\Framework\App\ProductMetadata::getVersion возвращал UNKNOWN вместо версии)
Это из-за того, что данный метод работает с композером с файлом vendor/composer/installed.php и ищет пакет с именем magento/product-community-edition
public function isSystemPackage($packageName = '')
{
if (preg_match('/magento\/product-.*?-edition/', $packageName) == 1) {
return true;
}
return false;
}
(это тот пакет, который тянет тысячу зависимостей и от которого я отказался)
В итоге самым простым решением IMHO является плагин:
<?php
namespace Emagento\Misc\Plugin\Framework\App;
class ProductMetadata
{
private const VERSION = '2.4.7';
public function aroundGetVersion(\Magento\Framework\App\ProductMetadata $subject, \Closure $proceed)
{
return self::VERSION;
}
}
После этого версию возвращает нормально
Вот вывод команды n98-magerun2
$ php n98-magerun2 sys:info
NameMagentoVersion2.4.7EditionCommunityRoot/opt/www/magento2/e-magento.ru.localApplication ModedeveloperSessionfilesSearch EnginelmysqlCache BackendCm_Cache_Backend_FileVendorsMagento, Emagento, Magefan, SwissupModule Count79Attribute Count157Customer Count0Category Count2Product Count0Admin User Count1Composer Lock FilefoundComposer Package Count197Magento Composer Root Update Pluginnot installedMagento Composer Dependency Version Audit PlugininstalledMagento Coding Standard Packagenot installedMagento Functional Testing Frameworknot installedMSI Packagesnot installedSample Data Packagesnot installedHyva Default Themenot installedHyva Theme Modulenot installed
Вот так выглядит каталог vendor

Согласитесь, это гораздо лучше, чем обычная установка с помощью композера :)