【问题标题】:How to override Vuetify 2 variables without using Vue CLI如何在不使用 Vue CLI 的情况下覆盖 Vuetify 2 变量
【发布时间】:2020-01-04 17:28:25
【问题描述】:

vuetify 文档仅在vue.config.js 中提供了使用 vue-cli 配置注入 sass 变量的示例 https://vuetifyjs.com/en/customization/sass-variables#markup-js-vue-config-sass-variables

不使用 CLI 时提供修改后的 vuetify 变量的正确方法是什么?

我正在将一个旧项目从 v1 (stylus) 升级到 v2 (sass),我需要覆盖一些变量,假设我只需要将 font-family 更改为 Arial。

我也在 vuetify 中使用 treeshaking。

现在我有点卡住了,因为我不知道在哪里导入样式覆盖...在 src/main.ts 中导入这些显然不起作用。

我在这里创建了一个最小的复制:https://github.com/Sharsie/vuetify-theme-repro/

到目前为止,我拥有的是 build 目录中的 webpack 配置和 src/styles/main.scss 中的样式覆盖

$body-font-family: Arial;

@import "~vuetify/src/styles/styles.sass";

运行项目会创建一个简单的页面,打印出 v-app 容器的计算样式

  <v-app id="app">
    <v-container>
      <v-content>
        <p>Wanted font-family: Arial</p>
        <p>Current font-family: {{ fontFamily }}</p>
      </v-content>
    </v-container>
  </v-app>

【问题讨论】:

    标签: vue.js vuetify.js vue-cli


    【解决方案1】:

    在挖掘 vue-cli 的源代码后,我发现配置只是传递给sass-loader 选项,所以解决方案非常简单:

    而不是像这样通过vue.config.js 为样式表提供变量:

    module.exports = {
      css: {
        loaderOptions: {
          sass: {
            data: `@import "~@/styles/main.scss"`,
          },
        },
      },
    }
    

    你可以像这样直接将它提供给 webpack 配置中的 sass-loader 选项:

    module.exports = {
      ...
      module: {
        rules: [
        ...
        {
          test: /\.(s?c|sa)ss$/,
          use: [
            'vue-style-loader',
            'css-loader',
            {
              loader: 'sass-loader',
              options: {
                implementation: sass,
                sassOptions: {
                  fiber: fibers,
                },
                prependData: `@import "~/styles/main.scss"`,
              },
            },
          ],
        }
        ...
        ]
      }
      ...
    }
    

    或者对于 sass-loader

                options: {
                  implementation: sass,
                  fiber: fibers,
                  data: `@import "~/styles/main.scss"`,
                },
    
    

    【讨论】:

    • 谢谢!您的评论为我节省了大量时间!
    猜你喜欢
    • 2022-06-23
    • 2019-06-29
    • 2018-03-11
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 2022-12-16
    • 2016-06-01
    • 2017-10-26
    相关资源
    最近更新 更多