Madeas
@Madeas
UI / UX Designer, Frontend Developer

Как подключить SCSS во vue.config.js для Vue CLI?

Привет всем!
Нужна помощь с подключением стилей. Собираю проект на vue cli (vue create...)

Что только не перепробовал, не работает. Текущие файлы выглядят так:

vue.config.js
const path = require("path");

module.exports = {
  pluginOptions: {
    "style-resources-loader": {
      preProcessor: "sass",
      patterns: [path.resolve(__dirname, "./src/assets/sass/utils/*.scss")] //- здесь ресет, переменные и миксины
    }
  }
};


содержимое компонентов:


Ошибка:
Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
SassError: Undefined variable: "$white".
        on line 26 of D:\Development\Vue-cli\next-po\src\components\Footer.vue
>>   color: $white;


То есть, вью конфиг не подцепил стили.

Этот вариант тоже не сработал
module.exports = {
  css: {
    loaderOptions: {
      scss: {
        prependData: `@import "~@/assets/sass/base.scss";`
      }
    }
  }
};


Так же, есть файл с базовыми стилями в другой папке ./src/assets/sass/base.scss, который собирает импорты миксинов и переменных. Хотелось бы его тоже подключить, но ни как.

При попытке импорта напрямую в компонент, через

консоль ругается на первый импорт. Да и в каждом компоненте подключать переменные это бред...

Подскажите, как правильно подключить стили глобально?
  • Вопрос задан
  • 9924 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 2
alexbuki
@alexbuki
программист js
По сути они уже преднастроены. Внутренняя конфигурация webpack настроена для их использования.
У вас установлены загрузчики?
npm install -D sass-loader node-sass
Ответ написан
profesor08
@profesor08
Там все уже за тебя сделано, настроено и работает.

<style lang="scss">
$color: red;

.link {
  color: $color;
}
</style>


Что же касается инжекта файлов в компоненты, то есть два пути. Вручную и вот так:
const vueConfig = {
  css: {
    loaderOptions: {
      sass: {
        data: `
          @import "@/assets/scss/layout/_functions.scss";
          @import "@/assets/scss/layout/_mixins.scss";
        `,
      },
    },
  },
};


А то, что у тебя ругается на первый импорт, это значит ты указал кривой путь для этого импорта.

В любом случае подобный инжект сильно сказывается на производительности во время разработки. Наиболее комфортным выходом будет вынос стилей из компонентов отдельно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы