webpack - 如何使用 Vuetify 的 Stylus CSS 类作为混入?

标签 webpack vue.js stylus vuetify.js

我想使用 Vuetify 的 CSS 类作为混入。为此,我使用了 @extends Stylus 指令。在 MyComponent.vue 中:

<style scoped lang="styl">
.title {
  @extends .display-3;
}
</style>

如您所见,我没有在每个组件的样式中导入 Vuetify。为了完成这项工作,我配置了 webpack 以在我的应用程序的每个 Stylus block 中加载 Vuetify 的 Stylus 样式。在 webpack.config.js 中:

module.exports = {
  /* ... */
  plugins: [
    /* ... */
    new webpack.LoaderOptionsPlugin({
      options: {
        stylus: {
          import: path.join(
            __dirname,
            'node_modules/vuetify/src/stylus/main.styl',
          ),
        },
      },
    }),
  ],
};

但是 Vuetify 的文档 says clearly :

DO NOT import your main.styl inside of a component. This will cause performance issues and drastically slow down hot module reloading.

看起来我通过这种方式配置 webpack 已经打破了这个规则。在任何组件上应用每个更改现在大约需要五秒钟。我认为这是因为 Vuetify 正在每个组件中重建。

有没有一种方法可以将 Vuetify 的 Stylus 样式用作混入,而无需在每个组件上重建 Vuetify?

最佳答案

注意:以下应该有效,但适用于全局样式,而不是作用域样式。


创建自定义样式文件(例如styles/main.styl)

// main.styl 
@import "~vuetify/src/stylus/main.styl";

.my-class {
  @extend .display-3
  color: red;
}

然后在您最初导入 vuetify 样式的地方,将其替换为新的自定义样式文件的路径。

// main.js (or vuetify.js or wherever you'd imported it)  
import '@/styles/main.styl'

然后你可以在你的组件中使用.my-class类。

关于webpack - 如何使用 Vuetify 的 Stylus CSS 类作为混入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51770369/

相关文章:

javascript - Vue中根据数据更改表格单元格的背景

javascript - v-img 仅在与常规 img HTML 标记一起使用时出现在 v-for 循环中

javascript - Url Loader,加载我的背景图片一次,然后在刷新页面后它无法显示

node.js - 带有 sass-loader 的 Webpack 文件加载器

javascript - 观察数据变化

node.js - stylus.render 函数中的文件名选项有什么作用?

stylus - 用于 CSS 选择器名称的手写笔中的 for 循环

javascript - Webpack sequelize,sqlite3 错误找不到模块 sqlite3

Angular 2。异常 : No Directive annotation found on Alert

css - 使用排水沟时如何防止柱子断裂,Jeet