背景
在蚂蚁金服推出ant-design-pro的开源项目后,仔细了解了下,根据官网的介绍:
开箱即用的中台前端/设计解决方案
不过,该项目是基于dva的roadhog构建,我更倾向于使用react-script作为脚手架,所以也萌生了将现有的ant-design-pro项目的基础构建工具迁移到react-script的想法。
过程描述
1. 使用create-react-app创建一个新的工程
1 | create-react-app my-project |
2. 安装react-app-wired和less-modules
1 | yarn add react-app-rewired react-app-rewire-less-modules@https://github.com/WhatAKitty/react-app-rewire-less-modules less-loader --dev |
这两个模块的作用主要在于:扩展react-script本身的webpack配置。至于为什么要这么做,是因为为了简化开发流程,react-script本身已经将所有配置都隐藏配置;如果想要自行配置一些插件或者设置babel属性,只能通过react-app-wired来扩展。
3. 修改启动测试脚本
打开根路径下的package.json文件:
将以下内容:
1 | "scripts": { |
修改为:
1 | "scripts": { |
4. 创建react-app-wired的配置覆盖文件
新建文件config-overrides.js,将以下内容写入文件:
1 | const path = require('path'); |
5. 安装ant-design-pro需要的依赖
以下是ant-design-pro需要的依赖:
1 | "antd": "3.0.0-beta.5", |
通过以下命令安装:
1 | yarn add xxxx |
注意,有些事prerelease版本,需要指定特定版本安装,比如:antd和dva。
使用beta版本的原因如下:atnd:ant-design-pro以3.x为基础构建dva: dva的2.1.0-beta版本修复了一个import的issue,如果使用2.0.4版本,我们的项目将无法启动。
6. 迁移ant-design-pro代码
到了比较重要的一个步骤了,这个步骤我们需要将ant-design-pro的代码迁移至我们的项目。
在这里,我们分为几个小步骤进行:
- 删除我们自己项目的
src文件夹下所有内容 - 将
src文件夹下内容迁移至我们项目的src文件夹下 修改
/public/index.html文件,将g2图标组件静态导入:1
<script src="https://gw.alipayobjects.com/as/g/??datavis/g2/2.3.12/index.js,datavis/g-cloud/1.0.2/index.js,datavis/g2-plugin-slider/1.2.1/slider.js"></script>
安装
react-fetch-mock替代rodhog的mock:1
yarn add react-fetch-mock --dev
创建/src/__mocks__文件夹,并且将ant-design-pro根路径下mock文件夹内容全部迁移至/src/__mocks__文件夹下。
在/src/__mocks__文件夹下新建index.js文件:
复制.rodhog.mock.js内容,并修改为:
1 | import { Mock } from 'react-fetch-mock'; |
同时,__mocks__文件夹下其他非index.js文件,需要根据react-fetch-mock规则进行修改。具体用法,可以参考:https://github.com/WhatAKitty/react-fetch-mock。改造后的文件内容,可以在此查看:https://github.com/WhatAKitty/react-script-antd-pro/tree/master/src/__mocks__
7. 完成
改造基本完成,可以通过下面命令来查看具体效果:
1 | yarn start |
结束语
通过以上,我们已经完成改造。
如果嫌自己改造麻烦,这里是已经完成的版本:https://github.com/WhatAKitty/react-script-antd-pro,并且会根据`ant-design-pro`进行每天更新。
扩展
有空的话,会将动态路由的改造过程描述加入。现在也可以通过上面那个完成版本里面查看动态路由相关信息,在那个版本中,动态路由已经加入。