zoukankan      html  css  js  c++  java
  • create-react-app创建出来项目,如何设置CSS模块化?

    问题起因

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

    import './header.css'; // 这样引入相当于全局引入了
    

    CSS模块化

    我们知道,在webpack中,可以通过CSS-loaderstyle-loader对CSS文件进行一些打包处理,里面有一些配置项,可以将CSS打包成一个模块,然后引入,一般webpack是这样设置的

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

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

    如何设置?

    用create-react-app创建出来的项目,我们得先找到那个配置文件在哪,文件默认路径为: ode_modules eact-scriptsconfigwebpack.config.dev.js,然后找到如下代码,新增一个参数modules:true就可以了:

              {
                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',
                        }),
                      ],
                    },
                  },
                ],
              },
    

    最后

    在你需要用到的模块引入

    import headerCss from './header.css';
    

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

  • 相关阅读:
    LeetCode 382. Linked List Random Node
    LeetCode 398. Random Pick Index
    LeetCode 1002. Find Common Characters
    LeetCode 498. Diagonal Traverse
    LeetCode 825. Friends Of Appropriate Ages
    LeetCode 824. Goat Latin
    LeetCode 896. Monotonic Array
    LeetCode 987. Vertical Order Traversal of a Binary Tree
    LeetCode 689. Maximum Sum of 3 Non-Overlapping Subarrays
    LeetCode 636. Exclusive Time of Functions
  • 原文地址:https://www.cnblogs.com/youthsnail/p/8996251.html
Copyright © 2011-2022 走看看