Отдельные основные файлы в SCSS приводят к неопределенным переменным

#sass #dart-sass

#нахальство #дарт-сасс

Вопрос:

Я в основном делаю «тему» над существующими scss, изменяя некоторые определения переменных. Мне нужно, чтобы отдельные пакеты css отображались с разными переменными. Я подумал о том, чтобы иметь отдельные основные файлы, которые импортируют общие файлы, чтобы сохранить их СУХИМИ.

Структура файла

 - variables_1.scss - variables_2.scss - main_1.scss - main_2.scss - _main-shared.scss  

_main-shared.scss содержит @import инструкции для всех других файлов scss, но не импортирует переменные.

Содержимое основного файла:

 //main_1.scss @use 'variables_1' as *; @import "main-shared";   //main_2.scss @use 'variables_2' as *; @import "main-shared";  

Но многоуровневый импорт, похоже, не работает, что приводит к ошибке: Неопределенная переменная в файле _main-shared.scss.

Есть ли лучший способ сделать это? Я не могу импортировать переменные в _main-shared.scss, так как это помешало бы созданию отдельных файлов переменных.

Есть ли для этого решение, о котором я не знаю, или лучшее решение?

Комментарии:

1. Почему вы пишете @use 'variables_2' as *; вместо @import "variables_2"; этого ?

2. Мне также интересно, почему вы используете оба @import и @use ?

3. @Martin — @use создает пространство имен, поэтому на любую переменную нужно ссылаться как variables.$foo , а не просто $foo . as * импортирует переменные в глобальное пространство имен. Это противоречит цели @use в смысле пространства имен, но, поскольку существует множество мест, где используются переменные, их редактирование было бы слишком хлопотным. @Arkellys — Наследие. Проект использовал node-sass, и мы перешли на dart-sass. Раньше @use не использовался, но поскольку теперь он предпочтительнее @import, мы переходим на вызовы @use. Но, по-видимому, это не прямое преобразование, так как прямая замена приводит к ошибкам