module.css
以启用此功能,但这对我不起作用。我使用的是 react-scripts
版本1.1.4。我该如何在 CRA 中启用 css 模块?谢谢。module.css
以启用此功能,但这对我不起作用。我使用的是 react-scripts
版本1.1.4。我该如何在 CRA 中启用 css 模块?谢谢。无需弹出。
从2版本开始,Create React App支持CSS模块。
升级到最新的react-scripts@latest
版本。 (链接)
如果你使用yarn:
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>
{
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”的一个文件的更改即可。谢谢。
npm run eject
webpack.config.js
文件。test: cssRegex
部分并按以下方式进行编辑:{
test: cssRegex,
exclude: cssModuleRegex,
use: getStyleLoaders({
importLoaders: 1,
sourceMap: isEnvProduction
? shouldUseSourceMap
: isEnvDevelopment,
modules: {
// mode: 'icss',
getLocalIdent: getCSSModuleLocalIdent,
},
}),
react-scripts
的3.4.1
版本,以下是我使用的方法:
npm run eject
webpack.config.js
test: cssRegex
或只搜索cssRegex
test: cssRegex,
exclude: cssModuleRegex,
use: getStyleLoaders({
importLoaders: 1,
sourceMap: isEnvProduction && shouldUseSourceMap,
}),
现在,在importLoaders:1,
后添加modules:true,
,然后只需保存
文件。
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
,这样对我来说就可以了。
您正在使用版本1.1.4,因此默认情况下不支持CSS模块化...在2.0以上的版本中,默认情况下通过将css文件名更改为name.module.css来支持CSS模块化。
前往文件。npm run eject
webpack.config.js
搜索
cssRegex
添加以下模块对象
test: cssRegex,
exclude: cssModuleRegex,
use: getStyleLoaders({
importLoaders: 1,
sourceMap: isEnvProduction
? shouldUseSourceMap
: isEnvDevelopment,
modules: {
localIdentName: "[name]__[local]___[hash:base64:5]"
}
})
那么你的 CSS 文件将以名称 header.css 运行。
根据您的 react-scripts
版本(您可以在 package.json
文件中检查版本):
对于 react-scripts
版本在 2.0.0
之前的:
如果您在项目中使用 git,则应提交更改并将其推送。
运行 npm run eject
如果您正在运行应用程序,请停止它并重新运行,然后您将找到更改并可以使用 CSS 模块。
从 react-scripts
版本 2.0.0
开始:
您可以按照官方 create-react-app
文档中的 "添加 CSS 模块样式表" 进行操作。
有一个新的库叫做patch-styles包。
它引入了一种更声明式的应用样式的方式。您需要使用<PatchStyles classNames={style}>
将您的代码包装起来,其中style
是样式模块的默认导入。请参见StackBlitz中的使用示例。
In webpack.config.js file find this keyword 'css-loader'.
You will find below code in line number 82 for react version-16.13
{
loader: require.resolve('css-loader'),
options: cssOptions,
}
Replace above object with
{
loader: require.resolve('css-loader'),
options: {
modules: {
mode: "local",
localIdentName: "[name]_[local]_[hash:base64:5]"
},
import: true,
importLoaders: true
}
}
Start the server again by npm start(If changes are not reflected)