create-react-app中配置less与别名alias(使用craco)

本文介绍了如何在create-react-app中配置less样式文件和别名alias,通过使用craco进行配置,详细步骤包括初始化项目、安装craco和craco-less、配置craco.config.js、创建tsconfig-base.json、修改tsconfig.json、react-app-env.d.ts以及package.json,最后成功启动项目并提供了一个配置成功的demo。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

create-react-app中配置less和别名alias,使用craco
已配置成功的demo:craco-demo


1.初始化项目

# 创建一个名称为craco-demo的react项目(基于typescript)
npx create-react-app craco-demo --template typescript

初始化项目

2.安装craco和craco-less

# 安装craco
yarn add craco

安装craco

# 安装craco-less(若只配置alias则不需要安装craco-less)
yarn add craco-less

安装craco-less

3.配置craco.config.js

  • craco.config.js需要与package.json同级
  • 参考:craco-less
// craco.config.js
const path = require('path')
const CracoLessPlugin = require('craco-less')
const { loaderByName } = require('@craco/craco')

module.exports = {
  webpack: {
    alias: {
      '@': path.resolve(__dirname, 'src/')
    }
  },
  plugins: [
    {
      plugin: CracoLessPlugin,
      options: {
        modifyLessModuleRule(lessModuleRule, context) {
          // Configure the file suffix
          lessModuleRule.test = /\.module.less$/

          // Configure the generated local ident name.
          const cssLoader = lessModuleRule.use.find(loaderByName('css-loader'))
          cssLoader.options.modules = {
            localIdentName: '[local]_[hash:base64:5]',
          }
          return lessModuleRule
        },
        modifyLessRule(lessRule, context) {
          // You have to exclude these file suffixes first,
          // if you want to modify the less module's suffix
          lessRule.exclude = /\.less$/;
          return lessRule;
        },
      },
    },
  ]
}

4.创建tsconfig-base.json

  • 创建tsconfig-base.json(与tsconfig.json同级)
// tsconfig-base.json
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@*": ["src/*"]
    }
  }
}

5.修改tsconfig.json

// tsconfig.json
{
  "extends": "./tsconfig-base.json",
  ...
}

修改tsconfig.json

6.修改react-app-env.d.ts

/// <reference types="react-scripts" />

declare module '*.module.less' {
  const classes: { readonly [key: string]: string }
  export default classes
}

修改react-app-env.d.ts

7.修改package.json

修改package.json

8.启动项目

# 启动项目
yarn start

已配置成功的demo:craco-demo


总结

使用craco配置less与别名alias

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值