Sass / Vue: «правила @use должны быть написаны перед любыми другими правилами»

#vue.js #sass #vuetify.js

#vue.js #sass #vuetify.js

Вопрос:

Пытаясь импортировать «sass: colors» в мою таблицу стилей colors.scss, я получаю SassError: «правила @use должны быть написаны перед любыми другими правилами», хотя это первая строка моего файла. Я подозреваю, что строка обрабатывается Vue с опозданием после какой-то компиляции Sass.

В моем корневом каталоге находится мой vue.config.js где у меня есть

 module.exports = {
  ...
  css: {
    loaderOptions: {
      scss: {
        prependData: `
          @import "~@/styles/colors.scss";
          @import "~@/styles/overrides.scss";
        `,
      },
    },
  },
  ...
}
  

Затем в src / styles / у меня есть colors.scss и overrides.scss, где я импортирую цвета в overrides. Наконец, у меня также есть src / plugins /vuetify.ts, куда я импортирую цвета (после Vue и Vuetify) для использования в пользовательской теме.

Есть идеи, как правильно импортировать модуль sass: colors, чтобы избежать ошибки SassError?

Ответ №1:

SassError: «правила @use должны быть написаны перед любыми другими правилами», поэтому измените свои первые правила на @use

 module.exports = {
  ...
  css: {
    loaderOptions: {
      scss: {
        additionalData: `
          @use "@/styles/colors.scss" as *;
          @use "@/styles/overrides.scss" as *;
        `,
      },
    },
  },
  ...
}
  

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

1. Что, если я не хочу, чтобы модуль загружался в каждый отдельный файл scss?

2. Спасибо, эти строки работают отлично. Откуда вы знаете о @use "foo.scss" as * ? Текущие документы в командной строке Vue все еще используют @import

3. @RoyMargasa это дерзкая штука, с которой Vue и Vuetify могут быть не в курсе