【发布时间】:2018-11-17 21:02:16
【问题描述】:
使用 bootstrap 4.1.1 构建一个 react 16.4.0 应用程序。
我正在使用 css-loader 和 webpack 为我的应用程序中的每个组件创建自定义样式表。
我的自定义样式没有任何作用。我认为这可能是引导样式具有更多点的问题,但是即使我添加了任何引导元素之外的元素,我的样式也不会产生任何效果。
基本示例:
Sidebar.js 组件:
import React from 'react';
import classes from './Sidebar.css';
const sidebar = (props) => {
console.log('classes.red:', classes.red);
return (
<div>
<h3 className={classes.other}>Testing Stylesheet</h3>
<nav className="col-sm-3 col-md-2 hidded-xs-down sidebar" id={classes.red}>
<ul className="nav flex-column">
<li className="nav-item">
<a className="nav-link active" href="#">
FF1493
</a>
</li>
<li className="nav-item">
<a className="nav-link active" href="#">
FF4500
</a>
</li>
</ul>
</nav>
</div>
)
}
export default sidebar;
这是超级简单的样式表:
#red {
background-color: rgba(214, 21, 21, 0.842)
}
.other {
color: green;
}
在 Sidebar.js 中,您可以看到我在哪里 console.logging 导入的“红色”样式。以下是浏览器控制台中的日志记录:classes.red: Sidebar__red__2-sUP
对于那些想知道的人,这是我的 webpack.config:
const webpack = require('webpack');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const autoprefixer = require('autoprefixer');
const SRC_DIR = path.join(__dirname, '/client/src');
const DIST_DIR = path.join(__dirname, '/client/dist');
module.exports = {
entry: `${SRC_DIR}/index.jsx`,
output: {
path: path.resolve(__dirname, 'client/dist'),
filename: 'bundle.js',
},
module: {
rules: [
{
test: /\.jsx?/,
include: SRC_DIR,
loader: 'babel-loader',
query: {
presets: ['react', 'es2015'],
plugins: ['syntax-dynamic-import'],
},
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract(
Object.assign(
{
fallback: {
loader: require.resolve('style-loader'),
options: {
hmr: false,
},
},
use: [
{
loader: require.resolve('css-loader'),
options: {
importLoaders: 1,
minimize: true,
// sourceMap: shouldUseSourceMap,
modules: true,
localIdentName: '[name]__[local]__[hash:base64:5]'
},
},
{
loader: require.resolve('postcss-loader'),
options: {
// Necessary for external CSS imports to work
// https://github.com/facebookincubator/create-react-app/issues/2677
ident: 'postcss',
plugins: () => [
require('postcss-flexbugs-fixes'),
autoprefixer({
browsers: [
'>1%',
'last 4 versions',
'Firefox ESR',
'not ie < 9', // React doesn't support IE8 anyway
],
flexbox: 'no-2009',
}),
],
},
},
],
},
// extractTextPluginOptions
)
)
},
],
},
resolve: {
extensions: ['.js', '.jsx']
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify('development'),
},
}),
new ExtractTextPlugin("styles.css"),
// ,
// new UglifyJSPlugin(),
],
};
可能是因为我在 webpack.config 中注释掉了一些东西:sourceMap: shouldUseSourceMap, 在选项和extractTextPluginOptions 下?
我将它们注释掉,因为我在设置过程中遇到错误并且不能 100% 确定它们的作用。我对 webpack 的使用仍在不断增长,并从我使用 Facebook 的 create-react-app 构建的另一个应用程序中借用了一些配置设置。
欢迎输入。先感谢您! 迈克
【问题讨论】:
-
您是否使用开发者控制台查看了实际生成的 css 文件?
-
谢谢你,里奥。如果我点击“+”,我会看到选择器的唯一哈希,但它的内容是空的。
标签: javascript css reactjs webpack bootstrap-4