Storybook 组件级 css 文件不起作用

Akh*_*hil 6 javascript css reactjs webpack storybook

我使用 create-react-app 创建了一个反应应用程序,并添加了一个按钮组件,一个用于按钮的 css。当我为按钮加载故事时,没有为按钮加载样式。下面粘贴相关文件。是否有我要做的任何配置,以启动并运行样式?

项目的 github 仓库

组件:index.js

 import React, { Component } from 'react';
import styles from './style.css';
class CustomButton extends Component{
    render(){
        return (
            <button className={styles.customButton}>Hello</button>     
        );
    }
}
export default CustomButton;
Run Code Online (Sandbox Code Playgroud)

样式.css:

.customButton {
    border: 1px solid red;
    padding: 10px;
    background-color: rgb(223, 19, 19);
}
Run Code Online (Sandbox Code Playgroud)

故事档案:

import React from 'react';
import CustomButton from '../../src/index';
import { storiesOf } from '@storybook/react';


const story = storiesOf("Custom button",module);

story.addWithJSX("simple",() => <CustomButton/>);
Run Code Online (Sandbox Code Playgroud)

系统信息:

Environment Info:

  System:
    OS: Windows 7 6.1.7601
    CPU: (2) x64 Intel(R) Core(TM) i3-2370M CPU @ 2.40GHz
  Binaries:
    Node: 10.16.0 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.4 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
    npm: 6.9.0 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Chrome: 84.0.4147.125
  npmPackages:
    @storybook/addon-info: ^5.3.19 => 5.3.19
    @storybook/components: ^5.3.19 => 5.3.19
    @storybook/preset-create-react-app: ^3.1.4 => 3.1.4
    @storybook/react: ^5.3.19 => 5.3.19
Run Code Online (Sandbox Code Playgroud)

tmh*_*005 10

为了storybook使用webpack,您必须首先main.js.storybook目录下创建文件。然后添加style-loader+css-loader加载器来解决您的css导入。请记住,启用modules: true选项css-loader以帮助您导入类:

.storybook\main.js

const path = require('path');

module.exports = {
  webpackFinal: async config => {
    // Remove the existing css rule
    config.module.rules = config.module.rules.filter(
      f => f.test.toString() !== '/\\.css$/'
    );

    config.module.rules.push({
      test: /\.css$/,
      use: ['style-loader', {
        loader: 'css-loader',
        options: {
          modules: true, // Enable modules to help you using className
        }
      }],
      include: path.resolve(__dirname, '../src'),
    });

    return config;
  },
};
Run Code Online (Sandbox Code Playgroud)

  • 伙计,成功了!多谢。之前我确实尝试过使用 main.js 和 css-loader,但我不知道我必须删除现有的 css 规则。非常感谢,伙计。 (3认同)