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

相關文章
相關標籤/搜索