将React 17与Webpack 5和babel-plugin-react-css-modules(具有样式名称的CSS模块)集成

Sharath

我正在尝试使用最新版本设置React应用程序。React 17,Webpack 5和其他模块。

我需要通过使用babel-plugin-react-css-modules与styleName概念的css模块

尝试运行代码将显示输出,但未应用任何样式。

package.json

{
  "name": "react-app",
  "version": "1.0.0",
  "description": "React Template App",
  "author": "",
  "license": "ISC",
  "main": "index.js",
  "scripts": {
    "start": "webpack serve --mode development",
    "build": "webpack --mode production",
    "format": "prettier --write \"src/**/*.js\"",
    "eslint-fix": "eslint --fix \"src/**/*.js\""
  },
  "dependencies": {
    "babel-plugin-react-css-modules": "^5.2.6",
    "react": "^17.0.1",
    "react-dom": "^17.0.1"
  },
  "devDependencies": {
    "@babel/core": "^7.12.10",
    "@babel/preset-env": "^7.12.11",
    "@babel/preset-react": "^7.12.10",
    "babel-eslint": "^10.1.0",
    "babel-loader": "^8.2.2",
    "css-loader": "^5.0.1",
    "eslint": "^7.16.0",
    "eslint-config-react": "^1.1.7",
    "eslint-loader": "^4.0.2",
    "eslint-plugin-react": "^7.21.5",
    "file-loader": "^6.2.0",
    "html-webpack-plugin": "^4.5.0",
    "less": "^4.0.0",
    "less-loader": "^7.2.0",
    "mini-css-extract-plugin": "^1.3.3",
    "prettier": "2.2.1",
    "style-loader": "^2.0.0",
    "webpack": "^5.11.0",
    "webpack-cli": "^4.2.0",
    "webpack-dev-server": "^3.11.0"
  }
}

webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
  entry: './src/index.js',
  output: {
    path: __dirname + '/dist',
    publicPath: '/',
    filename: 'bundle.js'
  },
  devServer: {
    contentBase: path.join(__dirname, "dist"),
    open: true,
    host: "localhost",
    compress: true,
    port: process.env.CLIENT_PORT,
    hot: true,
    quiet: false
  },
  module: {
    rules: [{
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: ['babel-loader', 'eslint-loader']
      },
      {
        test: /\.css$/,
        use: [
          'style-loader',
          MiniCssExtractPlugin.loader,
          // "less-loader",
          {
            loader: 'css-loader',
            options: {
              modules: true,
            }
          }
        ],
      },
      {
        test: /\.(png|svg|jpg|gif)$/,
        use: ["file-loader"]
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: "./public/index.html",
      filename: "./index.html",
      favicon: "./public/favicon.ico"
    }),
    new MiniCssExtractPlugin({
      filename: "[name].css",
      chunkFilename: "[id].css"
    })
  ],
  devtool: 'inline-source-map',
};

.babelrc

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react"
  ],
  "plugins": [
    [
      "babel-plugin-react-css-modules",
      {
        "webpackHotModuleReloading": true,
        "autoResolveMultipleImports": true
      }
    ]
  ]
}

home.js

import React from "react";

import "./style.css";

const Home = () => {
  return (
    <div styleName="container">
      <div styleName="title">Hello from Home CSS</div>
    </div>
  );
};

export default Home;

style.css

.container {
  display: flex;
  flex-direction: column;
}

.title {
  font-size: 24px;
  color: red;
}
tmhao2005

这是一个有趣的问题,需要我们做更多的事情才能使其工作如下:

  • babel-plugin-react-css-modulescss-loader生成名称时无法正常使用但幸运的是,我们可以使用某人的临时修复方法来解决@dr.pogodin/babel-plugin-react-css-modules因此,只需安装所需的软件包:
