vue.js - 在 Vue 应用程序中导入全局 scss 样式以及单独的 mixin 和变量 scss 文件

标签 vue.js sass

我正在使用 scss 构建 Vue 3 应用程序。我有 3 个样式表文件 - _mixins.scss_variables.scssbase.scss。当我读到 here 时,我正在 vue.config.js 中导入 mixins 和变量文件。 ,因此我可以在所有其他组件中使用这些 mixin 和变量,而无需在所有组件中手动导入它们。

但是,我还有 base.scss 文件,我想在其中为我的网站提供全局样式(例如标题的通用样式等)。我不想在 vue.config.js 中导入此文件,因为这意味着该文件将重复包含在我的所有组件中。所以我尝试通过 @use "styles/base"; 将其导入到 App.vue 中,或者使用 import 在 main.js 中导入它“样式/base.scss”;

不幸的是,在这两种情况下,Sass 编译器都会抛出此错误:

Syntax Error: SassError: @use rules must be written before any other rules.
  ╷
6 │ @use "styles/base";
  │ ^^^^^^^^^^^^^^^^^^
  ╵
  D:\PWND\pwnd_ui_poc_js\src\App.vue 6:1  root stylesheet

我真的不知道,我应该如何正确地做到这一点。为了完整起见,我包含了文件的基本结构:

// _variables.scss
$baseGreen: #24ff00;

// _mixins.scss
@forward "variables";

@mixin section-heading {
  color: $baseGreen;
}

// base.scss
@forward "mixins";
@forward "variables";

.section {
  color: $baseGreen;
  
  &-heading {
    @include section-heading();
  }
}

如果您有任何想法,我应该如何正确地执行此操作,我将非常感谢您的帮助。谢谢你! :)

最佳答案

我正在使用该配置来加载任何组件的全局变量:

vue.config.js

module.exports = {
  css: {
    loaderOptions: {
      sass: {
        prependData: `@import '@/scss/_variables';`,
      }
    }
  },
}

关于vue.js - 在 Vue 应用程序中导入全局 scss 样式以及单独的 mixin 和变量 scss 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66438452/

相关文章:

每个 <g> 的 CSS 动画 'origin'

css - 您可以在@media 查询中重新定义@mixin 吗?

css - 标准 yeoman webapp 设置中的 compass 无法正确呈现线性渐变

javascript - 远程应用程序服务器后面的 Vuepress 为带有 iframe 的页面提供 404

vue.js - VeeValidate v3 : How to handle backend validation messages?

javascript - 将 Convertflow 脚本限制到特定页面

css - SCSS 到 CSS - 如何修复媒体查询

javascript - 如何在 VueJS 的 promise 中设置数组对象属性的值?

javascript - 如何将呈现的 HTML 传递给 vue 属性?

css - Zurb 基金会 : Nav Bar disappears for small range of screen sizes