vue引入sass并且配置全局变量
第一步 安装 sass-loader 因为在我本地安装最新的sass-loader时会报错:this.getResolve is not a function 查阅资料发现是sass-loader版本过高导致的,所以我这里安装了7.3.1版本的,问题解决,并不会报错.
因为目前高版本的node.js 不适用node-sass,所以更换为sass

如果你的项目之前有安装过node-sass,请先卸载
npm uninstall node-sass
再安装sass
npm install sass@1.26.5 --save-dev
将sass-loader版本调低一点
npm install sass-loader@7.3.1
npm run dev 再运行一下就可以了
第二步 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/style/' + name);
}
function generateSassResourceLoader() {
var loaders = [
cssLoader,
'sass-loader',
{
loader: 'sass-resources-loader',
options: {
// 多个文件时用数组的形式传入
resources: [resolveResource('common.scss'),resolveResource('index.scss')]
}
}
];
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(loaders)
}
}
我这里引入了两个scss文件 common.scss 和 index.scss

引入css之后把vue-cli默认的配置修改
修改默认配置
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')
}
如果你只是编译一个文件的话,上面的函数你可以直接省略 在 build 文件夹下找到 util.js 按照下面的修改sass编译器loader的配置
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/style/common.scss') //这里是单独建的存放变量的scss
}
}),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
修改完配置后重启一下服务,就可以在common.scss定义全局变量并且在全局页面中使用(无需在main.js或者app.vue中引入)
你可以在common.scss中这样定义:
$baseColor:'#377CFF';
$baseFontSize:16px;
你可以在任意页面引用 例如 home.vue中这样引用
.testColor{
color: $baseColor;
font-size: $baseFontSize;
}
参考文章:Vue引入sass并配置全局变量
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)