less.js icon indicating copy to clipboard operation
less.js copied to clipboard

Cannot namespace detached ruleset

Open Bilge opened this issue 4 years ago • 2 comments

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.

Bilge avatar Jun 07 '21 11:06 Bilge

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.

iChenLei avatar Jun 07 '21 12:06 iChenLei

@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.

Bilge avatar Jun 07 '21 12:06 Bilge