【问题标题】:css configuration in webpack not detecting class styles but detects element styleswebpack中的css配置不检测类样式但检测元素样式
【发布时间】:2019-07-02 18:12:56
【问题描述】:

我正在使用 webpack 和 babel 做出反应。我的 webpack 配置如下。当我为 div、ul、li 等元素编写 CSS 时,它在我的 App.js 中被检测到,但是当我尝试编写基于类的 CSS 时,页面上没有检测到它。

webpack.config.js

const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {
  entry: {
    main: path.join(__dirname, '..', '/src/index.js'),
  },
  output: {
    path: path.resolve(__dirname, '..', 'dist'),
    filename: '[name].[hash].bundle.js',
    publicPath: '/',
  },
  module: {
    rules: [
      {
        test: /\.(eot|svg|ttf|woff|woff2)$/,
        loader: 'file-loader?name=[name].[ext]',
      },
      {
        test: /\.js$/,
        use: ['babel-loader'],
        exclude: /node_modules/,
      },
      {
        test: /\.s?css$/,
        exclude: /node_modules/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: [
            {
              loader: 'css-loader',
              options: {
                minimize: true,
                modules: true,
                importLoaders: true,
                localIdentName: '[name]__[local]--[hash:base64:5].css',
                sourcemaps: true,
              },
            },
            {
              loader: 'sass-loader',
              options: {
                sourcemaps: true,
              },
            },
          ],
        }),
      },
      {
        test: /\.s?css$/,
        include: /node_modules/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: [
            {
              loader: 'css-loader',
              options: {
                minimize: true,
              },
            },
            {
              loader: 'sass-loader',
              options: {
                sourcemaps: true,
              },
            },
          ],
        }),
      },
    ],
  },
  resolve: {
    extensions: ['.js', '.jsx'],
  },
};

index.css

.test {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 1em; 
  list-style: none;
  padding: 12px;
}

App.js

import React from 'react';
import '../index.css';


const App = () => (
  <div>
     <h1>Hello Adeva!!</h1>
     <ul className="test">
        <li>Romans</li>
        <li>Corinthians</li>
        <li>Thessalonians</li>
        <li>Ephesians</li>
        <li>Phillipians</li>
        <li>Colossians</li>
      </ul>
  </div>
)

export default App;

我的 react 版本是 16.8.1,webpack 是 4.29.3。请指导我,因为这个 webpack 配置让我很困惑。

【问题讨论】:

    标签: javascript css reactjs webpack


    【解决方案1】:

    您已通过在您的 css-loader 配置中添加 modules: true 来配置 webpack 以使用 css 模块。要使用 css 模块,您必须将样式作为 javascript 对象访问,如下所示:

    import React from 'react';
    import styles from '../index.css';
    
    
    const App = () => (
      <div>
         <h1>Hello Adeva!!</h1>
         <ul className={styles.test}>
      </div>
    )
    

    【讨论】:

    • 谢谢,Mohamed 它可以工作,但我从 webpack v4 中读到 ExtractTextPlugin 不应该被使用。是这样吗?
    • 对不起,我不知道
    【解决方案2】:

    为什么要做复杂的事情

    <ul class="test">
    

    纯css和html

    【讨论】:

    • 请解释这将如何在这个问题的上下文中工作,而不是一般的 HTML。
    猜你喜欢
    • 2012-11-14
    • 1970-01-01
    • 2012-06-06
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2013-03-31
    • 1970-01-01
    相关资源
    最近更新 更多