我正在尝试将CSS导入到我的React应用程序的特定组件中。
webpack配置:
{
test: /\.css$/,
loader: ExtractTextPlugin.extract({
use: 'css-loader',
}),
}
,但不应用CSS。
我还在index.html
中包含了主要的CSS。这是为什么我无法应用另一个CSS文件的原因吗?
<link rel="stylesheet" href="../style/style.css">
您能建议我所缺少的内容吗?
答案 0 :(得分:0)
这取决于您使用的webpack
版本。例如,如果您使用的是Webpack 4,则您的development
配置为:
{
test: /\.s?css$/, // test for scss or css files
use: [
'style-loader', // try to use style-loader or...
{
loader: 'css-loader', // try to use css-loader
options: {
sourceMap: true, // allow source maps (allows css debugging)
modules: true, // allow css module imports
camelCase: true, // allow camel case imports
localIdentName: '[local]___[hash:base64:5]', // set imported classNames with a original className and a hashed string in the DOM, for example: "exampleClassName__2fMQK"
},
},
],
}
example.css (必须使用驼峰箱而不是蛇形箱)
.exampleClassName {
text-align: center;
}
example.js
import React from 'react';
import { exampleClassName } from './example.css';
export default () => (
<h1 className={exampleClassName}>I am centered!</h1>
)
在生产中,您需要使用OptimizeCSSAssetsPlugin
和MiniCssExtractPlugin
:
minimizer: [
new OptimizeCSSAssetsPlugin({
cssProcessorOptions: {
map: {
inline: false,
annotation: true
}
}
}),
],
{
plugins: [
new MiniCssExtractPlugin({
filename: `css/[name].[contenthash:8].css`,
chunkFilename: `[id].[contenthash:8].css`,
}),
]
}
运行webpack
来构建用于生产的应用程序时,它将编译css
,并且(当webpack配置正确设置时)将生成一个index.html
,它会自动添加link
到已编译的样式表。
Webpack的学习曲线很陡,上面的示例中有很多遗漏的选项,因此,如果您只是想使其启动并运行,那么我有一个Webpack-React-Boilerplate,其(s)css模块导入,并且已经为您配置了更多功能。我在webpack配置文件中包含了注释,以帮助您了解每个选项的作用。
否则,如果您尝试学习旧版本的webpack,则可以弹出create-react-app并进行反向工程/查看其广泛的webpack注释。