Vue引入sass并配置全局变量

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并配置全局变量)