npm i -D @dr.pogodin/babel-plugin-react-css-modules postcss // postcss is required aslo
  • 通过更改名称来重新配置babel配置.babelrc
{
  // ...
  "plugins": [
    [
      "@dr.pogodin/babel-plugin-react-css-modules",
      {
        "webpackHotModuleReloading": true,
        "autoResolveMultipleImports": true
      }
    ]
  ]
}

  • 最后,我们将改变类的名称,使其保持一致之间babel-plugin-react-css-modules css-loaderwebpack.config.js
{
  test: /\.css$/,
  use: [
    // ...
    {
      loader: 'css-loader',
      options: {
        modules: {
          localIdentName: '[path]___[name]__[local]___[hash:base64:5]', // This pattern matches with the default in `babel-plugin-react-css-modules`
        },
      }
    }
  ],
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

babel-plugin-react-css-modules不会更改样式标签中的类名称

来自分类Dev

Material-UI-支持babel-plugin-react-css-modules和rtl应用

来自分类Dev

使用Webpack,Typescript和React的CSS模块格式错误?

来自分类Dev

使用 webpack 和 React 在开发/生产中配置 CSS 模块

来自分类Dev

具有CSS模块和React的多个className

来自分类Dev

CSS模块,React和覆盖CSS类

来自分类Dev

WebPack-React-TypeScript:加载CSS和导出类型

来自分类Dev

使Webpack CSS和React一起工作

来自分类Dev

Webpack,React和Babel,不呈现DOM

来自分类Dev

将 CSS 和 HTML 汉堡菜单转换为 React 组件

来自分类Dev

将Webpack与babel和babel-preset-react和babel-preset-es2015一起使用

来自分类Dev

React将Div和Table组件转换为具有多个页面和CSS的PDF

来自分类Dev

通过Babel的Webpack和带有Es2015模块的React

来自分类Dev

模块构建失败-Webpack,React,Babel

来自分类Dev

如何配置Electron,Webpack,Babel,React和JSX?

来自分类Dev

如何使用React和Webpack设置Babel 6 Stage 0

来自分类Dev

React 和 ReactDOM 未使用 webpack、babel 加载

来自分类Dev

具有样式组件的React的MaterialUI

来自分类Dev

在webpack 5中修改css-loader中的localIdentName无效17

来自分类Dev

webpack 使用 extract-text-webpack-plugin 将 css 提取到单独的文件中

来自分类Dev

Webpack加载器配置为React JS加载CSS和SASS文件

来自分类Dev

Webpack 和 CSS 加载器。如何为React创建动态的className?

来自分类Dev

具有CSS模块的React App多个类

来自分类Dev

无法设置React / Babel / Webpack

来自分类Dev

无法设置React / Babel / Webpack

来自分类Dev

带有React Native的Babel插件(babel-plugin-module-alias)

来自分类Dev

React没有呈现新的CSS样式

来自分类Dev

如何将django与react和webpack集成以创建多页webapp?

来自分类Dev

在React,Webpack应用程序中重叠CSS

Related 相关文章

  1. 1

    babel-plugin-react-css-modules不会更改样式标签中的类名称

  2. 2

    Material-UI-支持babel-plugin-react-css-modules和rtl应用

  3. 3

    使用Webpack,Typescript和React的CSS模块格式错误?

  4. 4

    使用 webpack 和 React 在开发/生产中配置 CSS 模块

  5. 5

    具有CSS模块和React的多个className

  6. 6

    CSS模块,React和覆盖CSS类

  7. 7

    WebPack-React-TypeScript:加载CSS和导出类型

  8. 8

    使Webpack CSS和React一起工作

  9. 9

    Webpack,React和Babel,不呈现DOM

  10. 10

    将 CSS 和 HTML 汉堡菜单转换为 React 组件

  11. 11

    将Webpack与babel和babel-preset-react和babel-preset-es2015一起使用

  12. 12

    React将Div和Table组件转换为具有多个页面和CSS的PDF

  13. 13

    通过Babel的Webpack和带有Es2015模块的React

  14. 14

    模块构建失败-Webpack,React,Babel

  15. 15

    如何配置Electron,Webpack,Babel,React和JSX?

  16. 16

    如何使用React和Webpack设置Babel 6 Stage 0

  17. 17

    React 和 ReactDOM 未使用 webpack、babel 加载

  18. 18

    具有样式组件的React的MaterialUI

  19. 19

    在webpack 5中修改css-loader中的localIdentName无效17

  20. 20

    webpack 使用 extract-text-webpack-plugin 将 css 提取到单独的文件中

  21. 21

    Webpack加载器配置为React JS加载CSS和SASS文件

  22. 22

    Webpack 和 CSS 加载器。如何为React创建动态的className?

  23. 23

    具有CSS模块的React App多个类

  24. 24

    无法设置React / Babel / Webpack

  25. 25

    无法设置React / Babel / Webpack

  26. 26

    带有React Native的Babel插件(babel-plugin-module-alias)

  27. 27

    React没有呈现新的CSS样式

  28. 28

    如何将django与react和webpack集成以创建多页webapp?

  29. 29

    在React,Webpack应用程序中重叠CSS

热门标签

归档