如何在不使用 Vue CLI 的情况下覆盖 Vuetify 2 变量
How to override Vuetify 2 variables without using Vue CLI
vuetify 文档仅提供了在 vue.config.js
中使用 vue-cli 配置注入 sass 变量的示例
https://vuetifyjs.com/en/customization/sass-variables#markup-js-vue-config-sass-variables
不使用 CLI 时提供修改后的 vuetify 变量的正确方法是什么?
我正在将一个旧项目从 v1(手写笔)升级到 v2(sass),我需要覆盖一些变量,假设我只需要将字体系列更改为 Arial。
我也在使用 treeshaking 和 vuetify。
现在我有点卡住了,因为我不知道在哪里导入样式覆盖...在 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-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<8.0.0
options: {
implementation: sass,
fiber: fibers,
data: `@import "~/styles/main.scss"`,
},
vuetify 文档仅提供了在 vue.config.js
中使用 vue-cli 配置注入 sass 变量的示例
https://vuetifyjs.com/en/customization/sass-variables#markup-js-vue-config-sass-variables
不使用 CLI 时提供修改后的 vuetify 变量的正确方法是什么?
我正在将一个旧项目从 v1(手写笔)升级到 v2(sass),我需要覆盖一些变量,假设我只需要将字体系列更改为 Arial。
我也在使用 treeshaking 和 vuetify。
现在我有点卡住了,因为我不知道在哪里导入样式覆盖...在 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-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<8.0.0
options: {
implementation: sass,
fiber: fibers,
data: `@import "~/styles/main.scss"`,
},