React实战 | create-react-app@2.x所遇到的问题,支持less语法以及引入Antd并修改Antd的主题颜色
2019-03-29 19:57
1461 查看
支持less
create-react-app 2.+支持sass、css,但是不支持less。为了要应用基于less开发的AntDesign组件,我们需要使项目支持less。
执行步骤
- 我们首先执行以下代码来暴露webpack配置:
yarn run eject
如果产生报错This git repository has untracked files or uncommitted changes,可参考解决方案
- 添加less、less-loader依赖
yarn add less less-loader
- 在webpack.config.js文件中做以下修改
1.
在40行左右添加less匹配项
// style files regexes 样式匹配规则 const cssRegex = /\.css$/; const cssModuleRegex = /\.module\.css$/; const sassRegex = /\.(scss|sass)$/; const sassModuleRegex = /\.module\.(scss|sass)$/; // 新加less匹配项 const lessRegex = /\.less$/; const lessModuleRegex = /\.module\.less$/
2.在400行左右新增less配置
//在sass的配置下新增less配置 { test: lessRegex, exclude: lessModuleRegex, use: getStyleLoaders({ importLoaders: 2 }, 'less-loader'), }, { test: lessModuleRegex, use: getStyleLoaders( { importLoaders: 2, modules: true, getLocalIdent: getCSSModuleLocalIdent, }, 'less-loader' ), },
这时在项目中已经可以正常使用less文件
配置AntDesign
- 首先安装并配置
按需引入
yarn add antd yarn add babel-plugin-import
- 在
package.json
中或者.babelrc
中配置按需导入的组件库规则
"babel": { "presets": [ "react-app" ], "plugins": [ ["import", { "libraryName": "antd", "style": true }] ] },
如果需要修改主题默认配置的话(例如颜色)导入less文件这里应设置为"style": true;否则设置为"style": css。
这里的区别推荐大家去babel-plugin-import官网看一下
在当你设为true时,会发编译失败,页面中antd组件也会没有样式了,命令行抛出如下异常:
.bezierEasingMixin() Inline JavaScript is not enable. Is it set in your options?
- 未解决上述报错,需要在webpack.config.js中的getStyleLoaders中添加以下代码:
if (preProcessor) { if (preProcessor === 'less-loader') { // 为less-loader添加配置项,启动javascript loaders.push({ loader: require.resolve(preProcessor), options: { sourceMap: isEnvProduction && shouldUseSourceMap, modifyVars: { // 修改主题颜色 'primary-color': '#000000', },javascriptEnabled: true // 解决上文报错 }, }); } else { loaders.push({ loader: require.resolve(preProcessor), options: { sourceMap: isEnvProduction && shouldUseSourceMap, }, }); } }
getStyleLoaders是与1.x相比较,2.x对css loader这一块做的提取,抽出了这个方法,第一个参数代表配置项,第二个参数代表使用的loader,返回的loader列表就是匹配的样式文件需要加载的loader
修改Antd主题颜色
上述代码中的modifyVars正是修改主题颜色的关键
modifyVars: { // 修改主题颜色 'primary-color': '#000000', },
记得把之前测试用的import 'antd/dist/antd.css’删掉,就可以完美实现主题颜色的改变啦。
相关文章推荐
- creat-react-app搭建的项目中按需引入antd以及配置Less和如何修改antd的主题色
- create-react-app引入less不生效问题解决
- Antd在create-react-app中对自定义主题的设置的问题
- 在react-native中引入antd-mobile遇到的问题
- 使用react脚手架create-react-app遇到的问题
- 详解在create-react-app使用less与antd按需加载
- Create-react-app+Antd+Less 在项目yarn eject 的情况下进行配置
- create-react-app方式下引入antd
- create-react-app 脚手架不支持less解决方案
- 转载001---create-react-app 脚手架不支持less解决方案
- create-react-app修改为多页面支持的方法
- Create-react-app+Antd+Less配置
- react-create-app打包过程遇到的问题
- create-react-app使用antd按需加载的样式无效问题的解决
- create-react-app脚手架创建react项目,react的基本语法,以及react中的事件绑定
- create-react-app 按需加载antd出错问题解决
- create-react-app 创建应用修改为淘宝源(cnpm)解决超慢问题
- create-react-app 引入 antd 及 解决 antd 样式无法显示的bug
- 修改AppCompat主题下弹出Dialog的按钮字体颜色
- 拿什么拯救:Android Studio 时代 继续使用Eclipse开发Android app时遇到的几个问题以及解决办法