Skip to content

Some variables get -- replaced to - #273

Open
@Tofandel

Description

@Tofandel

When using the migrator with npx sass-migrator module --migrate-deps src/theme/theme.scss

Some variables get renamed

Example

- $--color-info-light: mix($--color-white, $--color-info, 80%) !default;
- $--color-success-light: mix($--color-white, $--color-success, 80%) !default;
- $--color-warning-light: mix($--color-white, $--color-warning, 80%) !default;
- $--color-danger-light: mix($--color-white, $--color-danger, 80%) !default;
+ $-color-success-light: color.mix($-color-white, $-color-success, 80%) !default;
+ $-color-warning-light: color.mix($-color-white, $-color-warning, 80%) !default;
+ $-color-danger-light: color.mix($-color-white, $-color-danger, 80%) !default;
+ $--color-info-light: color.mix($-color-white, $-color-info, 80%) !default;

I do not want this renaming to happen, I tried with --remove-prefix=app but that changed nothing

/// If [declaration] should be renamed, adds it to [renamedMembers].
///
/// Members are renamed if they start with [prefixesToRemove] or if they start
/// with `-` or `_` and are referenced outside the stylesheet they were
/// declared in.
void _renameDeclaration(MemberDeclaration declaration) {
if (declaration.isForwarded) return;
var name = declaration.name;
if (name.startsWith('-') &&
references.referencedOutsideDeclaringStylesheet(declaration)) {
// Remove leading `-` since private members can't be accessed outside
// the module they're declared in.
name = name.substring(1);
}
name = _unprefix(name);
if (name != declaration.name) {
renamedMembers[declaration] = name;
if (_upstreamStylesheets.isEmpty) _needsImportOnly = true;
}
}

Seems there is no way to opt out, every variable starting with - will have one - removed if it's referenced outside the file

Repro:

//test.scss
@import "test2";
$color-black: $--color-black;

//test2.scss
$--color-black: #000000 !default;

npx sass-migrator module --migrate-deps test.scss

And also

npx sass-migrator module --migrate-deps test.scss --remove-prefix=--

Results in

@use "test";
$color-black: test.$-color-black;

Which is unexpected

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions