网站搜索

reactjs - 当 modules 选项设置为 true 时,Webpack 的 css-loader 不加载 css


我正在尝试将 CSS 作为模块导入到 React 应用中。我已经将其添加到我的 webpack.config.js 文件中

{
        test: /\.css$/,
        use: [
          { loader: 'style-loader' },
          { loader: 'css-loader', options: { modules: true } },
        ],
      },

这是实现

app.tsx

import styles from './styles.module.css';

class App extends React.Component {
  render() {
    return (
      <div className={styles.mainContent}>
        <h1> Hello, World! </h1>
        <Button type="primary">Antd works!</Button>
      </div>
    );
  }
}

styles.module.css

.mainContent {
    color: limegreen;
}

但是这个 CSS 类对输出没有影响。

答案#1

如果你想改变 antd 的全局设计,你可以使用 less 加载器,正如 antd 文档中关于使用 webpack 配置自定义主题所描述的那样。

如果你只想更改按钮颜色,你可以使用纯 CSS。例如:

.ant-btn-primary {
  background: red;
  border-color: red;
}

这是一个带有自定义按钮颜色的 CodeSandbox。

答案#2

为了避免重复的类名,CSS 模块在编译时会转换类名。

所以你将无法使用 CSS 模块覆盖 CSS 类,因为类名彼此总是不同的。

为了覆盖 CSS 类,你需要使用普通的 CSS,例如。

import './styles.css';

class App extends React.Component {
  render() {
    return (
      <div className="mainContent">
        <h1> Hello, World! </h1>
        <Button type="primary">Antd works!</Button>
      </div>
    );
  }
}