使用create-react-app构建react项目之后,配置less-loader,配置完了后,正常引入less没问题,但是@import "~antd/dist/antd.less"还是会报错:

问题:

Failed to compile.

./node_modules/antd/lib/style/index.less (./node_modules/css-loader??ref--6-oneOf-5-1!./node_modules/postcss-loader/src??postcss!./node_modules/less-loader/dist/cjs.js!./node_modules/antd/lib/style/index.less)

// https://github.com/ant-design/ant-motion/issues/44
.bezierEasingMixin();
^
Inline JavaScript is not enabled. Is it set in your options?

查看代码片段(webpack.config.js):

// less
{test: lessRegex,exclude: lessModuleRegex,use: getStyleLoaders({importLoaders: 3,sourceMap: isEnvProduction && shouldUseSourceMap,}, 'less-loader')
},

网上也能搜到,很多都是这么解决的,但是到我这里却出问题了???然后我就开始研究antd官网写法:

// webpack.config.js
module.exports = {rules: [{test: /\.less$/,use: [{loader: 'style-loader',}, {loader: 'css-loader', // translates CSS into CommonJS}, {loader: 'less-loader', // compiles Less to CSS
+     options: {
+       modifyVars: {
+         'primary-color': '#1DA57A',
+         'link-color': '#1DA57A',
+         'border-radius-base': '2px',
+         // or
+         'hack': `true; @import "your-less-file-path.less";`, // Override with less file
+       },
+       javascriptEnabled: true,
+     },}],// ...other rules}],// ...other config
}

对比我的代码和官网的代码,我发现官网还是原始的写法,并且还加上了一些配置,可以自定义主题,这似乎不错,于是我按照他的来改造。

首先我仔细看了下webpack.config.js里的getStyleLoaders函数,它的返回值是一个loader数组,正好可以作为use的值,它能接收两个参数:一个是cssOptions,接受对象、一个是preProcessor,并且只接受字符串。那么我的这里要传入less-loader以及对应的参数,字符串肯定是不够的,至少要传入对象才行,直接传肯定不行,那么怎么办呢?我想到了js的展开运算符,接下来是完整解决方案。

解决方案:

在webpack.config.js中:

// 大约第50行
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;
// 大约第460行
// less
{test: lessRegex,exclude: lessModuleRegex,use: getStyleLoaders({importLoaders: 3,sourceMap: isEnvProduction && shouldUseSourceMap,}, 'less-loader')
},
// .module.less
{test: lessModuleRegex,use: [...getStyleLoaders({importLoaders: 3,sourceMap: isEnvProduction && shouldUseSourceMap,modules: {getLocalIdent: getCSSModuleLocalIdent,},}),{loader: 'less-loader',options: {modifyVars: {'primary-color': '#1DA57A'},javascriptEnabled: true}}]
},

然后再在 getCSSModuleLocalIdent.js里边加上less:

到这里就解决了,最后再附上按需加载antd 的配置:

首先,  npm i babel-plugin-import -D  或者 yarn add babel-plugin-import --dev

然后,继续在webpack.config.js里配置:

// 大约第366行
{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]',},},},],// import 按需加载["import",{libraryName: 'antd',libraryDirectory: 'es',style: true}]],

祝看到这篇文章的同学们技术有成!

react之通俗易懂配置less相关推荐

  1. react二级路由配置正确不显示页面的问题解决

    react二级路由配置正确不显示页面的问题解决 最近在写react项目,配置二级路由时出了一个小小的bug,虽然是一个小小的bug,但是也苦思大半天不得其解.直到第二天豁然开朗,才发觉就这?? 问题描 ...

  2. 在react项目中配置alias-[webpack配置]

    alias是webpack中用来配置路径别名的,在路径嵌套特别深的项目中,对于路径的导入非常友好. webpack中的alias create-react-app搭建的react项目中配置alias ...

  3. react和vue配置本地代理

    React 在react中配置开发环境下的本地代理相对比较简单,直接在package.json文件中修改即可. 但是这样做有其局限性,如果开发中代理多个接口的时候将无法满足需求,我们需要的是下面这种的 ...

  4. 史上最详细Windows版本搭建安装React Native环境配置

    说在前面的话: 感谢同事金晓冰倾情奉献本环境搭建教程 之前我们已经讲解了React Native的OS X系统的环境搭建以及配置,鉴于各大群里有很多人反应在Windows环境搭建出现各种问题,今天就特 ...

  5. react修改webpack配置,添加别名

    第一种方式 通过 npm run eject 直接暴露出来react所有的webpack配置文件,暴露出来之后,过程不可逆 而且失去了 react-scripts 的统一管理的好处,而且react的w ...

  6. 搭建react项目并配置路由

    一条龙服务: 1.全局安装create-react-app npm install -g create-react-app 2.创建项目,安装依赖 create-react-app my-react- ...

  7. React:安装配置使用scss

    目录 前言: 1.暴露隐藏的webpack配置: 2.安装sass的相关包: 3.项目中新建一些scss文件: 4.在config文件夹中找到webpack.config.js文件,进行配置: 5.测 ...

  8. Create React App proxy配置

    最近又吃了没文化的亏(哭晕在洗手间≧ ﹏ ≦) 做后台管理系统的时候,需要调一个易连云打印小票的接口, 项目框架是 Create React App+typescript,后端是node.js 本媛负 ...

  9. React Native项目配置路由和选项卡导航__React Navigation的使用

    React Native 配置路由 在网上看了很多例子跟着写,发现都不行,发现之前的写法都已经弃用了,跟着官方一步步来吧. 参考官方文档:React Navigation 先创建好项目: npx re ...

  10. 了解CSS in JS(JSS)以及在React项目中配置并使用JSS

    目录 认识JSS 什么是JSS JSS 的常见实现 JSS 的好处与坏处 好处 坏处 使用模块化CSS实现JSS 安装插件 在React项目中的tsconfig.json中添加配置 vscode项目中 ...

最新文章

  1. SAP MM MB5L 报表里的差异金额如何调整?
  2. seo策略从5方面下手
  3. 编程方法学笔记:karel
  4. aws fargate_借助Fargate和EKS,AWS甚至可以实现Cloud-ier和Kuberneties-ier
  5. redis java序列化_java处理redis的几种序列化策略
  6. vuex页面数据丢失_解决 vuex 中的数据在页面刷新之后就丢失的问题
  7. 深度学习笔记(6) 实践层面(一)
  8. python异步高并发_通过python异步通讯方式构建高并发压力测试工具
  9. docker提交容器成一个新的镜像commit和push,以及docker常用命令
  10. js当中null和{}区别
  11. 吴恩达神经网络和深度学习-学习笔记-45-完全版YOLO算法
  12. DOM操作style样式——link、style、p style=''的区别
  13. 并联串联混合的电压和电流_如何从本质上判断电压表测量谁的电压?
  14. 第二章 用户画像建模
  15. maven的下载与安装教程(超详细)
  16. java做抽奖小程序_随机抽奖小程序
  17. java判断list中是否包含某个值_java判断list是否包含某个值
  18. 学会自己测天气系列八卦基础 01
  19. python数列求和,怎样在python求和
  20. 解决aria2下载磁力链接或bt文件时没有速度或速度为0

热门文章

  1. Android音视频编码基础一
  2. 合肥工业大学java考试试题_合肥工业大学JAVA程序设计问答题.docx
  3. Python3简单的爬虫项目 爬取虎牙主播名字 人气
  4. kali linux软件源更新,系统美化
  5. 计算机专业的优秀学长寄语大一新生,学长学姐对大一新生的寄语 大学学长学姐寄语励志...
  6. 将文件打成压缩包下载(OSS或FASTDFS)
  7. Linux Kernel Security全景图系列之开篇
  8. 宇宙背景声子低温超导探测器
  9. 耳朵电一电焦虑失眠就好了?
  10. 如何理解移动数据和移动计算