Невозможно сделать переменные глобально доступными в SASS - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь установить глобальные переменные в одном файле, а затем использовать эти переменные во всех других файлах s css в приложении. Когда я устанавливаю переменные, я могу использовать их в этом файле c, но не в других. Я использую метод «@use» вместо «@import», как рекомендовали sass docs, однако кажется, что метод «@import» достиг бы того, что мне нужно, но мне нужен обходной путь в долгосрочной перспективе. Наконец, я попытался использовать метод «@forward», но не увидел никаких изменений и получил те же ошибки.

app.s css

@use 'layouts/variables.scss';
@use 'layouts/forms.scss';

_variables.s css

$ds-black: #212121;

_forms.s css

input
{
    border: 1px solid $ds-black;
}

Консольный вывод при компиляции:

Error: Undefined variable.
   ╷
14 │     border: 1px solid $ds-black;
   │                       ^^^^^^^^^
   ╵
  resources\css\layouts\_forms.scss 14:23  @use
  resources\css\app.scss 4:1               root stylesheet

Я попытался использовать атрибут 'global', однако я получил эту ошибку так же, как и предыдущий

Deprecation Warning: As of Dart Sass 2.0.0, !global assignments won't be able to
declare new variables. Since this assignment is at the root of the stylesheet,
the !global flag is unnecessary and can safely be removed.

  ╷
9 │ $ds-black: #212121 !global;
  │ ^^^^^^^^^^^^^^^^^^^^^^^^^^
  ╵
    resources\css\layouts\_variables.scss 9:1  @use
    resources\css\app.scss 3:1                 root stylesheet

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

https://sass-lang.com/documentation/at-rules/use#choosing -a-namespace

Вы можете изменить тег использования на что-то вроде

@use 'layouts/variables' as *;

или

@use 'layouts/variables';

//and then
input
{
    border: 1px solid variables.$ds-black;
}
0 голосов
/ 28 февраля 2020

Если вы хотите использовать новую систему модулей Sass и иметь таблицы стилей, которые используются только как модули и не должны компилироваться сами по себе, вы должны присвоить вашим модулям начальные символы "_", чтобы компилятор знал, что к ним следует относиться как к обертоны. Тогда у вас есть эти два варианта, показал вам Кени Ларчер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...