使用create-react-app创建应用

  1. yarn create react-app my-app
  2. cd my-app
  3. yarn start

引入 antd

这是 create-react-app 生成的默认目录结构。

  1. ├── README.md
  2. ├── package.json
  3. ├── public
  4. ├── favicon.ico
  5. └── index.html
  6. ├── src
  7. ├── App.css
  8. ├── App.js
  9. ├── App.test.js
  10. ├── index.css
  11. ├── index.js
  12. └── logo.svg
  13. └── yarn.lock

现在从 yarn 或 npm 安装并引入 antd。

  1. yarn add antd

按需加载

引入react-app-rewired ,这是一个可以自定义react项目配置的库, 对于使用Webpack 4的create-react-app 2.x:

  1. yarn add react-app-rewired --dev

由于新的 react-app-rewired@2.x 版本的关系,需要安装 customize-cra

  1. yarn add customize-cra --dev

修改package.json项目启动项

  1. /* package.json */
  2. // 旧的
  3. "scripts": {
  4. "start": "react-scripts start",
  5. "build": "react-scripts build",
  6. "test": "react-scripts test",
  7. "eject": "react-scripts eject"
  8. },
  9. // 替换
  10. "scripts": {
  11. "start": "react-app-rewired start",
  12. "build": "react-app-rewired build",
  13. "test": "react-app-rewired test"
  14. },

安装babel-plugin-import插件

babel-plugin-import 是一个用于按需加载组件代码和样式的 babel 插件(原理),在项目根目录创建一个 config-overrides.js 用于修改默认配置。添加以下内容:


  1. const { override, fixBabelImports } = require('customize-cra');
  2. module.exports = override(
  3. fixBabelImports('import', {
  4. libraryName: 'antd',
  5. libraryDirectory: 'es',
  6. style: 'css',
  7. }),
  8. );

使用less

  1. yarn add less less-loader --dev

修改config-overrides.js文件,添加以下内容:

  1. - const { override, fixBabelImports } = require('customize-cra');
  2. + const { override, fixBabelImports,addLessLoader } = require('customize-cra');
  3. module.exports = override(
  4. fixBabelImports('import', {
  5. libraryName: 'antd',
  6. libraryDirectory: 'es',
  7. style: 'css',
  8. }),
  9. + addLessLoader({
  10. + javascriptEnabled: true,
  11. + modifyVars: {
  12. + '@primary-color': '#1DA57A'
  13. + }
  14. + })
  15. );

使用scss

scss无需配置,安装插件即可使用

  1. yarn add node-sass sass-loader --dev

修改 src/App.js,引入 antd 的按钮组件。

  1. import React, { Component } from 'react';
  2. import Button from 'antd/es/button';
  3. import './App.css';
  4. class App extends Component {
  5. render() {
  6. return (
  7. <div className="App">
  8. <Button type="primary">Button</Button>
  9. </div>
  10. );
  11. }
  12. }
  13. export default App;

修改src/App.css为 App.less

  1. .App {
  2. text-align: center;
  3. }
  4. .App-header {
  5. background-color: #282c34;
  6. min-height: 100vh;
  7. display: flex;
  8. flex-direction: column;
  9. align-items: center;
  10. justify-content: center;
  11. font-size: calc(10px + 2vmin);
  12. color: white;
  13. .App-logo {
  14. animation: App-logo-spin infinite 20s linear;
  15. height: 40vmin;
  16. pointer-events: none;
  17. }
  18. .App-link {
  19. color: #61dafb;
  20. }
  21. }

最后 yarn start启动项目

参考资料: 使用react-app-rewired和customize-cra对默认设置自定义

