美文网首页
Vue引入sass并配置全局变量

Vue引入sass并配置全局变量

作者: 秃头大叔 | 来源:发表于2019-02-24 15:52 被阅读0次

    Vue配置sass全局变量

    配置sass全局变量
    前置如何引入sass不做介绍
    遇到问题:在main.js中引入sass文件,定义了基础全局变量,在vue文件中使用报错。
    解决:
    loader:sass-resources-loader可以访问sass资源任何一个需要访问的sass模块。所以,可以使用共享变量和混合所有SASS样式,而不去每个文件都引用。
    首先进行插件安装:
    npm install --save-dev sass-resources-loader

    然后在 build 文件夹下找到 util.js 修改sass编译器loader的配置,直接把下面的代码复制进去即可:
    // 全局文件引入 当然只想编译一个文件的话可以省去这个函数

    function resolveResource(name) {
      return path.resolve(__dirname, '../src/assets/css/' + name);
    }
    function generateSassResourceLoader() {
      var loaders = [
        cssLoader,
        'sass-loader',
        {
          loader: 'sass-resources-loader',
          options: {
            // 多个文件时用数组的形式传入,单个文件时可以直接使用 path.resolve(__dirname, '../assets/css/index.scss'
            resources: [resolveResource('index.scss')]  
          }
        }
        ];
        if (options.extract) {
          return ExtractTextPlugin.extract({
            use: loaders,
            fallback: 'vue-style-loader'
          })
        } else {
          return ['vue-style-loader'].concat(loaders)
        }
      }
    
    将默认的sass配置改为 generateSassResourceLoader()。
    return {
        css: generateLoaders(),
        postcss: generateLoaders(),
        less: generateLoaders('less'),
        // vue-cli默认sass配置
        // sass: generateLoaders('sass', { indentedSyntax: true }), 
        // scss: generateLoaders('sass'),
        // 新引入的sass-resources-loader
        sass: generateSassResourceLoader(),
        scss: generateSassResourceLoader(),
        stylus: generateLoaders('stylus'),
        styl: generateLoaders('stylus')
      }
    

    改完配置后重启服务就可以在index.scss里定义全局变量并在页面中引用了(无需在main.js里再引入)。
    可以在index.scss里这样定义:

    $base-color: #3296fa;
    $text-color: #da3838;
    

    引用变量的时候直接引用变量名即可。

    相关文章

      网友评论

          本文标题:Vue引入sass并配置全局变量

          本文链接:https://www.haomeiwen.com/subject/jkcbyqtx.html