Имена классов через CSS модули генерируются странным образома

Я настроил CSS-modules через webpack, но в результате названия классов выглядят не так как надо.

`Node.js: v14.16.0`
`npm: 6`

Такое чувство, что webpack на них не реагирует. Хотя он должен выглядеть как-то так: class="Input-input_ytoew" но результат сами видите.

результат в DOM

<div>
    <input class="yBU80xuXSp1wp_WUBF_P" type="text" value="[email protected]">
</div>

webpack
----------
    import path from "path";
    import { DefinePlugin } from "webpack";
    import HtmlWebpackPlugin from "html-webpack-plugin";
    import ForkTsCheckerWebpackPlugin from "fork-ts-checker-webpack-plugin";
    import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin";
    
    module.exports = {
      entry: "./src/index.tsx",
      resolve: {
        extensions: [".ts", ".tsx", ".js", ".css", ".scss"],
        plugins: [new TsconfigPathsPlugin({ configFile: "./tsconfig.json" })],
      },
      output: {
        path: path.join(__dirname, "/build"),
        filename: "build.js",
      },
      module: {
        rules: [
          {
            test: /\.tsx?$/,
            loader: "ts-loader",
            options: {
              transpileOnly: true,
            },
            exclude: /build/,
          },
          {
            test: /\.s?css$/,
            use: [
              "style-loader",
              {
                loader: "css-loader",
                options: {
                  sourceMap: true,
                  importLoaders: 1,
                  modules: true,
                },
              },
            ],
            include: /\.module\.scss$/,
          },
          {
            test: /\.s?css$/,
            use: ["style-loader", "css-loader"],
            exclude: /\.module\.scss$/,
          },
        ],
      },
      devServer: {
        port: 3000,
        open: true,
        historyApiFallback: true,
      },
      plugins: [
        new HtmlWebpackPlugin({
          template: "./public/index.html",
        }),
        new DefinePlugin({
          "process.env": process.env.production || !process.env.development,
        }),
        new ForkTsCheckerWebpackPlugin({
          eslint: {
            files: "./src/**/*.{ts,tsx,js,jsx}",
          },
        }),
      ],
    };


Input.module.scss
----------
    .input {
      color: red;
    }

Input.stx
----------
    import React from "react";
    
    import s from "./Input.module.scss";
    
    export const Input = ({ value }: any) => {
      return (
        <>
          <input className={s.input} type="text" value={value} />
        </>
      );
    };



package.json
----------

      "devDependencies": {
        "@types/node": "^16.7.10",
        "@types/react": "^17.0.19",
        "@types/react-dom": "^17.0.9",
        "@types/webpack": "^5.28.0",
        "@types/webpack-dev-server": "^4.1.0",
        "@typescript-eslint/eslint-plugin": "^4.30.0",
        "@typescript-eslint/parser": "^4.30.0",
        "css-loader": "^6.2.0",
        "eslint": "^7.32.0",
        "eslint-config-airbnb": "^18.2.1",
        "eslint-config-prettier": "^8.3.0",
        "eslint-plugin-import": "^2.24.2",
        "eslint-plugin-jsx-a11y": "^6.4.1",
        "eslint-plugin-prettier": "^4.0.0",
        "eslint-plugin-react": "^7.25.1",
        "eslint-plugin-react-hooks": "^4.2.0",
        "fork-ts-checker-webpack-plugin": "^6.3.2",
        "html-webpack-plugin": "^5.3.2",
        "node-sass": "^6.0.1",
        "prettier": "^2.3.2",
        "sass-loader": "^12.1.0",
        "style-loader": "^3.2.1",
        "ts-loader": "^9.2.5",
        "ts-node": "^10.2.1",
        "tsconfig-paths-webpack-plugin": "^3.5.1",
        "typescript": "^4.4.2",
        "webpack": "^5.51.1",
        "webpack-cli": "^4.8.0",
        "webpack-dev-server": "^4.1.0"
      }

файлы


Ответы (1 шт):

Автор решения: Michael Podlevskykh

Задал вопрос на другом ресурсе, полуил ответ, вот он + читайте комменты.

См. localIdentName из css-loader. Свойство отвечает за создание имен классов.

localIdentName

Я обычно хожу с:

{
    loader: 'css-loader',
    options: {
        modules: {
            localIdentName:'[name]__[local]--[hash:base64:5]',
        },
    },
},

https://stackoverflow.com/questions/69043268/

→ Ссылка