无法覆盖 Vuetify 2.1 SASS 变量

Unable to override Vuetify 2.1 SASS variables

我已经解决这个问题好几个小时了,还是想不出解决方案。我查看了其他几篇似乎相关的 Whosebug 帖子(以及 Vuetify docs),但似乎没有任何内容适合我。首先,我只是尝试将字体系列从默认的 Roboto 更改为 Avenir。我没有收到控制台错误或服务器错误。

@/styles/variables.scss

@import "~vuetify/src/styles/styles.sass";
$font-size-root: 14px;

@import "~vuetify/src/styles/settings/variables";
$body-font-family: 'Avenir Next', 'Lato', Roboto, 'Helvetica Neue', Helvetica, Arial, sans-serif; // $main-font comes from my own ./_variables.scss.
$heading-font-family: 'Avenir Next', 'Lato', Roboto, 'Helvetica Neue', Helvetica, Arial, sans-serif; // $title-font comes from my own ./_variables.scss.

@/plugins/vuetify.js

import 'material-design-icons-iconfont/dist/material-design-icons.css';
import Vue from 'vue';
import Vuetify from 'vuetify/lib';
import 'vuetify/dist/vuetify.min.css';

Vue.use(Vuetify);

export default new Vuetify({
  theme: {
    options: {
      customProperties: true,
    },
    themes: {
      light: {
        primary: '#4A90E2',
        darkPrimary: '#3B73B4',
        secondary: '#424242',
        accent: '#82B1FF',
        error: '#a70000',
        info: '#2196F3',
        success: '#4CAF50',
        warning: '#FFC107',
        teal: '#64EBC6',
        green: '#7ED321',
        darkGreen: '#4c8f1d',
        lightGrey: 'rgba(0,0,0,0.12)',
        darkGrey: '#4A4A4A',
        textSecondary: 'rgba(0,0,0,0.4)',
      },
    },
  },
  icons: {
    iconfont: 'md',
  },
});

@/vue.config.js

module.exports = {
  transpileDependencies: [
    'vuetify',
  ],
  configureWebpack: {
    resolve: {
      // alias: {
      //   '~': path.resolve(__dirname, '../frontend/src'),
      // },
      extensions: ['*', '.js', '.vue', '.json'],
    },
  },
  // css: {
  //   loaderOptions: {
  //     scss: {
  //       prependData: '@import "@/styles/main.scss;"',
  //     },
  //   },
  // },
  // chainWebpack: config => {
  //   ['vue-modules', 'vue', 'normal-modules', 'normal'].forEach(match => {
  //     config.module.rule('scss').oneOf(match).use('sass-loader')
  //       .tap(opt => Object.assign(opt, { data: `@import '@/styles/main.scss'; ` }));
  //   });
  // },
};

如有任何帮助,我们将不胜感激!

好吧,在我发布这个问题 6 分钟后,我在 vuetify 插件中注释掉了 import 'vuetify/dist/vuetify.min.css 行,这似乎正确地使用了我正在寻找的 Avenir 字体。相当经典。希望这对其他人有帮助!

在导入 Vuetify 之前设置所有顶级变量,这样 Vuetify 就不会覆盖。

在 Vuetify 之前设置这些变量

$font-size-root: 14px;
$body-font-family: 'Avenir Next', 'Lato', 'Helvetica Neue', Helvetica, Arial, sans-serif; 
$heading-font-family: 'Avenir Next', 'Lato', 'Helvetica Neue', Helvetica, Arial, sans-serif; 

然后,import _variables.style 以便您可以覆盖嵌套值:

@import '~vuetify/src/stylus/settings/_variables'

现在 $material-dark 散列存在,设置背景

$material-dark.background = 'green'

然后,导入 main.style 以便创建 Vuetify CSS 类。