如何在vite/vue3中使用其他组件的sass全局变量

问题描述 投票:0回答:3

我想使用和更改其他组件的全局变量,我的文件结构如下所示...

enter image description here

我的变量位于 global.sass 文件中,但我无法访问其他组件中的变量。

vue.js variables sass vuejs3 vite
3个回答
33
投票

您需要设置配置文件

vite.config.js

css: {
  preprocessorOptions: {
    scss: {
      additionalData: `@import "@/assets/global.scss";`
    }
  }
},

对于本地字体,您可以在那里添加另一个配置,设置别名:

resolve: {
  alias: {
    '@': path.resolve(__dirname, 'src'),
  }
},

然后使用它,例如:

@font-face {
  font-family: 'Opensans-Bold';
  font-style: normal;
  src: local('Opensans-Bold'), url(@/assets/fonts/OpenSans-Bold.woff2) format('woff2');
}

10
投票

一个新的 sass 模块系统

注意:Sass 团队不鼓励继续使用 @import 规则。萨斯 将在未来几年内逐步淘汰它,并最终将其完全从语言中删除。更喜欢 @use 规则。 (请注意,目前只有 Dart Sass 支持 @use。其他实现的用户必须改用 @import 规则。)

更多详情:这里

下面是当时全局scss最好的方式

vite.config.js

export default defineConfig({
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "~/styles/_main.scss" as *;`,
      },
    },
  },
  plugins: [vue()],
});

样式/摘要/_colors.scss

$default: #000000;
$default-light: #333333;
$default-dark: #000000;

样式/摘要/index.scss

@forward './colors';
@forward ...

样式/_main.scss

@forward './abstracts';
@forward './components';
@forward './layouts';

src/index.scss => 不要忘记在
import "./index.scss"
 中添加这个 
App.vue

@forward './styles/abstracts';
@use './styles/abstracts' as *;

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  font-size: 62.5%;
}

body {
  font-family: $font-primary;
  font-size: 1.6rem;
  line-height: 1.5;
  text-rendering: optimizespeed;
  color: $text;
  overflow-y: overlay;
}

0
投票

错误:模块循环:该模块已被加载。 ╷ 1 │ @use '@/shared/assets/styles/global.scss' as *;@forward "./core";

我的推荐有此错误 Vue 3,维特 dev 命令正常工作但构建抛出此错误

复制请看

npx @gurovdmitriy/be-boilerplate-stack@latest

© www.soinside.com 2019 - 2024. All rights reserved.