vue.js - 使用 Vue Storybook 时无法编译 sass

标签 vue.js sass storybook

我正在尝试在 vue 上创建故事书。我的组件使用 sass 编写。所以,我在 .storybook/main.js 中做了这个:

webpackFinal: (config) => {
        config.module.rules.push({
            test: /\.s[ac]ss$/i,
            use: [
                // Creates `style` nodes from JS strings
                'style-loader',
                // Translates CSS into CommonJS
                'css-loader',
                // Compiles Sass to CSS
                'sass-loader',
            ],
        })

        return config
}

样式看起来像这样:

<style lang="sass" scoped>
button
    background-color: red
</style>

所以我在尝试编译时遇到了这个错误:

SassError: Invalid CSS after "": expected 1 selector or at-rule, was "button"
        on line 1 of C:\Code\testproj\src\components\UI\TestComponent.vue

如果我把我的风格改成这样:

<style lang="sass" scoped>
button {
    background-color: red
}
</style>

一切正常,但这不是 sass 语法。

最佳答案

我遇到了完全相同的问题,但我能够解决它。问题来自 webpack 配置。如果您使用的是 SASS,则 .storybook 文件夹中的 webpack.config.js 文件应如下所示:

module.exports = ({ config }) => {
  config.module.rules.push({
    test: /\.sass$/,
    use: [
      require.resolve("vue-style-loader"),
      require.resolve("css-loader"),
      {
        loader: require.resolve("sass-loader"),
        options: {
          sassOptions: {
            indentedSyntax: true
          }
        }
      }
    ],
  });

  return config;
};

如果你使用的是 SCSS,那么它应该是这样的:

module.exports = ({ config }) => {
  config.module.rules.push({
    test: /\.scss$/,
    use: [
      require.resolve("vue-style-loader"),
      require.resolve("css-loader"),
      require.resolve("sass-loader"),
    ],
  });

  return config;
};

我在阅读 Vue Loader Docs 时弄明白了这一点

关于vue.js - 使用 Vue Storybook 时无法编译 sass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62720265/

相关文章:

events - Vue 2 和具有多个组件的子组件事件

css - SCSS 对 VS 代码的自动建议

reactjs - 使用 Storybook 导入 scss 文件

reactjs - react 无效的钩子(Hook)调用错误和故事书6

javascript - 从 vue 中的子组件访问 key

Vue.js:如何防止 `vue-cli-service --modern`构建旧版 bundle ?

html - 按顺序淡入淡出 3 个 div

css - 如何动态更改数组中显示的样式文本组件的属性?

vue.js - fontawesome 与 vue 不工作

css - 使用 vh 和 vw 为网站上的每个元素应用填充、边距、宽度和高度是一个好习惯吗