less / less.js

Less. The dynamic stylesheet language.
http://lesscss.org
Apache License 2.0
17.02k stars 3.41k forks source link

Cannot namespace detached ruleset #3624

Open Bilge opened 3 years ago

Bilge commented 3 years ago

Input

#namespace {
  @ruleset: {
    foo: bar;
  }
}

.my-selector {
  #namespace.@ruleset();
}

Output

ModuleBuildError: Module build failed (from ../node_modules/less-loader/dist/cjs.js):

  .my-selector {
    #namespace.@ruleset();
             ^
Unrecognised input

Aside, the docs seem really unclear about whether a namespace should be declared as #namespace or #namespace(), but it doesn't make a difference either way, in this case.

iChenLei commented 3 years ago

2021-06-07 19 55 51

You need remove @ and : in your case, and the difference between #namespace and #namespace() is ->

#namespace() is a pure mixin and only generate needed css where you use. #namespace generate extra css and also can be used as a mixin.

Bilge commented 3 years ago

@iChenLei Thanks a lot, this definitely does achieve what I wanted to do, although it seems my original point that you cannot namespace a detached ruleset is still correct.