如何将 scss 导入到我的 Vue 组件中?

Mic*_*ael 8 laravel vue.js laravel-mix

我正在尝试将 app.scss 导入到 application.vue 中,但不断收到别名 sass 无法识别的错误。我在网上查看了如何将别名添加到我的混合文件中,我有以下 webpack.mix.js。在我的 vue 组件中,我有以下代码

<style lang="scss">
    @import 'sass/app.scss';
    html, body{
        margin: 0px;
        padding: 0px;
        background-color: $secondary-color;
    }
</style>
Run Code Online (Sandbox Code Playgroud)

在我的 webpack.mix.js 中

const mix = require('laravel-mix');

mix.webpackConfig({
   resolve: {
      alias: {
         '@': path.resolve(__dirname,'/resources/js'),
         'sass': path.resolve(__dirname, '/resources/assets/sass')
      },
   },
});

mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css');
Run Code Online (Sandbox Code Playgroud)

我尝试将别名更改为,~但没有成功。我在这里做错了什么?

Naj*_*Hoq 5

只需按照以下方式将 scss 文件导入到所选组件中即可。这个对我有用。我希望它能帮助你

<style lang="scss" scoped>
  @import "./path/app.scss"; //Here i add extra "./"(current directory)
</style>
Run Code Online (Sandbox Code Playgroud)


Wes*_*per 1

我使用了两种不同的方法。

  1. 使用样式资源加载器

在你的vue.config.js

{
  //...
  pluginOptions: {
    'style-resources-loader': {
      preProcessor: 'scss',
      patterns: [resolve(__dirname, 'src/path/to/css/*.scss')],
    },
  },
  //...
}
Run Code Online (Sandbox Code Playgroud)
  1. 导入文件scss中的文件main.js,看起来就像:import './styles/path/to/file/app.scss';作为文件顶部的 js 导入。

这两种方法都可以scss在全局范围内有效地使用您的文件,而无需导入每个单独的组件。