基于create-react-app脚手架,按需加载antd组件以及less样式
前言
npm install less less-loader --save //安装less、less-loader依赖npm install react-app-rewired customize-cra --save //安装自定义配置相关的依赖库npm babel-plugin-import --save //安装用于按需加载的babel插件
修改"script"的启动配置为react-app-rewired。
"scripts": {"start": "react-app-rewired start","build": "react-app-rewired build","test": "react-app-rewired test","eject": "react-scripts eject"}
在根目录下创建config-overrides.js文件覆写修改webpack默认配置。
const { override, fixBabelImports, addLessLoader } = require('customize-cra');module.exports = override(fixBabelImports('import', {libraryName: 'antd',libraryDirectory: 'es',style: true,}),addLessLoader({javascriptEnabled: true,modifyVars: { '@primary-color': '#1DA57A' },}),);
运行命令:npm start 重新启动项目。
npm start
import React, { Component } from 'react';import './App.less' //引入less样式文件import { Button, Tag } from 'antd'; //引入antd的按钮、标签组件class App extends Component {render() {return (<div className="box"><Button type='danger'>请点击我一下</Button><div className='home'><Home /></div></div>);}}//无状态功能函数组件const Home = () =>{return (<div className='box-items'><div className="box-item"><Tag color='#f50'>啊!我被电击了</Tag><Tag color='#108ee9'>Hello!React</Tag><Tag color='#faad14'>警告你别搞事啊,小老弟!</Tag></div></div>)}export default App;
/*{App组件less样式}*/{width: 100vw;height: 30vh;background: wheat;.unity();: column;.home{margin: 20px;}}/*{Home组件less样式}*/.box-items{width: 30vw;height: 10vh;background: pink;.unity();}/*{通一less样式}*/.unity{display: flex;: center;: center;}
less.js让css的写法更加的灵活且更趋近于html的方式书写样式,为了在react项目中引入less,参考了antd的高级配置引入了我们项目中所需要的less样式,这个方法简化了配置less的操作,同时也避免了eject暴露底层文件。基于个人在开发过程中的经历,故此分享一下这个引入less的方式。antd官网还有另一种比较类似的方式引入less,在此就不多复述,如大家有更好更灵活的方式,可以一起探讨学习。
