sass变量引入全局

Posted wang-sai-sai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sass变量引入全局相关的知识,希望对你有一定的参考价值。

https://www.jianshu.com/p/ab9ab999344b(copy)

 

本文以Sass做案例,Less的参考,基本配置大同小异。
假如我们有一个Sass的全局变量common.scss文件,路径 ../style/common.scss 代码如下:

@mixin t-button($color,$background) 
    color:$color;
    background:$background;
    padding:5px 10px;

现在我们想在一个vue文件里引用这个全局样式,怎么办呢?我们能按下边的方法导入。

<style>
@import ‘../style/common.scss‘;
button
  @include t-button(#fff,blue);

</style>

但是这样有一个问题,如果还有其他vue页面也想用这个全局的common.scss文件,我们还需要在使用的vue页面里再次按照上面的方法引入,那么问题来了,如果我更改了这个common.scss文件的路径,那么每次我还要去修改所有的vue页面里的common.scss文件文件路径。有什么好的方法呢,让我一次引入,所有的vue页面均可以自动引用?
1.添加依赖

npm install sass-resources-loader --save-dev

在项目build文件夹里找到utils.js ,定位到下边代码

return 
    css: generateLoaders(),
    postcss: generateLoaders(),
    less: generateLoaders(‘less‘),
    sass: generateLoaders(‘sass‘,  indentedSyntax: true ),
    scss: generateLoaders(‘sass‘),
    stylus: generateLoaders(‘stylus‘),
    styl: generateLoaders(‘stylus‘)
  

把上面这句scss: generateLoaders(‘sass‘),改成如下

scss: generateLoaders(‘sass‘).concat(
      
        loader: ‘sass-resources-loader‘,
        options: 
          resources: path.resolve(__dirname, ‘../src/assets/css/all.scss‘)//这里按照你的文件路径填写
        
      
    )

OK,完成,修改后的代码是

return 
    css: generateLoaders(),
    postcss: generateLoaders(),
    less: generateLoaders(‘less‘),
    sass: generateLoaders(‘sass‘,  indentedSyntax: true ),
    scss: generateLoaders(‘sass‘).concat(
      
        loader: ‘sass-resources-loader‘,
        options: 
          resources: path.resolve(__dirname, ‘../src/assets/css/all.scss‘)//这里按照你的文件路径填写
        
      
    ),
    stylus: generateLoaders(‘stylus‘),
    styl: generateLoaders(‘stylus‘)
  

这样就可以在所有的scss文件或者vue文件运用全局的scss,而不需要在单独引入。

 

以上是关于sass变量引入全局的主要内容,如果未能解决你的问题,请参考以下文章

[Sass]局部变量和全局变量

less 全局变量使用

全局SASS/SCSS变量在Vue项目中应用解决方案

Storybook 全局 Scss 变量

Next.JS:使用全局 scss 中的 SASS 变量

Nuxtjs如何在所有sass文件中添加全局环境变量