使用最新版本 create-react-app 创建 react+antd 项目采坑记录

步骤

step 1 安装脚手架

检查 create-react-app 是否存在 如果不存在 那么直接下载最新版本 如果存在就升级到最新版本

// 检查脚手架版本号 (查看是否存在)
create-react-app -v
// 如果不存在 出现版本号 那么直接执行 以下指令
 npm install create-react-app -g 
 // 如果存在 那么 执行以下指令 获取该脚手架的版本信息 对比下是否是最新版本 
 npm info create-react-app
 // 对比版本之后 如果不是最新版本 那么就升级到最新版本 (latest 也可以输入自己指定到最新版本号)
 npm install create-react-app@latest -g

step 2 构建react项目

使用脚手架构建react项目 然后检查react项目能够在当前环境下能够跑通 之后将构建配置文件暴露出来

// 在既定目录下输入构建指令  xxx为项目名称 (其他构建指令请参考其他文献)
npx create-react-app xxxx
// 构建成功之后 输入以下脚本 确认项目在当前环境下可以运行
npm start
// 然后结束运行 执行以下指令 将构建配置文件暴露出来
npm run eject

step 3 安装react路由

安装和使用react路由

// 输入以下指令安装react路由
npm install react-router-dom -S

// 之后按需导入路由组件 笔者这里是使用hash路由 (以下为笔者使用案例)
// 首先,导入路由react 模块 和react-router-dom模块模块的相关组件 以及路由配置所依赖的类 构成路由配置文件
import { HashRouter as Router, Route, Link, Redirect, Switch } from "react-router-dom";
import React from "react";
import ThemePage from "./pages/theme-page";
import DocsPage from "./pages/docs-page";
export default () => {
    return (<Router>
        <React.Fragment>
            <Switch>
                <Route path="/theme" component={ThemePage} />
                <Route path="/docs" component={DocsPage} />
                <Redirect from="/" to="/docs/template-lib"></Redirect>
            </Switch>
        </React.Fragment>
    </Router>)
}

// 然后在脚手架默认生成 App.js 文件里面导入这个路由配置
import React from 'react';
import logo from './logo.svg';
import './App.css';
import PageRouter from './router';

function App() {
  return (
    <div className="App">
        <PageRouter/>
    </div>
  );
}
export default App;

step 4 安装antd模块

安装antd模块

// 输入以下指令安装antd模块
npm install antd -S

step 5 按需导入antd样式

// 安装完成之后,将antd样式按需导入, 按需导入需要安装 babel-plugin-import 插件 (为 antd 官方推荐的按需导入插件)
npm install babel-plugin-import -D
//安装完成之后,我们有两种选择 一种是导入css样式文件 另外一种是导入 less 样式文件
// 在 ./config/webpack.config.js 文件中找到这一段配置代码
             {
              test: /\.(js|mjs|jsx|ts|tsx)$/,
              include: paths.appSrc,
              loader: require.resolve('babel-loader'),
              options: {
                customize: require.resolve(
                  'babel-preset-react-app/webpack-overrides'
                ),
                
                plugins: [
                  [
                    require.resolve('babel-plugin-named-asset-import'),
                    {
                      loaderMap: {
                        svg: {
                          ReactComponent:
                            '@svgr/webpack?-svgo,+titleProp,+ref![path]',
                        },
                      },
                    },
                  ],
                  //请选择其中配置之一,请勿重复配置
                  //按需导入 css 样式
                  /* ["import", {
                    "libraryName": "antd",
                    "style": true,
                  }], */
                  //按需导入 less 样式
                 /* ["import", {
                    "libraryName": "antd",
                    "style": true,
                  }],*/
                ],
                cacheDirectory: true,
                cacheCompression: isEnvProduction,
                compact: isEnvProduction,
              },
            },

step 6 less相关配置

采坑,react 是默认不支持less的,所以,如果是导入antd 的 less 样式 的话 我们还要额外的配置解析less , 步骤如下:

// 安装less less-loader 
// (个人推荐less@2.7.2版本,如果最新版本支持解析 antd 的 less 那么就选择最新版本.)
npm install less@2.7.2 less-loader -S
// 配置在webpack.config.js 文件中配置 (有样学样,傻瓜式配置)

// style files regexes
const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;
// (模仿css 和 sass 的声明方式) 声明 正则检测less文件校验
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/

// (模仿sass 的加载解析规则配置方式) 配置less解析规则
            {
              test: lessRegex,   //modify point 1
              exclude: lessModuleRegex,  // modify point 2
              use: getStyleLoaders(
                {
                  importLoaders: 2,
                  sourceMap: isEnvProduction && shouldUseSourceMap,
                },
                'less-loader' //modify point 3
              ),
              sideEffects: true,
            },
            {
              test: lessModuleRegex,  //modify point 4
              use: getStyleLoaders(
                {
                  importLoaders: 2,
                  sourceMap: isEnvProduction && shouldUseSourceMap,
                  modules: true,
                  getLocalIdent: getCSSModuleLocalIdent,
                },
                'less-loader'  //modify point 5
              ),
            },

总结

  • 以上采坑记录,只是为了让大家更快的上手新的 create-react-app 应用,更多细节可以参照create-react-app官方文档,antd官方文档或者在下方给笔者评论留言.
  • 喜欢笔者的文章的小伙伴,可以给笔者点赞关注,支持笔者☆⌒(*^-゜)v THX!!.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值