Vue scss 引入变量报错

本文介绍如何在Vue项目中实现CSS预编译语言(Sass/Less/Stylus)的全局变量引用。通过三种方法:css.loaderOptions、chainWebpack及pluginOptions,实现变量在项目的全局可用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官网css引入配置

参考文章

我在项目里自定义了vue.config.js的rules关于scss的loader所以我是直接子啊loader配置options就可以

 
  1. {

  2. test: /\.scss$/,

  3. loader: "sass-loader",

  4. options: {

  5. additionalData: `@import "@/theme/var.scss";`,

  6. }

  7. }

关于cass的options配置属性名不同版本会有不同定义,具体要看自己的版本

如果不是自定义了loader可以使用下面的配置来实现loader的加载项 

sass/scss篇



sass/scss文件与vue组件样式代码

 
  1. /* variable.scss */

  2. $color: orange;

  3. // vue组件内的style标签,将要使用上述变量的地方

  4. <style lang="scss">

  5. .scss div {

  6. color: $color;

  7. }

  8. </style>

sass 全局变量引入方法一

使用css.loaderOptions
此处友情提示 sass-loader v7 之前使用 data:’’ 之后使用prependData:‘’请根据项目sass-loader版本选择
重点提示!!!! 引用处分号“;”不能缺少,缺少直接报错,因为此方法是直接插入语句块至项目中使用sass语法的标签内,sass语法强制必须使用分号“;”结尾,更详细讲解请参考vue-cli官方文档。
 

 
  1. module.exports = {

  2. css: {

  3. loaderOptions: {

  4. sass: {

  5. // data:`@import "~@/assets/variable.scss";` v7之前使用 的是data,现在改成了prependData

  6. prependData: `@import "~@/assets/variable.scss";`

  7. /* prependData: `

  8. @import "~@/assets/variable.scss";

  9. @import "~@/assets/variable2.scss";

  10. ` */

  11. }

  12. }

  13. }

  14. }

sass 全局变量引入方法二

使用chainWebpack
根据使用方法选择安装插件 style-resources-loader或者sass-resource-loader
友情提醒:**patterns: “./src/assets/variable.scss”**引用的scss文件,如果文件内语法存在问题,也会直接报错,此处不需要在引用处最后添加分号“;”,文件内请根据sass与scss语法规则编辑,如果我没有料错,此方法应该是把引用文件的内容插入目标文件,而非上文方法提到的插入一个import
使用方法代码如下:

 
  1. module.exports = {

  2. chainWebpack: config => {

  3. // 需要安装 style-resources-loader 插件

  4. const oneOfsMap = config.module.rule("scss").oneOfs.store;

  5. oneOfsMap.forEach(item => {

  6. item

  7. .use("style-resources-loader")

  8. .loader("style-resources-loader")

  9. .options({

  10. // 需要插入的文件路径

  11. patterns: "./src/assets/variable.scss"

  12. // 需要插入的文件路径数组

  13. // patterns: ["./path/to/vars.styl", "./path/to/mixins.styl"]

  14. })

  15. .end();

  16. });

  17. // 也可以使用 sass-resource-loader 插件

  18. // const oneOfsMap = config.module.rule("scss").oneOfs.store;

  19. // oneOfsMap.forEach(item => {

  20. // item

  21. // .use("sass-resources-loader")

  22. // .loader("sass-resources-loader")

  23. // .options({

  24. // // 需要插入的文件路径

  25. // resources: "./src/assets/variable.scss"

  26. // // 需要插入的文件路径数组

  27. // // resources: ["./path/to/vars.scss", "./path/to/mixins.scss"]

  28. // })

  29. // .end();

  30. });

  31. }

  32. }

sass 全局变量引入方法三

使用pluginOptions
需要执行 vue add style-resources-loader命令
命令执行会自动安装 vue-cli-plugin-style-resources-loader会自动提示使用什么预编译语言、会根据你选择的自动配置,只需要填写 引用文件的路径
友情提示:如果使用此方法安装了以上插件,而又放弃这种方案,编译时可能会报错,可以npm uninstall vue-cli-plugin-style-resources-loader 卸载此插件。
 

 
  1. const path = require("path");

  2. module.exports = {

  3. pluginOptions: {

  4. "style-resources-loader": {

  5. preProcessor: "scss",

  6. // patterns: "./src/assets/variable.scss",

  7. patterns: [path.resolve(__dirname, "./src/assets/variable.scss")]

  8. }

  9. }

  10. }

less篇



less文件与vue组件样式代码

 
  1. /* variable.less */

  2. @color: pink;

  3. // vue组件内的style标签,将要使用上述变量的地方

  4. <style lang="less">

  5. .less {

  6. > div {

  7. color: @color;

  8. }

  9. }

  10. </style>

less 全局变量引入方法一

使用css.loaderOptions
less此方法只支持变量key:value赋值,若要使用less文件中变量,请使用以下两种方案

 
  1. module.exports = {

  2. css: {

  3. loaderOptions: {

  4. less: {

  5. globalVars: {

  6. "@color": "#f00"

  7. }

  8. }

  9. }

  10. }

  11. }

less 全局变量引入方法二

使用chainWebpack
需要安装 style-resources-loader 插件

 
  1. module.exports = {

  2. chainWebpack: config => {

  3. // 需要安装 style-resources-loader 与stylus一致

  4. const oneOfsMap = config.module.rule("less").oneOfs.store;

  5. oneOfsMap.forEach(item => {

  6. item

  7. .use("style-resources-loader")

  8. .loader("style-resources-loader")

  9. .options({

  10. // 需要插入的文件路径

  11. patterns: "./src/assets/variable.less"

  12. // 需要插入的文件路径数组

  13. // patterns: ["./path/to/vars.less", "./path/to/mixins.less"]

  14. })

  15. .end();

  16. });

  17. }

  18. }

less 全局变量引入方法三

使用pluginOptions
需要执行 vue add style-resources-loader命令
命令执行会自动安装 vue-cli-plugin-style-resources-loader会自动提示使用什么预编译语言、会根据你选择的自动配置,只需要填写 引用文件的路径
友情提示:如果使用此方法安装了以上插件,而又放弃这种方案,编译时可能会报错,可以npm uninstall vue-cli-plugin-style-resources-loader 卸载此插件。
 

 
  1. module.exports = {

  2. pluginOptions: {

  3. "style-resources-loader": {

  4. preProcessor: "less",

  5. patterns: "./src/assets/variable.less"

  6. // patterns: ["./src/assets/variable.less"]

  7. }

  8. }

  9. }

原文链接:CSS 预编译语言 变量全局引用方式 vue-cli@3.0 stylus/sass/less 使用方法_rudy_zhou的博客-优快云博客
Vue scss 引入变量报错_老谭TYH的博客-优快云博客_scss 引用变量报错
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值