migrator
migrator copied to clipboard
Module migrator can generate @use loops
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.
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;
}