migrator icon indicating copy to clipboard operation
migrator copied to clipboard

Module migrator can generate @use loops

Open nex3 opened this issue 6 years ago • 1 comments

If the entrypoint imports a file that uses variables that were originally defined in the entrypoint, the migrator generates a @use that imports the original file. For example:

// entrypoint.scss
$var: value;

@import "other";
// _other.scss
@debug $var;

is migrated to:

// entrypoint.scss
$var: value;

@use "other";
// _other.scss
@use "entrypoint";
@debug entrypoint.$var;

This is invalid, as it creates a dependency loop. Since it's not totally clear what the user intended, the migrator should probably error out.

nex3 avatar Feb 04 '20 06:02 nex3

The given example may be a bit misleading. Here's another example to provide to elaborate further. Input:

<==> entrypoint.scss
@import "library";
$var: $value;

<==> _library.scss
$value: blue;
a {
  color: $var;
}

Output:

<==> entrypoint.scss
@use "library";
$var: library.$value;

<==> _library.scss
@use "entrypoint";

$value: blue;
a {
  color: entrypoint.$var;
}

pamelalozano16 avatar Dec 07 '23 18:12 pamelalozano16