Skip to content

Can't compile style for custom theme which inherits from another custom theme #35684

Open
@Eddcapone

Description

@Eddcapone

Preconditions and environment

  • 2.4.4
  • OS: Ubuntu 20.04.2 LTS
  • Magento is in developer mode
  • Grunt installed

Code:

issue_35684.zip (extract to root dir of the magento project)

Steps to reproduce

Overview

  1. Create Theme Foo (inheriting from Magento/luma)
  2. Create Theme Bar (inheriting from Foo)
  3. Create Module Company_Test
  4. Setup Upgrade
  5. Grunt configuration
  6. Grunt Refresh

1. Create Theme Foo (inheriting from Magento/luma)

1.1 app/design/frontend/company/foo/registration.php

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

use \Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(ComponentRegistrar::THEME, 'frontend/company/foo', __DIR__);

1.2 app/design/frontend/company/foo/theme.xml

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
    <title>Foo</title>
    <parent>Magento/luma</parent>
</theme>

1.3 app/design/frontend/company/foo/web/css/source/_extend.less

@import '_mixin.less';

1.4 app/design/frontend/company/foo/web/css/source/_mixin.less

.h1 {
    color: red;
    font-size: 24px;
}

2. Create Theme Bar (inheriting from Foo)

2.1 app/design/frontend/company/bar/registration.php

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

use \Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(ComponentRegistrar::THEME, 'frontend/company/bar', __DIR__);

2.2 app/design/frontend/company/bar/theme.xml

<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd">
    <title>Bar</title>
    <parent>company/foo</parent>
</theme>

2.3 app/design/frontend/company/bar/web/css/source/_extend.less

@import '_text.less';

2.4 app/design/frontend/company/bar/web/css/source/_text.less

.black { color: black; }

3. Create Module Company_Test

3.1 app/code/Company/Test/registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Company_Test',
    __DIR__
);

3.2 app/code/Company/Test/etc/module.xml

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
	<module name="Company_Test" setup_version="1.0.0"/>
</config>

3.3 app/code/Company/Test/view/frontend/web/css/source/_module.less

body.contact-index-index {
    .page-title { .h1(); }
}

3.4 Enable Module "Company_Test"

php bin/magento module:enable Company_Test

4. Setup Upgrade

php bin/magento setup:upgrade

5. Grunt Configuration

dev/tools/grunt/configs/local-themes.js

/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

 'use strict';

 /**
  * Define Themes
  *
  * area: area, one of (frontend|adminhtml|doc),
  * name: theme name in format Vendor/theme-name,
  * locale: locale,
  * files: [
  * 'css/styles-m',
  * 'css/styles-l'
  * ],
  * dsl: dynamic stylesheet language (less|sass)
  *
  */
 module.exports = {
     company_foo: {
         area: 'frontend',
         name: 'company/foo',
         locale: 'de_DE',
         files: [
             'css/styles-m',
             'css/styles-l'
         ],
         dsl: 'less'
     },
     company_bar: {
         area: 'frontend',
         name: 'company/bar',
         locale: 'de_DE',
         files: [
             'css/styles-m',
             'css/styles-l'
         ],
         dsl: 'less'
     },
 };

6. Grunt Refresh

Run grunt refresh

Expected result

It should compile without an error.

Actual result

-> .h1 is undefined

user@xx-VirtualBox:/var/www/company/fresh_m244$ grunt refresh
Running "refresh" task

Running "clean:var" (clean) task
>> 1433 paths cleaned.

Running "clean:pub" (clean) task
>> 1194 paths cleaned.

Running "clean:styles" (clean) task
>> 0 paths cleaned.

Running "clean:markup" (clean) task
>> 0 paths cleaned.

Running "clean:js" (clean) task
>> 0 paths cleaned.

Running "clean:generation" (clean) task
>> 1732 paths cleaned.

Running "clean:company_foo" (clean) task
>> 0 paths cleaned.

Running "clean:company_bar" (clean) task
>> 0 paths cleaned.

Running "exec:all" (exec) task
grunt --force clean:company_foo
Processed Area: frontend, Locale: de_DE, Theme: company/foo, File type: less.
-> css/styles-m.less
-> css/styles-l.less
Successfully processed.
Running "clean:company_bar" (clean) task
>> 49 paths cleaned.

Done.


Execution Time (2022-07-22 11:58:46 UTC+2)
loading tasks      92ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 68%
clean:company_bar  42ms  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 31%
Total 135ms

Processed Area: frontend, Locale: de_DE, Theme: company/bar, File type: less.
-> css/styles-m.less
-> css/styles-l.less
Successfully processed.

Running "less:company_foo" (less) task
>> 2 stylesheets created.
>> 2 sourcemaps created.

Running "less:company_bar" (less) task
>> pub/static/frontend/company/bar/de_DE/Company_Test/css/source/_module.less: [L2:C18] .h1 is undefined
Warning: Error compiling pub/static/frontend/company/bar/de_DE/css/styles-m.less Use --force to continue.

Aborted due to warnings.


Execution Time (2022-07-22 11:58:33 UTC+2)
clean:var         305ms  ▇▇ 1%
clean:pub         382ms  ▇▇ 1%
clean:generation  324ms  ▇▇ 1%
exec:all          21.8s  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 80%
less:company_foo   3.8s  ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 14%
less:company_bar  478ms  ▇▇▇ 2%
Total 27.4s

Additional information

If I skip 2.3 and 2.4 then compilation works.

Release note

No response

Triage and priority

  • Severity: S0 - Affects critical data or functionality and leaves users without workaround.
  • Severity: S1 - Affects critical data or functionality and forces users to employ a workaround.
  • Severity: S2 - Affects non-critical data or functionality and forces users to employ a workaround.
  • Severity: S3 - Affects non-critical data or functionality and does not force users to employ a workaround.
  • Severity: S4 - Affects aesthetics, professional look and feel, “quality” or “usability”.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Area: FrameworkComponent: ConsoleIssue: ConfirmedGate 3 Passed. Manual verification of the issue completed. Issue is confirmedPriority: P3May be fixed according to the position in the backlog.Progress: ready for devReproduced on 2.4.xThe issue has been reproduced on latest 2.4-develop branchTriage: Dev.ExperienceIssue related to Developer Experience and needs help with Triage to Confirm or Reject it

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions