react+ts+antd项目搭建

前言: 基于ts语言创建react项目,node版本是v16.14.2

一、 脚手架创建项目

  1. 全局安装
javascript 复制代码
 npm install -g creacte-react-app
  1. 创建项目file-management,ts需要添加--template typescript
javascript 复制代码
npx create-react-app file-management --template typescript

二、 添加craco.config.js配置文件,类似于vue的vue.config.js文件

  1. 安装
javascript 复制代码
npm i -D @craco/craco
  1. 在项目根目录添加craco.config.js文件并添加路径别名
javascript 复制代码
const path = require('path')

module.exports = {
  // webpack 配置
  webpack: {
    // 配置别名
    alias: {
      '@': path.resolve(__dirname, 'src')
    }
  }
}
  1. 修改 package.json 中的脚本命令

修改前:

javacsript 复制代码
"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },

修改后:

javacsript 复制代码
"scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "craco eject"
  },
  1. 配置路径识别,在根目录tsconfig.json文件中添加baseUrl和paths
javascript 复制代码
{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx",
    "baseUrl": "./",
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": [
    "src"
  ]
}

更多配置参见craco配置文档

三、使用第三方组件库antd

需要注意的是antd是按需导入的,react并不能像vue一样把组件全部引用并注册。所以在react中使用antd只能是需要什么组件在页面中引入使用

  1. 安装
javascript 复制代码
npm install antd --save
  1. 引入,以app.tsx为例
javascript 复制代码
import { ConfigProvider } from 'antd';
import './App.css';

function App() {
  return (
    <ConfigProvider>
      
    </ConfigProvider>
  );
}

export default App;

四、使用less

  1. 安装,我们使用craco方式
javascript 复制代码
npm i craco-less
  1. 在craco.config.js文件中添加配置
javascript 复制代码
const CracoLessPlugin = require('craco-less')

module.exports = {
  plugins:[
    {
      // less
      plugin: CracoLessPlugin,
      options: {
        // resolve-url-loader只对sass生效,craco-less默认使用sass配置,所以这里手动过滤掉resolve-url-loader
        modifyLessRule: (lessRule) => {
          lessRule.use = lessRule.use.filter(
            (i) => !i.loader.includes('resolve-url-loader')
          );
          return lessRule;
        },
      },
    },
  ],
}
  1. 把app.css改为app.less并在app.tsx中引入

五、使用路由

  1. 安装
javascript 复制代码
npm install react-router react-router-dom
  1. 使用 app.tsx
javascript 复制代码
import { ConfigProvider } from 'antd';
import { BrowserRouter as Router } from 'react-router-dom';
import './App.less';

function App() {
  return (
    <Router>
      <ConfigProvider>

      </ConfigProvider>
    </Router>
  );
}

export default App;
相关推荐
永远的个初学者25 分钟前
图片优化 上传图片压缩 npm包支持vue(react)框架开源插件 支持在线与本地
前端·vue.js·react.js
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ26 分钟前
npm i / npm install 卡死不动解决方法
前端·npm·node.js
Kratzdisteln29 分钟前
【Cursor _RubicsCube Diary 1】Node.js;npm;Vite
前端·npm·node.js
杰克尼1 小时前
vue_day04
前端·javascript·vue.js
明远湖之鱼1 小时前
浅入理解跨端渲染:从零实现 React DSL 跨端渲染机制
前端·react native·react.js
悟忧2 小时前
规避ProseMirror React渲染差异带来的BUG
前端
小皮虾2 小时前
小程序云开发有类似 uniCloud 云对象的方案吗?有的兄弟,有的!
前端·javascript·小程序·云开发
Android疑难杂症2 小时前
鸿蒙Notification Kit通知服务开发快速指南
android·前端·harmonyos
T___T2 小时前
全方位解释 JavaScript 执行机制(从底层到实战)
前端·面试
阳懿2 小时前
meta-llama-3-8B下载失败解决。
前端·javascript·html