【问题标题】:Sharing global variables SASS - vue共享全局变量 SASS - vue
【发布时间】:2019-01-15 16:15:36
【问题描述】:

我正在用 vue 开发一个项目,在某些组件中我的想法是使用单文件组件。

为了在组件中使用 SASS,我遵循了 vue-loader 的文档。

它成功了,问题是现在我想添加带有 SASS 变量的文件,但我没有得到它。

我在某些方面看到将这个文件导入到每个组件中,但我认为这不是最好的解决方案,所以我继续搜索,发现有些人在谈论我在代码中表示的方式,但它仍然不工作。

任何建议。

webpack.config

module.exports = {
    module: {
        rules:[
            {
                test: /\.vue$/,
                use: 'vue-loader'
            },
            {
                test: /\.scss$/,
                use: [
                    'vue-style-loader',
                    'css-loader',
                    {
                        loader: 'sass-loader',
                        options: {
                            data: '@import "/resources/assets/sass/_variables.scss";'
                        },
                    }
                ]
            }
        ]
    }
};

组件vue

<template>
     <div class="test">
         <span>test</span>
     </div>
</template>

<style lang="scss">
    .test {
        background: $red;
    }
</style>

错误

Undefined variable: "$red".

【问题讨论】:

    标签: webpack vue.js sass vue-loader


    【解决方案1】:

    怎么了? 我遇到了同样的问题。尝试评论css-loadervue-style-loader

    以后会不会有问题?

    所以,我可以看到您甚至没有使用这两个库。所以不行。 但是,如果您想将其保留在您的项目中,请确保 vue-style-loadercss-loader 已正确安装在您的 package.json 中。

    要安装它们:

    1. npm install -D vue-style-loader
    2. npm install -D css-loader

    但我个人认为最好不要使用它...

    您的代码将如下所示:

        module: {
                rules: [
                  // ... other rules omitted
           
                  {
                    test: /\.scss$/,
                    use: [
                    //   'vue-style-loader',
                    //   'postcss-loader',
                      {
                        loader: 'sass-loader',
                        options: {
                          // you can also read from a file, e.g. `variables.scss`
                          // use `prependData` here if sass-loader version = 8, or
                          // `data` if sass-loader version < 8
                          additionalData: `@import "path/to/your/file.scss";`
                        }
                      }
                    ]
                  }
                ]
              },
    

    希望对你有所帮助!

    【讨论】:

      【解决方案2】:

      你可以试试这个吗?

      options: {
        resources: [
         path.resolve(__dirname, '../src/assets/sass/_variables.scss')
        ]
      } 
      

      应该是这样的:

      module.exports = {
              module: {
                  rules:[
                      {
                          test: /\.vue$/,
                          use: 'vue-loader'
                      },
                      {
                          test: /\.scss$/,
                          use: [
                              'vue-style-loader',
                              'css-loader',
                              {
                                  loader: 'sass-loader',
                                  options: {
                                   resources: [
                                    path.resolve(__dirname, '../src/assets/sass/_variables.scss')
                                   ]
                                  },
                              }
                          ]
                      }
                  ]
              }
          };
      

      【讨论】:

      • 我尝试使用您在 vue-loder 文档 data: '$color: red;' 中的示例,但它也不起作用。
      猜你喜欢
      • 2018-11-16
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多