首页 > 解决方案 > 尝试在 Vue 范围内的 css 中使用 Sass 变量

问题描述

在 laravel spa 上工作并尝试在 Vue 范围内的 css 中使用 Sass 变量,但它们没有加载。我错过了什么或者这不再可能了吗?当我使用 gobal scss 文件中的变量时,它将起作用。

root/
- resources/
  - js/
    - components/
  - sass/
    - _variables.scss
- vue.config

包.json

{
    "private": true,
    "scripts": {
        "dev": "npm run development",
        "development": "mix",
        "watch": "mix watch",
        "watch-poll": "mix watch -- --watch-options-poll=1000",
        "hot": "mix watch --hot",
        "production": "mix --production"
    },
    "devDependencies": {
        "@vue/compiler-sfc": "^3.0.11",
        "autoprefixer": "^10.2.5",
        "axios": "^0.19.2",
        "bootstrap": "^4.6.0",
        "jquery": "^3.6",
        "laravel-mix": "^6.0.18",
        "lodash": "^4.17.19",
        "node-sass": "^6.0.0",
        "popper.js": "^1.16.1",
        "postcss": "^8.2.15",
        "resolve-url-loader": "^3.1.2",
        "sass": "^1.32.11",
        "sass-loader": "^11.1.1",
        "tailwindcss": "^2.1.2",
        "vue": "^3.0.5",
        "vue-loader": "^16.1.2",
        "vue-template-compiler": "^2.6.12",
        "webpack-cli": "^4.7.0"
    },
    "dependencies": {
        "@tailwindcss/forms": "^0.3.2",
        "@vue/cli": "^4.5.13",
        "browser-sync": "^2.26.14",
        "browser-sync-webpack-plugin": "^2.3.0",
        "npm-watch": "^0.9.0",
        "postcss-import": "^14.0.2",
        "vue-i18n": "^8.24.4",
        "vue-router": "^4.0.8",
        "vue-unicons": "^3.2.1",
        "vuex": "^4.0.0"
    }
}

vue.config.js

const path = require('path');

module.exports = {
    css: {
      loaderOptions: {
        sass: {         
            prependData: `@import "./resources/sass/_variables.scss";`
        }
      }
    }
  }

组件.vue

<style lang="scss" scoped>    
   body{
      background: $body-color;
   }    
</style>

解决方案(暂时)

<style lang="scss" scoped>    
   @import "../../sass/componentBlabla.scss";    
</style>

标签: laravelvue.js

解决方案


在你的文件webpack.mix.js 中添加这一行

mix.js('resources/js/app.js', 'public/js')
.vue().sass('resources/sass/_variables.scss', 'public/css');

在函数中仔细观察sass()我添加了文件_variables.scss的完整路径。

然后运行这个命令npm run dev

希望能帮助到你。


推荐阅读