Quando inicio um novo projeto M2, a primeira coisa a fazer é instalar o núcleo via compositor:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition
Agora posso escrever meu (s) módulo (s) personalizado (s) e tema (s) em app/code
. Eu adicionaria minha pasta composer.*
e toda a app/code
pasta ao meu VCS. Até agora está tudo bem.
Suponha que agora eu queira usar algumas ferramentas de construção para o meu projeto, digamos Grunt ou Gulp.
Se eu confirmar meu
Gruntfile.js
, isso será sobrescrito pelomagento/magento2-base
pacote quando executarcomposer install
depois de clonar o repositório.Se eu confirmar minha
gulpfile.js
, não posso realmente definir minhas dependências em apackage.json
, porque ela também seria substituída pormagento/magento2-base
.Se eu decidir usar a configuração Grunt do Magento e quiser personalizá-la editando os arquivos em
/dev/tools/grunt
(por exemplothemes.js
), não posso, porque minhas alterações seriam substituídas pormagento/magento2-base
.
Meu entendimento é que você realmente não pode fazer muito na raiz do seu documento. Obviamente, existem muitas soluções para esse problema:
- Eu poderia executar um
git checkout -
logo após a instalação para redefinir meus próprios arquivos - Eu poderia armazenar meus arquivos de compilação em uma pasta dedicada,
/build
por exemplo - Eu poderia usar uma ferramenta de compilação diferente, como Phing, Ant ou Rake (meus desenvolvedores de front-end não ficariam tão felizes)
- Eu poderia substituir
magento/magento2-base
por um pacote personalizado que possui um mapeamento personalizado para arquivos principais (não é realmente ótimo, mas ei, é uma opção)
Pessoalmente, não gosto de todas essas opções, então gostaria de saber se existe uma maneira preferida ou melhor de alcançar o que estou tentando fazer.
Alguém está tendo o mesmo problema? Como você resolveu isso? Como você estrutura seu projeto no VCS?
ATUALIZAR
Um ponto extra relacionado à configuração do projeto. Nas minhas experiências, notei que o instalador do Magento compositor possui um sinalizador para substituição de arquivos:
"extra": {
"magento-force": "override"
}
Ele é tratado internamente como um booleano se não me engano, então tentei configurá-lo false
para ignorar a substituição. Quando executo, composer install
minha instalação falha devido aos arquivos já estarem presentes. Basicamente, se eu não permitir que o Magento substitua meus arquivos, não posso instalá-lo.
Qual é o objetivo dessa bandeira então? É apenas suposto executar uma verificação para mim? Para mim, não faz muito sentido ser sincero, mas talvez alguém possa esclarecer um pouco sobre o assunto.
Gruntfile.js
, gulpfile.js
e package.json
problema está resolvido. O problema abordado nesta pergunta ainda é aplicável às versões mais recentes do Magento 2 quando você precisar alterar themes.js
, index.php
ou .htaccess
por exemplo.