如何在 create-react-app 中使用 css module?

IT技术 reactjs create-react-app css-modules
2021-04-20 17:14:33

根据Dan Abramov推文,create-react-app (CRA) 中提供了 CSS module支持。人们只需要扩展module.css他的样式表即可启用该功能,但这对我不起作用。我有 1.1.4 版的react-scripts. 如何使用 CRA 启用 css module?谢谢

6个回答

您不需要弹出。

从版本 2 开始,Create React App 支持开箱即用的 CSS module。

升级到最新的 ( react-scripts@latest)版本。

如果您使用纱线:

yarn upgrade react-scripts@latest

如果你使用 npm:

npm install --save react-scripts@latest

然后你只需要创建一个带有扩展名的文件 .module.css

例如:

.myStyle {
  color: #fff
}

然后你可以像这样使用它:

import React from 'react'
import styles from './mycssmodule.module.css'

export default () => <div className={styles.myStyle}>We are styled!</div>
@Emidomh 下一个主要版本将从 2 开始。如果您想升级,请运行我在答案中写的命令。您可以在此处查看版本
2021-06-04 17:14:33
我正在使用 react-scripts@1.1.5 但它不起作用。我使用的是好的版本的 react-scripts 吗?
2021-06-09 17:14:33

要在您的应用程序中启用 CSS module,您无需弹出 create-react-app。您可以按照此链接中描述的这些简单步骤在您的项目中使用 CSS module。

但是如果你弹出了你的 create-react-app,那么你必须找到名为的文件

“webpack.config.js”

打开此文件并在第 1 行中找到此 {test:cssRegex....etc}。391 并替换此更改:

            {
              test: cssRegex,
              exclude: cssModuleRegex,
              use: getStyleLoaders({
              importLoaders: 1,
              modules: true,
              localIdentName: '[name]__[local]__[hash:base64:5]'
            }),
            },

打开 .js 文件并像这样导入语句

import cssStyleClassName from './MyApp.css';

然后这个导入语句允许你像这样在组件标签中做以下更改

<div className={cssStyleClassName.styleName}></div>

styleName 是您在 MyAppStyle.css 文件中定义的内容

.styleName{
your properties here...
}

弹出您的应用程序后,您必须重新启动本地服务器,有时更改不会得到反映。

注意在早期版本中,分别为生产和开发生成了两个文件。现在在当前版本中,您需要关注更改的名为“webpack.config.js”的文件。谢谢你。

新人在这里反应。我想我弹出了我的 create-react-app。我在 config 文件夹中没有 webpack.config.js 文件,只有 webpack.config.dev.js 和 webpack.config.prod.js 。我是否在根目录中创建 webpack.config.js 文件并添加什么代码?
2021-06-06 17:14:33
此解决方案不适用于大于 2 的 react-scripts 版本,您应该使用此解决方案:create-react-app.dev/docs/adding-a-css-modules-stylesheet
2021-06-11 17:14:33

我正在使用的3.4.1版本react-scripts所以这是我的方法

  1. 运行命令:npm run eject 2.然后你会得到一个配置文件,在那个打开webpack.config.js
  2. 并搜索test: cssRegex或只是搜索cssRegex
  3. 现在你会看到这样的:
test: cssRegex,
              exclude: cssModuleRegex,
              use: getStyleLoaders({
                importLoaders: 1,
                sourceMap: isEnvProduction && shouldUseSourceMap,
              }),

现在importLoaders:1,添加modules:true,,只是save文件。5.现在您可以使用重新启动服务器npm start,您将看到您的样式应用。(如果您已经知道如何使用它们)

在这里,当我使用时, [name]__[local]__[hash:base64:5] 因为我遇到了一个错误

 - options has an unknown property 'localIdentName'. These properties are valid:
   object { url?, import?, modules?, sourceMap?, importLoaders?, localsConvention?, onlyLocals?, esModule? }


所以我删除了它,我只是使用它,它对我有用modules:true

新的更新,它甚至可以在没有这些设置的情况下工作
2021-06-12 17:14:33
我很努力地找到这个:(它有效,谢谢。:)
2021-06-16 17:14:33

您需要弹出 create-react-app,然后在 webpack 的配置文件中添加这两行 在此处输入图片说明

并使用它将 css 加载到您不需要的组件(我保留了组件,它的 css 位于同一文件夹中)

import classes from './SomeComponentStyle.css';

...

<div className={classes.RedDiv}>

在 SomeComponentStyle.css 中

.RedDiv {
  /* styles for red div */
}

您使用的是 1.1.4 版本,因此默认情况下 CSS Modules 不起作用......高于 2.0 版,它通过将 css 文件名更改为 name.module.css 来默认工作。