react之通俗易懂配置less
使用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相关推荐
- react二级路由配置正确不显示页面的问题解决
react二级路由配置正确不显示页面的问题解决 最近在写react项目,配置二级路由时出了一个小小的bug,虽然是一个小小的bug,但是也苦思大半天不得其解.直到第二天豁然开朗,才发觉就这?? 问题描 ...
- 在react项目中配置alias-[webpack配置]
alias是webpack中用来配置路径别名的,在路径嵌套特别深的项目中,对于路径的导入非常友好. webpack中的alias create-react-app搭建的react项目中配置alias ...
- react和vue配置本地代理
React 在react中配置开发环境下的本地代理相对比较简单,直接在package.json文件中修改即可. 但是这样做有其局限性,如果开发中代理多个接口的时候将无法满足需求,我们需要的是下面这种的 ...
- 史上最详细Windows版本搭建安装React Native环境配置
说在前面的话: 感谢同事金晓冰倾情奉献本环境搭建教程 之前我们已经讲解了React Native的OS X系统的环境搭建以及配置,鉴于各大群里有很多人反应在Windows环境搭建出现各种问题,今天就特 ...
- react修改webpack配置,添加别名
第一种方式 通过 npm run eject 直接暴露出来react所有的webpack配置文件,暴露出来之后,过程不可逆 而且失去了 react-scripts 的统一管理的好处,而且react的w ...
- 搭建react项目并配置路由
一条龙服务: 1.全局安装create-react-app npm install -g create-react-app 2.创建项目,安装依赖 create-react-app my-react- ...
- React:安装配置使用scss
目录 前言: 1.暴露隐藏的webpack配置: 2.安装sass的相关包: 3.项目中新建一些scss文件: 4.在config文件夹中找到webpack.config.js文件,进行配置: 5.测 ...
- Create React App proxy配置
最近又吃了没文化的亏(哭晕在洗手间≧ ﹏ ≦) 做后台管理系统的时候,需要调一个易连云打印小票的接口, 项目框架是 Create React App+typescript,后端是node.js 本媛负 ...
- React Native项目配置路由和选项卡导航__React Navigation的使用
React Native 配置路由 在网上看了很多例子跟着写,发现都不行,发现之前的写法都已经弃用了,跟着官方一步步来吧. 参考官方文档:React Navigation 先创建好项目: npx re ...
- 了解CSS in JS(JSS)以及在React项目中配置并使用JSS
目录 认识JSS 什么是JSS JSS 的常见实现 JSS 的好处与坏处 好处 坏处 使用模块化CSS实现JSS 安装插件 在React项目中的tsconfig.json中添加配置 vscode项目中 ...
最新文章
- SAP MM MB5L 报表里的差异金额如何调整?
- seo策略从5方面下手
- 编程方法学笔记:karel
- aws fargate_借助Fargate和EKS,AWS甚至可以实现Cloud-ier和Kuberneties-ier
- redis java序列化_java处理redis的几种序列化策略
- vuex页面数据丢失_解决 vuex 中的数据在页面刷新之后就丢失的问题
- 深度学习笔记(6) 实践层面(一)
- python异步高并发_通过python异步通讯方式构建高并发压力测试工具
- docker提交容器成一个新的镜像commit和push,以及docker常用命令
- js当中null和{}区别
- 吴恩达神经网络和深度学习-学习笔记-45-完全版YOLO算法
- DOM操作style样式——link、style、p style=''的区别
- 并联串联混合的电压和电流_如何从本质上判断电压表测量谁的电压?
- 第二章 用户画像建模
- maven的下载与安装教程(超详细)
- java做抽奖小程序_随机抽奖小程序
- java判断list中是否包含某个值_java判断list是否包含某个值
- 学会自己测天气系列八卦基础 01
- python数列求和,怎样在python求和
- 解决aria2下载磁力链接或bt文件时没有速度或速度为0