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;
引用变量的时候直接引用变量名即可。
网友评论