Executando verificação de segurança...
3

Trabalhando com Magento(Adobe Commerce) - Estrutura de pastas

Olá trabalho com adobe commerce e sei que é complicado achar conteudo sobre o mesmo, então farei uma serie de posts de introdução a plataforma... :D

**

Overview

Na imagem a baixo vemos a estrutura de pasta da raiz de um projeto magento.

Estrutura Magento

Com exceção da pasta .docker que é uma paste de configuração do docker local e a node_modules que guarda os arquivos de dependências do projeto, as demais pastas pertencem ao Magento e iremos explicar o que cada pasta contem e sua utilidade.

App

O primeiro diretório que vamos abordar é a pasta app. Dentro deste diretório, encontram-se os módulos, temas e traduções do projeto. Além disso, as configurações globais da aplicação também ficam dentro desse diretório.

Observe na imagem abaixo a estrutura do diretório app.

Path App

A primeira subpasta que vimos no exemplo acima é code. Esta pasta já existia no Magento 1, porém com uma grande diferença… No Magento 1, dentro dela havia três subpastas (code pools): core, local e community. Já no Magento 2, essa divisão por code pool não existe mais.
Dentro de ‘app/code/Magento’, encontram-se todos os módulos nativos da plataforma. Porém, estes arquivos do core só existirão em ‘app/code’ se o Magento tenha sido clonado do repositório oficial no GitHub (magento/magento2 ). Caso o Magento tenha sido instalado via Composer ou pelo arquivo disponibilizado pelo site do Magento, esta pasta se encontrará vazia e os arquivos dos módulos nativos estarão dentro da pasta ‘vendor’ (diretório padrão do Composer).
Este é o diretório recomendado para os módulos criados especificamente para o projeto em questão. Como vemos um exemplo em um projeto da empresa na imagem a baixo.

Code

Observamos que neste exemplo existem apenas alguns módulos na pasta, módulos estes customizados para o projeto, visto que todos os módulos do mangeto, por ser um projeto instalado via composer, estão na pasta vendor que sera discutida mais para frente no documento.
Além disso, dentro da pasta app temos outras subpastas, tais como: design (contém todos os temas do M2), seguindo a mesma logica da pasta code, onde apenas contem os temas e arquivos criados/ personalizados para este projeto. Pasta etc (contém as configurações globais da aplicação), 18in (encontram-se os arquivos responsáveis pela tradução do Magento 2).
Por fim, também temos alguns arquivos PHP usados durante a inicialização do Magento 2.

Bin

Contém o arquivo de interface de linha de comando (CLI) do Magento 2. Este é o arquivo binário que nos oferece a possibilidade de executar diversas ações através do terminal.

Pode até parecer estranho explicando desta forma, mas lembre-se das vezes que você utilizou o bin/magento em seu terminal, pois bem! Neste diretório esta a configuração desta ferramenta essencial para nosso trabalho.

Dev

Possui diversos testes da aplicação (tests), ferramentas para desenvolvedores (tools) e alguns scripts para utilização do TravisCI, uma ferramenta de Continuous Integration (Integração Contínua).
Quando falamos sobre testes no Magento 2, já temos os arquivos do core cobertos pelos seguintes tipos de teste: testes de API, testes de aceitação, testes funcionais, testes de integração, testes de setup, testes de arquivos estáticos e testes unitários.

Para nos fronts o mais comum em utilizarmos esta pasta é na configuração do grunt, na criação de temas para o mesmo.

Genetated

Nela, ficam todos os arquivos gerados automaticamente pela aplicação, como, por exemplo: Factories, Proxies, Interceptors, etc…
Se o Magento estiver configurado em developer mode, estes arquivos são gerados automaticamente durante a execução da plataforma. Já em production mode, é necessário complicar a aplicação (através do comando php bin/magento setup:di:compile) para que os mesmos sejam gerados.
OBS: Até a versão 2.1 do Magento 2, esta pasta encontrava-se dentro da pasta ‘var’.

Lib

Ela comporta todas as bibliotecas usadas pelo Magento. Estas bibliotecas podem ser de terceiros/externas ou do próprio framework do Magento.
Ele se comporta da mesma forma que a pasta ‘app/code’, ou seja, ela só terá conteúdo caso o Magento tenha sido clonado pelo GitHub. Caso contrário, estes arquivos estarão dentro de ‘vendor’.
Todas as outras bibliotecas utilizadas no Magento 2 que não forem disponibilizadas via Composer devem estar neste diretório.

Phpserver

Desde o PHP 5.4, o PHP pode ser executado com um servidor HTTP próprio, bem simples, mas funcional em muitos casos.
O arquivo ‘router.php’, dentro deste diretório contém as configurações necessárias para executar o Magento com o servidor HTTP do próprio PHP. Mais detalhes podem ser encontrados em https://github.com/magento/magento2/tree/2.0/phpserver - Can't find link .
OBS: Por questões de segurança, não é recomendado trabalhar desta forma. O ideal é que você configure seu Magento como ele será no ambiente de produção, ou seja, usando Nginx ou Apache.

Pub

Este diretório contém todos os arquivos públicos do Magento. Ele possui arquivos estáticos (como arquivos de CSS, JavaScript), imagens, páginas de erros, etc.
Este deve ser o diretório de entrada das requisições HTTP. Dentro desta pasta, existe um arquivo ‘index.php’, é ele quem deve executar o Magento, e não o arquivo ‘index.php’ da raiz da instalação. Executando o Magento a partir desta pasta, o Magento fica mais seguro, devido ao fato da pasta raiz não ser mais acessível via browser.
Além disso, dentro dele temos mais algumas subpastas e arquivos, com destaque para a pasta ‘static’, a qual contém os arquivos gerados pelo Magento após o deploy em production mode (através do comando bin/magento setup:static-content:deploy) e o arquivo ‘static.php’, responsável pela geração em tempo real dos arquivos de media em developer mode.

Setup

Ele possui uma mini aplicação para a instalação do Magento 2. Quando instalamos o Magento por seu Wizard (via browser), é o conteúdo desta pasta que é renderizado no frontend da loja.

Var

Assim como no Magento 1, todos os arquivos temporários gerados pelo Magento, como sessão, arquivos de cache, log, etc, são depositados neste diretório em tempo de execução. Ou seja, todos os arquivos temporários são literalmente colocados dentro desse diretório.

Vendor

Por fim, este diretório é o diretório nativo do Composer (Composer ). Nele, ficam todas as dependências do Magento 2, tais como: bibliotecas de terceiros, bibliotecas do próprio Magento, módulos, temas e traduções instalados via Composer.
Como falamos na explicação da pasta ‘app’, se o Magento tiver sido instalado via Composer, ele também vai possuir todos os módulos do core do Magento.
Se você pretende desenvolver um módulo e distribuir o mesmo para a comunidade, o ideal é que você o disponibilize via Composer, pois é o tipo de instalação recomendada para o Magento 2.

Proximo Post - Xml

Carregando publicação patrocinada...
1

Ótimo post, e realmente é muito dificil achar conteúdo Magento 2 (Adobe Commerce), incentivo você a continuar os posts, procurei aqui mas não os achei.