最新版react16.9中按需加载antd和使用less的更多相关文章

  1. angular中按需加载js

    按需加载估计是大家在使用angular之后最想解决的问题吧,因为angular的依赖机制,导致了必须在第一次加载的时候就加载所有js文件,小项目还好,稍大一点的项目如果有上百个js文件,不管是从效率还 ...

  2. 基于create-react-app脚手架,按需加载antd组件以及less样式

    摘要 为了更好的书写css样式,在react中引入less,在网上查询了许多关于react引入less样式文件的资料,大多数都是需要在react项目中npm run eject暴露出底层文件,然后在底 ...

  3. antd中按需加载使用react-app-rewired报错

    [描述] 按照antd官网步骤 https://ant.design/docs/react/use-with-create-react-app-cn 最后yarn start会报错 [解决方法] 原因 ...

  4. [转] react-router4 实现按需加载

    按需加载的背景 https://juejin.im/post/58f9717e44d9040069d06cd6?utm_source=tuicool&utm_medium=referral R ...

  5. 【react学习二】create-react-app 接入antd 并按需加载组件

    1.安装 cnpm i babel-plugin-import --save-dev 2.使用 在根目录下的package.json下的bable中添加相应代码 "babel": ...

  6. jQuery中的ready方法及实现按需加载css,js

    模拟jQuery中的ready方法及实现按需加载css,js 一.ready函数的实现 经常用jQuery类库或其他类库中的ready方法,有时候想想它们到底是怎么实现的,但是看了一下jQuery中的 ...

  7. webpack中利用require.ensure()实现按需加载

    webpack中的require.ensure()可以实现按需加载资源包括js,css等,它会给里面require的文件单独打包,不和主文件打包在一起,webpack会自动配置名字,如0.js,1.j ...

  8. webpack中实现按需加载

    webpack中的require.ensure()可以实现按需加载资源包括js,css等,它会给里面require的文件单独打包,不和主文件打包在一起,webpack会自动配置名字,如0.js,1.j ...

  9. .NET中的按需加载/延迟加载 Lazy<T>

    业务场景: 在项目开发中,经常会遇到特定的对象使用的加载问题,有的实例对象我们创建之后并非需要使用,只是根据业务场景来调用,所以可能会导致很多无效的实例加载 延迟初始化出现于.NET 4.0,主要用于 ...

随机推荐

  1. docker--shell和Exec格式

    shell格式 RUN apt-get install -y vim CMD echo "docker so easy" ENTRYPOINT echo "docker ...

  2. linux 系统磁盘管理体系

    目录 linux 系统磁盘管理体系 一.磁盘的基本概念 二.磁盘的内部结构 三.磁盘的外部结构 四.磁盘的接口及类型 五.fdisk磁盘分区实践 六.gdisk 分区 七.parted 高级分区工具. ...

  3. 转载 初学者必看——最简单最清晰的Struts2项目搭建流程

    https://blog.csdn.net/key0323/article/details/50773499 在项目中想要使用Struts2框架,我该怎么做?从哪里开始?这是我的疑惑,我想也是很多初学 ...

  4. sqoop 数据导入hive

    一. sqoop: mysql->hive sqoop import -m 1 --hive-import --connect "jdbc:mysql://127.0.0.1:3306 ...

  5. 【leetcode】996. Number of Squareful Arrays

    题目如下: Given an array A of non-negative integers, the array is squareful if for every pair of adjacen ...

  6. Ubuntu下的安装notepad++

    Ubuntu下的安装方法: sudo add-apt-repository ppa:notepadqq-team/notepadqq sudo apt-get update sudo apt-get ...

  7. UNP学习 Unix域协议

    Unix域协议并不是一个实际的协议族,它只是在同一台主机上进行客户-服务器通信时,使用与在不同主机上的客户和服务器间通信时相同的API的一种方法. 当客户和服务器在同一台主机上时,Unix域协议是这套 ...

  8. Service系统服务(二):补充应用技巧、软连接与硬连接、man手册、zip备份、vim效率操作、自定义yum软件仓库、发布及测试yum仓库、编译安装软件包

    一.补充应用技巧 目标: 本例要求掌握在运维中比较常用的一些扩展命令技巧的使用,完成下列小技巧操作: 1> 采用数值形式将目录/root的权限调整为 rwx------   2> 将记录的 ...

  9. BZOJ 1006: [HNOI2008]神奇的国度(弦图)

    传送门 解题思路 弦图就是图中任意一个大小\(>=4\)的环至少存在一条两个节点不相邻的边,这样的图称为弦图,弦图有许多优美的性质.一个无向图是弦图当且仅当它有一个完美消除序列,完美消除序列就是 ...

  10. haproxy笔记

    haproxy安装.启动.日志配置 方法1:#安装 yum install haproxy -y #日志配置 sed -i 's/^#$ModLoad imudp/$ModLoad imudp/g' ...