React配置Less和antd的自定义主题

1.安装 less, less-loader
 

   由于高版本的lessless-loader似乎和Webpack有不兼容的问题,在这里我是指定了版本安装。

    npm install less@3.9.0 --save

    npm install less-loader@4.1.0 --save 

2.安装antd   

 npm install antd --save  

3.实现antd按需加载

为了实现对antd这个库的按需加载效果,我们还需要安装一个叫做babel-plugin-import的库 。

npm install babel-plugin-import --save 

 这个插件需要配置,而且配置项中有一个需要格外注意。 不过要在react脚手架创建出的项目中配置,还需要先执行弹出命令。

yarn eject 

  如果报错,那么需要先执行这三句命令,初始化git仓库。

git init

git add .

git commit -m 'init'

成功弹出配置后,在config文件夹里面的webpack.config.js中第426行的plugin数组里面添加这么一项:

[ require.resolve('babel-plugin-import'), { libraryName: 'antd', "libraryDirectory": "es", style: true } ],

 这一句就是引入了babel-plugin-import插件,不过这个插件还有需要注意的地方。

  • style的属性为true的时候加载未编译为css的less,也就可以改变主题
  • 如果style:“css”就是加载编译好的css,无法更改主题

 而我们后面还需要配置antd的定制主题,所以需要把style改为true。 

4.配置less使得react能够使用less 

//在webpack.config.js第65行后面加上这两句代码
const lessRegex= /\.less$/;
const lessModuleRegex=/\.module\.less$/;

 

// 在webpack.config.js的第550行后面添加这两段代码
 {
              test: lessRegex,
              exclude: lessModuleRegex,
              use: getStyleLoaders(
                  {
                    importLoaders: 3,
                    sourceMap: isEnvProduction && shouldUseSourceMap,
                  },

                  'less-loader'
              ),
              sideEffects: true,
            },
            {
              test: lessModuleRegex,
              use: getStyleLoaders(
                  {
                    importLoaders: 3,
                    sourceMap: isEnvProduction && shouldUseSourceMap,
                    modules: {
                      getLocalIdent: getCSSModuleLocalIdent,
                    },
                  },
                  'less-loader'
              ),
},

  这样子,重启react项目之后,就可以使用less文件了。

5.配置antd自定义主题

 

// 在webpack.config.js第158行代码后面添加这一段代码
    //新增代码
   let loader = require.resolve(preProcessor);
    if(preProcessor === 'less-loader'){
        loader = {
            loader,
            options:{
              modifyVars:{
                '@primary-color': '#1DA57A'
              },
              javascriptEnabled:true
            }
        }
}
      loaders.push(loader);

 这句话就修改了antd中的less变量,下面给出一些常用的antd变量。

@primary-color: #1890ff; // 全局主色
@link-color: #1890ff; // 链接色
@success-color: #52c41a; // 成功色
@warning-color: #faad14; // 警告色
@error-color: #f5222d; // 错误色
@font-size-base: 14px; // 主字号
@heading-color: rgba(0, 0, 0, 0.85); // 标题色
@text-color: rgba(0, 0, 0, 0.65); // 主文本色
@text-color-secondary: rgba(0, 0, 0, 0.45); // 次文本色
@disabled-color: rgba(0, 0, 0, 0.25); // 失效色
@border-radius-base: 2px; // 组件/浮层圆角
@border-color-base: #d9d9d9; // 边框色
@box-shadow-base: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08),
  0 9px 28px 8px rgba(0, 0, 0, 0.05); // 浮层阴影

 这样子就配置成功了Less且可以自定义antd主题。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
步骤如下: 1. 在阿里iconfont官网上选择所需图标,添加到购物车中,并下载对应的图标字体文件。 2. 将字体文件复制到项目中的一个合适的目录下,比如 `src/assets/fonts`。 3. 在项目中安装 `@iconify/react` 和 `@iconify/icons` 包,用于渲染图标。 ``` npm install @iconify/react @iconify/icons --save ``` 4. 在 `webpack.config.js` 文件中配置字体文件的加载器,以及 `less-loader` 和 `css-loader` 的配置。 ``` const IconfontWebpackPlugin = require('iconfont-webpack-plugin'); module.exports = { module: { rules: [ { test: /\.(woff|woff2|eot|ttf|otf)$/, use: [ { loader: 'file-loader', options: { outputPath: 'fonts' } } ] }, { test: /\.less$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'less-loader', options: { lessOptions: { modifyVars: { 'hack': `true;@import "${require.resolve('antd/lib/style/color/colorPalette.less')}";`, 'icon-font-path': '"../assets/fonts/iconfont"' } } } } ] } ] }, plugins: [ new IconfontWebpackPlugin({ resolve: { extensions: ['.tsx'] } }) ] }; ``` 其中,`IconfontWebpackPlugin` 是用于自动将 `@iconify/icons` 中的图标转换成 React 组件,并导出到指定目录的插件。 5. 在代码中使用图标: ``` import { Icon } from '@iconify/react'; import userIcon from '@iconify/icons-ant-design/user'; const MyComponent = () => { return ( <div> <Icon icon={userIcon} /> </div> ); }; ``` 其中,`userIcon` 是从 `@iconify/icons-ant-design` 包中导入的,可以替换成其他需要使用的图标。`Icon` 组件会自动根据图标名称找到对应的字体文件,并渲染出图标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值