在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 如何使用react+antd配置scss以及實現(xiàn)模塊化?

如何使用react+antd配置scss以及實現(xiàn)模塊化?

按照官方文檔提供的操作

  1. yarn add node-sass-chokidar
  2. yarn add npm-run-all
  3. "scripts": {
        "build-css": "node-sass-chokidar src/ -o src/",
        "watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive",
        "start-js": "react-scripts start",
        "start": "npm-run-all -p watch-css start-js",
        "build-js": "react-scripts build",
        "build": "npm-run-all build-css build-js",
        "test": "react-scripts test --env=jsdom",
        "eject": "react-scripts eject"
     }
andtesign的樣式都沒有(失效)了.

按照網(wǎng)上的教程配置

  1. yarn add react-css-modules
  2. yarn add sass-loader node-sass

修改webpack.config.dev.js :

{
    test: [/\.css$/, /\.scss$/],// 這里增加SCSS的支持
        exclude: [/node_modules/],// 這里去排除node_modules,防止css modules影響到node_modules
            use: [
                require.resolve('style-loader'),
                {
                    loader: require.resolve('css-loader'),
                    options: {
                        importLoaders: 1,
                        modules: true, // 這里增加對css modules的支持
                        localIdentName: '[name]__[local]__[hash:base64:5]' //這里增加對css modules的支持
                    },
                },
                {
                    loader: require.resolve('sass-loader'), // 這里增加sass的支持
                },
                {
                    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',
                            }),
                        ],
                    },
                },
            ],
},
    // 因為上面排除了css_modules所以這里一定要再添加個排除src來識別css_modules
    // 其實就是復(fù)制之前沒修改前的所有,再增加一個exclude: [/src/]
    {
        test: /\.css$/, 
            exclude: [/src/], // 這里添加排除src,
                use: [
                    require.resolve('style-loader'),
                    {
                        loader: require.resolve('css-loader'),
                        options: {
                            importLoaders: 1,
                        },
                    },
                    {
                        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',
                                }),
                            ],
                        },
                    },
                ],
    }

修改webpack.config.prod.js :

{
    test: [/\.css$/, /\.scss$/], // 這里增加SCSS的支持
        exclude: [/node_modules/], // 這里去排除node_modules
            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: true,
                                    modules: true, // 這里添加css modules支持
                                },
                            },
                            {
                                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',
                                        }),
                                    ],
                                },
                            },
                            {
                                loader: require.resolve('sass-loader'), // 這里添加sass支持
                            }
                        ],
                    },

                    extractTextPluginOptions
                )
            ),
                // Note: this won't work without `new ExtractTextPlugin()` in `plugins`.
},
    {
        test: /\.css$/,
            exclude: [/src/], // 排除src
                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: 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',
                                            }),
                                        ],
                                    },
                                }
                            ],
                        },

                        extractTextPluginOptions
                    )
                ),
                    // Note: this won't work without `new ExtractTextPlugin()` in `plugins`.
    }
  1. yarn add babel-plugin-import

?.babelrc :

{
    "presets": [
        "react-app"
    ],
        "plugins": [
            "transform-runtime",
            [
                "import",
                {
                    "libraryName": "antd",
                    "style": "css"
                }
            ]
        ]
}
配置完成后在組件里import 'test.scss'還是不好使,請問大神到底應(yīng)該怎么配置?
回答
編輯回答
笑浮塵

我用的是node-sass,挺好用的。

.babelrc

{
  "presets": [
    "next/babel", "es2015"
  ],
  "plugins": [
    [
      "import",
      {
        "libraryName": "antd"
      }
    ],
    ["transform-class-properties"],
    [
      "module-resolver", {
        "root": ["."],
        "alias": {
          "styles": ["./components", "./styles"]
        },
        "cwd": "babelrc"
      }
    ],
    [
      "wrap-in-js",
      {
        "extensions": ["css$", "scss$"]
      }
    ]
  ]
}

webpack

{
          test: /\.s(a|c)ss$/,
          use: ['babel-loader', 'raw-loader', 'postcss-loader',
            {
              loader: 'sass-loader',
              options: {
                includePaths: ['components', 'styles']
                  .map((d) => path.join(__dirname, d))
                  .map((g) => glob.sync(g))
                  .reduce((a, c) => a.concat(c), [])
              }
            }
          ]
        }
2018年3月25日 15:47
編輯回答
汐顏

找到問題了,使用antd創(chuàng)建的項目生成的是webpack3.x,但是生成的css-module要求是webpack4.x,太坑了

2018年9月20日 01:16