create-react-app 脚手架添加 less 支持和 antd 样式按需加载

Posted by Jacobc' Blog on Sunday, February 3, 2019

create-react-app 脚手架添加 less 支持和 antd 样式按需加载

1. 创建项目

npm install -g create-react-app       /* 安装create-react-app,建议使用cnpm */

create-react-app react-test           /* 使用命令创建应用,myapp为项目名称 */

cd react-test                         /* 进入目录,然后启动 */

npm start

2.create-react-app 把 webpack 配置文件暴露出来

create-react-app 生成的项目文,看不到webpack相关的配置文件,需要先暴露出来,使用如下命令即可:

npm run eject

3. 添加 babel-plugin-import

babel-plugin-import 是一个用于 按需加载 组件代码和样式babel 插件(原理)。

npm install babel-plugin-import --save-dev

4.添加 less 、less-loader

npm install less less-loader --save-dev

5.修改 webpack 配置文件

修改 webpack.config.dev.jswebpack.config-prod.js 配置文件

  • test: /\.css$/ 改为 /\.(css|less)$/
  • test: /\.css$/use 数组配置增加 less-loader
{
  test: /\.(css|less)$/,
  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',
          }),
        ],
      },
    },
    {
      loader: require.resolve('less-loader') // compiles Less to CSS
    }
  ],
},

6.修改 package.json 文件,添加 .babelrc 文件

package.json

"babel": {
    "presets": [
      "react-app"
    ],
    "plugins": [
      [
        "import",
        {
          "libraryName": "antd",
          "style": true
        }
      ]
    ]
  },

.babelrc

{
   "presets": [
      "react-app"
    ],
    "plugins": [
      [
        "import",
        {
          "libraryName": "antd",
          "style": true
        }
      ]
    ]
}

然后就可以了,哈哈哈!

「如果这篇文章对你有用,请随意打赏」

Jacobc' Blog

如果这篇文章对你有用,请随意打赏

使用微信扫描二维码完成支付