Magento2: Prática recomendada para modificar arquivos css


14

Eu quero modificar o arquivo css pub/static/frontend/Magento/luma/en_US/css/styles-l.css.
Inicialmente, esse arquivo não está presente na pasta pub / static e está presente em

vendor/magento/theme-frontend-blank/web/css/styles-l.less (it's styles-l.less)

Quando eu deply conteúdo estático usando php bin/magento setup:static-content:deploy, 2 arquivos são criados em pub / static relacionados a ele.
1. pub/static/frontend/Magento/luma/en_US/css/styles-l.less
2. pub/static/frontend/Magento/luma/en_US/css/styles-l.css

Sou um desenvolvedor de backup e, enquanto desenvolvo módulos, tendem a excluir o que estiver presente no pub / static (exceto .htaccess). Então, para mim, não parece ser a melhor opção para modificar diretamente pub/static/frontend/Magento/luma/en_US/css/styles-l.css.

Nesse caso, qual é a melhor prática para modificar o arquivo css acima?
1. Devo modificar pub/static/frontend/Magento/luma/en_US/css/styles-l.lessou
2. Meu entendimento está errado de que posso excluir tudo pub/static(durante o desenvolvimento) e devo modificá-lo pub/static/frontend/Magento/luma/en_US/css/styles-l.csse nunca excluí-lo.

Respostas:


19

Você não deve editar / modificar arquivos no diretório pub / * ou vendor / *. Pub é para implantação e fornecedor é para estrutura padrão, que você substitui por meio de seu modelo ou módulos personalizados. Em vez de:

  • crie um novo tema em app / design / frontend / {vendor} / {yourTheme} /. Você pode usar o tema Em branco ou Luma. Você também pode criar um novo tema que herda de Blank (a herança é definida em theme.xml). Se você já estiver usando algum tema, pule esta etapa.
  • edite .less no seu tema para que as alterações permaneçam visíveis e não sejam substituídas ao limpar o cache ou atualizar o sistema.
  • Use o grunhido para compilar seu .less em arquivos de implantação.
  • Você também pode configurar mapas de origem para apontar seu estilo nos arquivos .less do tema, para que você possa ser mais produtivo.

Algumas referências úteis:


Obrigado. Estou usando o tema Templatemonster/themee styles-l.lessnão está presente no tema. Devo copiar vendor/magento/theme-frontend-blank/web/css/styles-l.lesspara app/design/frontend/Templatemonster/theme/web/css/styles-l.lessusá-lo / modificá-lo?
amitshree

2
Não, você deve editar menos arquivos no Templatemonster / theme - styles - *. Menos arquivos no diretório pub já são arquivos compilados a partir do seu tema e outros recursos e não devem ser modificados / alterados. Quando você terminar de editar seus arquivos no tema da TM, execute o grunhido para compilá-los nos recursos finais, que serão implantados na pasta pub. Você também pode usar mapas de origem para apontar menos arquivos do seu tema.
G5wx

Obrigado novamente. Só para esclarecer que, se eu tiver que modificar propriedades das classes presentes no styles-l.lessde magento/theme-frontend-blanktema que eu deveria usar / substituir essas classes em qualquer um (ou novo) arquivos CSS no meu tema TM e modificar em conformidade. O magento/theme-frontend-blanktema se comporta da mesma maneira que o base/defaulttema estava funcionando no Magento1?
amitshree

1
Sim, todas as alterações que você deseja criar devem ser refletidas no seu modelo, para que o escopo da modificação permaneça local dentro desse modelo e não seja substituído nas atualizações. O modelo em branco no M2 tem a mesma função básica como Padrão no M1 - ou seja, já existem definições básicas criadas e o tema estendido pode ter um substituto para os elementos que você não modifica.
G5wx

4

Essa abordagem funcionou para mim

Faça as alterações necessárias no arquivo .less e execute os seguintes comandos:

php bin/magento setup:upgrade

php bin/magento cache:flush

3

Se outro tema você deve configurar:

module.exports = {
    blank: {
        area: 'frontend',
        name: 'Magento/blank',
        locale: 'en_US',
        files: [
            'css/styles-m',
            'css/styles-l',
            'css/email',
            'css/email-inline'
        ],
        dsl: 'less'
    },
    luma: {
        area: 'frontend',
        name: 'Magento/luma',
        locale: 'en_US',
        files: [
            'css/styles-m',
            'css/styles-l'
        ],
        dsl: 'less'
    },

    porto: {
        area: 'frontend',
        name: 'Smartwave/porto',
        locale: 'zh_Hans_CN',
        files: [
            'css/styles-m',
            'css/styles-l'
        ],
        dsl: 'less'
    },

    backend: {
        area: 'adminhtml',
        name: 'Magento/backend',
        locale: 'en_US',
        files: [
            'css/styles-old',
            'css/styles'
        ],
        dsl: 'less'
    }
};

2
No arquivo dev / tools / grunt / configs / theme.js
Patrick-Peng

3

Este é o fluxograma de como o magento2 processa arquivos css.

insira a descrição da imagem aqui

Fonte: Inchoo


0

Eu sugeriria executar

php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy

Como você saberia,

php bin/magento setup:upgrade

limpará o cache e o conteúdo estático e

php bin/magento setup:static-content:deploy 

irá implantar todos os temas na <mageroot>/pubpasta. Este comando reduzirá significativamente o primeiro carregamento da sua loja.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.