Arn*_*nie 0 vue.js vuetify.js vue-cli
vuetify 文档仅提供了使用https://vuetifyjs.com/en/customization/sass-variables#markup-js-vue-config-sass-variables 中的vue-cli 配置注入 sass 变量的示例vue.config.js
不使用 CLI 时提供修改后的 vuetify 变量的正确方法是什么?
我正在将一个旧项目从 v1(手写笔)升级到 v2(sass),我需要覆盖一些变量,假设我只需要将字体系列更改为 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";
Run Code Online (Sandbox Code Playgroud)
运行项目创建一个简单的页面,打印出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>
Run Code Online (Sandbox Code Playgroud)
在挖掘了 vue-cli 的源代码后,我发现配置只是传递给sass-loader选项,所以解决方案非常简单:
而不是通过vue.config.js如下方式为样式表提供变量:
module.exports = {
css: {
loaderOptions: {
sass: {
data: `@import "~@/styles/main.scss"`,
},
},
},
}
Run Code Online (Sandbox Code Playgroud)
您可以直接将它提供给 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"`,
},
},
],
}
...
]
}
...
}
Run Code Online (Sandbox Code Playgroud)
或者对于 sass-loader<8.0.0
options: {
implementation: sass,
fiber: fibers,
data: `@import "~/styles/main.scss"`,
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2904 次 |
| 最近记录: |