Используйте собственный SCSS с Bootstrap-Vue + Webpack + Vue.js

Я создаю приложение, используя VueJS с Bootstrap-Vue. Я пытаюсь импортировать файл SCSS, чтобы переопределить переменные Bootstrap, а также другой SCSS для пользовательских стилей.

Вот что у меня есть на данный момент:

  • Установлены node-sass, sass-loader и css-loader.

npm install node-sass sass-loader css-loader --save-dev

  • В build / webpack.base.conf.js добавлено следующее:

{ test:/\.(s*)css$/, use:['style-loader','css-loader', 'sass-loader']}

  • Создал файл SCSS в src / assets / scss / app.scss

main.js

import Vue from 'vue'
import BootstrapVue from 'bootstrap-vue'
import App from './App'
import router from './router'
import fontawesome from '@fortawesome/fontawesome'
import light from '@fortawesome/fontawesome-pro-light'

Vue.use(BootstrapVue)

Vue.config.productionTip = false

fontawesome.library.add(light)

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

<style lang = "scss">
  @import './assets/scss/app.scss';
</style>

Когда я запускаю npm run dev, я получаю следующую ошибку:

ERROR  Failed to compile with 1 errors                                                      21:05:54

 error  in ./src/main.js

Syntax Error: Unexpected token, expected ; (29:7)

  27 | })
  28 |
> 29 | <style lang = "scss">
     |        ^
  30 |   @import './assets/scss/app.scss';
  31 | </style>
  32 |



 @ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js

    fontawesome.library.add(light)

    /* eslint-disable no-new */
    new Vue({
      el: '#app',
      router,
      components: { App },
      template: '<App/>'
    })

    <style lang = "scss">
      @import './assets/scss/app.scss';
    </style>

Я не уверен, почему это не работает. Я пробовал различные решения на Github и Stack Overflow.

Любая помощь будет оценена по достоинству.

Ваш файл - file.js, и вам нужно использовать компонент Single file, чтобы иметь возможность использовать scss так, как вы намеревались. Вместо этого вам нужно преобразовать ваш файл в file.vue, тогда вы сможете использовать <template /> <script /> <style />

Nephelococcygia 28.05.2018 14:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
1
6 807
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не можете написать тег стиля в javascript таким образом. Вам нужно либо переместить его в файл vue и прикрепить к нему загрузчик, либо использовать стандартный импорт:

import './assets/scss/app.scss';

Без тегов style или символа @.

Мне также пришлось удалить { test:/\.(s*)css$/, use:['style-loader','css-loader', 'sass-loader']} из build / webpack.base.conf.js.

Kumaran S 29.05.2018 14:25

Я добавил файл assets / scss / app.scss и получаю ОШИБКУ «Этот относительный модуль не найден: ./assets/scss/app.scss в ./src/main.js»

Cichy 13.10.2018 12:57

@Cichy Там не так много информации, я не знаю, как выглядит ваша структура каталогов.

Ohgodwhy 14.10.2018 05:30

Другие вопросы по теме