create-react-app建立出来项目,如何设置CSS模块化?

问题原由

最近在研究react,根据官方提供的create-react-app脚手架搭建了一个项目,可是像下面这样引入CSS的时候,会发现全局都会生效,这明显不合理嘛,那么,怎么设置呢?css

import './header.css'; // 这样引入至关于全局引入了

CSS模块化

咱们知道,在webpack中,能够经过CSS-loaderstyle-loader对CSS文件进行一些打包处理,里面有一些配置项,能够将CSS打包成一个模块,而后引入,通常webpack是这样设置的node

{
  test: /\.css$/,
  loader: 'style-loader!css-loader?modules&importLoaders=1&localIdentName=[name]_[local]__[hash:base64:5]'
}

其中modules为true时,就是把CSS打包为模块的控制参数react

如何设置?

用create-react-app建立出来的项目,咱们得先找到那个配置文件在哪,文件默认路径为:\node_modules\react-scripts\config\webpack.config.dev.js,而后找到以下代码,新增一个参数modules:true就能够了:webpack

{
            test: /\.css$/,
            use: [
              require.resolve('style-loader'),
              {
                loader: require.resolve('css-loader'),
                options: {
                  importLoaders: 1,
                  modules: true
                },
              },
              {
                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',
                    }),
                  ],
                },
              },
            ],
          },

最后

在你须要用到的模块引入git

import headerCss from './header.css';

固然,别忘了生产线的配置也改下,也就是webpack.config.prod.js文件github

相关文章
相关标签/搜索