Vue中使用stylus全局引入不生效的问题

Vue中使用stylus全局引入不生效的问题

问题描述

比如说,
一、我们在 App.vue 里面:

<style lang="stylus">
@import "./style/main.styl"
</style>

  
  

main.styl 里面定义了两个变量,我们想象的是,在所有的 .vue 文件中都可以使用 main.styl 中的变量。

但现实的情况是:并没有生效

二、还有一种情况是:在 main.jsimport "@/style/main.styl";我们期望的结果是:项目中的每个 .vue 文件 style 里面可以直接使用 main.styl 里面定义的变量。

但现实的情况是:并没有生效

难受啊≧ ﹏ ≦

那么、如何配置 stylus 的全局变量使用方式

解决方案一

定义一个 css 变量文件:variable.styl,在你想要使用 css 变量的文件中,引入它。 【简单、易用】

但是如果使用频率很高的话,你可能不喜欢这种方式。

解决方案二

vue-cli2 的模版中:

// webpack.config.js
plugins: [
  new webpack.LoaderOptionsPlugin({
    options: {
      stylus: {
        import: [path.resolve(__dirname, '../src/stylus/main.styl')]
      }
    }
  })
]

  
  

vue-cli3 及以上版本的脚手架模版中:

// vue.config.js
var path = require('path');
module.exports = {
  css: {
    loaderOptions: {
      stylus: {
        import: [path.resolve(__dirname, "src/stylus/main.styl")]
      }
    }
  }
}

  
  

解决方案三

借助于配置文件 build/utils.js 解决该问题

// 在generateLoaders方法的后面!后面!后面!(说三遍呀!)定义如下变量
const stylusOptions = {
  import: [
    path.join(__dirname, "../src/styls/main.styl")
  ]
}
// 在紧接着的return返回值中进行配置
return {
  css: generateLoaders(),
  postcss: generateLoaders(),
  less: generateLoaders('less'),
  sass: generateLoaders('sass', { indentedSyntax: true }),
  scss: generateLoaders('sass'),
  stylus: generateLoaders('stylus', stylusOptions),
  styl: generateLoaders('stylus', stylusOptions)
}

  
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值