Magento2:修改CSS文件的最佳做法


14

我想修改css文件pub/static/frontend/Magento/luma/en_US/css/styles-l.css
最初,此文件不存在于pub / static文件夹中,并且存在于

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

当我使用来分配静态内容时php bin/magento setup:static-content:deploy,会在pub / static中创建与之相关的2个文件。
1. pub/static/frontend/Magento/luma/en_US/css/styles-l.less
2. pub/static/frontend/Magento/luma/en_US/css/styles-l.css

我是一名支持开发人员,在开发模块时,我倾向于删除pub / static中存在的任何内容(.htaccess除外)。所以对我来说,直接修改似乎不是最好的选择pub/static/frontend/Magento/luma/en_US/css/styles-l.css

在这种情况下,修改上述CSS文件的最佳做法是什么?
1.我应该修改pub/static/frontend/Magento/luma/en_US/css/styles-l.less还是
2.我的理解是错误的,因为我可以删除pub/static(在开发过程中)所有内容,因此我应该修改pub/static/frontend/Magento/luma/en_US/css/styles-l.css而不是删除它。

Answers:


19

您不应编辑/修改pub / *或vendor / *目录中的文件。Pub用于部署,供应商用于默认结构,您可以通过模板或自定义模块覆盖它。代替:

  • 在app / design / frontend / {vendor} / {yourTheme} /中创建一个新主题。您可以使用“空白”或“亮度”主题。您还可以创建从Blank继承的新主题(继承在theme.xml中定义)。如果您已经在使用某些主题,请跳过此步骤。
  • 在主题中进行.less编辑,以使更改保持可见,并且在清除缓存或升级系统时不会被替换。
  • 使用grunt将.less编译为部署文件。
  • 您还可以设置源映射,以在主题.less文件中定位样式,从而提高工作效率。

一些有用的参考:


谢谢。我正在使用主题Templatemonster/theme,但styles-l.less没有出现在主题中。我应该复制vendor/magento/theme-frontend-blank/web/css/styles-l.lessapp/design/frontend/Templatemonster/theme/web/css/styles-l.less在使用/修改呢?
amitshree

2
不,您应该在Templatemonster / theme中编辑更少的文件-pub目录中的styles-*。less文件已经是您的主题和其他资源编译的文件,并且不建议修改/更改。当您在TM主题下完成文件编辑后,请运行grunt将其编译为最终资源,这些资源将部署在pub文件夹中。您还可以使用源映射来确定主题中较少的文件。
g5wx

再次感谢。只是为了澄清它,如果我不得不修改类存在财产styles-l.lessmagento/theme-frontend-blank主题,我应该使用/任何的(或新的)覆盖这些类的css文件在我TM的主题和相应的修改。请问magento/theme-frontend-blank主题表现为以同样的方式base/default主题是Magento1工作?
amitshree

1
是的,您希望创建的任何更改都应反映在模板中,以便修改范围保持在该模板内,并且在升级时不会被覆盖。M2中的空白模板具有与M1中的“默认”相同的基本功能-即已经创建了基本定义,并且扩展主题可以具有未修改元素的后备功能。
g5wx

4

这种方法对我有用

在.less文件中进行必要的更改,然后运行以下命令:

php bin/magento setup:upgrade

php bin/magento cache:flush

3

如果是其他主题,则应配置:

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
在dev / tools / grunt / configs / theme.js文件中
Patrick-Peng


0

我建议执行

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

如您所知,

php bin/magento setup:upgrade

将清除缓存和静态内容,并且

php bin/magento setup:static-content:deploy 

将在<mageroot>/pub文件夹中部署所有主题。此命令将大大减少商店的首次加载时间。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.