• React 配置别名 @ ( js/ts 项目中通过 @craco/craco 配置)


    一、简介

    • Vue 项目当中,可以使用 @ 来表示 src/,但在 React 项目中,默认却没有该功能,因此需要进行手动的配置来实现该功能。

      别名主要解决的问题:每个页面都使用路径的方式进行引入,这样很麻烦,效率很低,这个时候可以配置一个别名,来直接使用别名引入。

    • 使用 @craco/craco 的这种方式,可以在不释放 React 隐藏配置($ npm run eject)的情况下就能解决。

    • React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)

    二、js/ts + react 项目

    // 第一步:安装 craco
    $ yarn add @craco/craco 
    // 或
    $ npm install @craco/craco
    
    // 第二步:修改 package.json 里的 scripts 属性。
    "scripts": {
    -   // "start": "react-scripts start",
    -   // "build": "react-scripts build",
    -   // "test": "react-scripts test",
    +   "start": "craco start",
    +   "build": "craco build",
    +   "test": "craco test",
        "eject": "react-scripts eject"
    }
    
    // 第三步:根目录创建 craco.config.js 文件,在这里面可以自定义 webpack 相关配置,以及插件相关配置,算是配置文件的扩展暴露文件
    module.exports = {
      // ...
    };
    
    // 第四步:craco.config.js 中配置别名
    const path = require('path')
    module.exports = {
      // webpack 配置
      webpack: {
        // 配置别名
        alias: {
          // 约定:使用 @ 表示 src 文件所在路径
          "@": path.resolve(__dirname, "src")
          // ....其他的一些配置
        }
      }
    }
    
    // 第五步:在根目录的 jsconfig.json 或 tsconfig.json 中追加配置
    // baseUrl 设置为 ./ 也就是设置为了基于 tsconfig.json 的 ./
    // paths当中的配置,都是基于baseUrl的
    // "api/*": ["src/api/*"]
    // 代表遇到 import {} from "api/*" 时,就从 src/api/* 中引入
    // 这里的规则可以参考 TS 的文档:https://www.tslang.cn/docs/handbook/module-resolution.html
    {
      "compilerOptions": {
        "baseUrl": "./",
        "paths": {
          "@/*": ["src/*"],
          "api/*": ["src/api/*"]
        },
        // 本地部分语法报错不能识别,可选择忽略报错
        "experimentalDecorators": true
      }
    }
    
    // 第六步:测试
    // 在 src/index.tsx 文件中的进行调整,测试是否运行正常,有无报错。
    import App from './App';
    // 改成
    import App from '@/App';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
  • 相关阅读:
    c语言编程题经典100例——(41~45例)
    python创建sqlite,并使用flask-sqlalchemy连接
    ESXi Arm Edition version 1.11更新,及安装Win11 Arm版
    POJ2367Genealogical tree题解
    相当于Java long的MySQL是BigInt
    91.(leaflet篇)leaflet态势标绘-进攻方向绘制
    JVM:(十三)垃圾回收概述
    为什么LDO一般不用在大电流场景?
    阿里云认证 | 2023年ACP认证考试大揭秘
    零基础亦能看懂的神经网络笔记【零基础数模系列】
  • 原文地址:https://blog.csdn.net/zz00008888/article/details/132668737