Когда я начинаю новый проект M2, первое, что я хотел бы сделать, это установить ядро через composer:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition
Теперь я могу написать свой пользовательский модуль (и) и тему (и) в app/code
. Затем я добавил бы мою composer.*
и всю app/code
папку в мою VCS. Пока все хорошо.
Предположим, теперь я хочу использовать некоторые инструменты сборки для своего проекта, скажем, Grunt или Gulp.
Если я сделаю свой собственный
Gruntfile.js
,magento/magento2-base
пакет будет перезаписан при запускеcomposer install
после клонирования репозитория.Если я зафиксирую свой
gulpfile.js
, я не смогу определить свои зависимости в apackage.json
, потому что он также будет перезаписанmagento/magento2-base
.Если я решу использовать установку Grunt в Magento и захочу изменить ее, отредактировав файлы в
/dev/tools/grunt
(напримерthemes.js
), я не смогу, потому что мои изменения будут перезаписаныmagento/magento2-base
.
Насколько я понимаю, вы не можете сделать многое в корне документа. Есть, конечно, множество решений этой проблемы:
- Я мог запустить
git checkout -
сразу после установки, чтобы сбросить свои собственные файлы /build
Например, я могу хранить файлы сборки в отдельной папке.- Я мог бы использовать другой инструмент для сборки, такой как Phing, Ant или Rake (мои разработчики внешнего интерфейса не были бы так счастливы)
- Я мог бы заменить
magento/magento2-base
пользовательским пакетом, который имеет пользовательское сопоставление для основных файлов (не очень оптимальный, но эй, это вариант)
Мне лично не нравятся все эти варианты, поэтому я хотел бы знать, есть ли предпочтительный или лучший способ добиться того, что я пытаюсь сделать.
У кого-нибудь есть такая же проблема? Как ты это решил? Как вы структурируете свой проект под VCS?
ОБНОВИТЬ
Дополнительный пункт, связанный с настройкой проекта. В своих экспериментах я заметил, что установщик Magento composer имеет флаг для переопределения файла:
"extra": {
"magento-force": "override"
}
Он внутренне рассматривается как логическое значение, если я не ошибаюсь, поэтому я попытался установить его, false
чтобы пропустить переопределение. Когда я запускаю, composer install
моя установка завершается неудачно из-за того, что файл (ы) уже присутствуют. По сути, если я не позволю Magento переопределить мои файлы, я не смогу установить его.
Какова цель этого флага тогда? Это только для проверки? Честно говоря, для меня нет особого смысла, но, возможно, кто-то может пролить свет на эту тему.
Gruntfile.js
, gulpfile.js
и package.json
проблема решена. Вопрос рассматривается в этом вопросе по - прежнему относится к более новой версии Magento 2 , когда вам нужно изменить themes.js
, index.php
или .htaccess
, например.