Vite React 项目绝对路径配置

原文: https://www.qiulin-dev.top/articles/2655fcfe-6456-4a66-928a-4b8d20aeb8d2

在 Vite 项目中,配置绝对路径可以让我们在导入模块时不再依赖相对路径 .../.../,而是通过简洁的别名来引用项目中的模块。接下来我们将详细介绍如何在 Vite 和 React 项目中配置绝对路径,并结合 TypeScript 的配置。

1. 配置 vite.config.ts

Vite 默认支持通过 alias 来配置路径别名。我们需要在 vite.config.ts 中添加相关的别名配置。以下是示例:

ts 复制代码
// vite.config.ts
import { defineConfig } from 'vite'; 
import react from '@vitejs/plugin-react';
import { resolve } from 'path';

export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src'), // 将 @ 指向 src 目录
    },
  },
});

这里,我们使用了 Node.js 的 path.resolve 方法将 @别名指向项目的 src 目录。配置完成后,我们就可以在项目中通过 @ 来引用 src 目录下的文件。

path报错, 需要安装 @types/node

shell 复制代码
npm install --save-dev @types/node

2. 配置 TypeScript 路径别名

为了让 TypeScript 也识别我们设置的别名,我们需要在 tsconfig.json 中同步配置。添加以下配置:

json 复制代码
// tsconfig.json
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  }
}

baseUrl 指定了相对路径的根目录为项目的根目录,paths 则是配置别名的映射关系。

3. 示例用法

现在我们可以使用 @ 来代替 src 目录。例如,假设项目中有以下文件结构:

shell 复制代码
src
│   main.tsx
└───components
    │   Hello.tsx

在 main.tsx 中导入 Hello 组件时,可以这样编写:

ts 复制代码
// src/main.tsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import '@/components/Hello'; // 使用绝对路径别名

ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

4. 结论

通过在 Vite 和 TypeScript 中配置路径别名,我们可以简化模块的导入路径,使代码更易于维护。以上步骤适用于大多数 Vite + React + TypeScript 项目,按照该流程即可轻松实现绝对路径的配置。

相关推荐
程序员Sunday3 小时前
JavaScript 事件循环面试题,宏任务与微任务怎么执行|Sunday面试指南
开发语言·javascript·面试·校招·事件循环·程序员sunday
默_笙4 小时前
🌊 向量库和 ES 都查不出"关系",我只好给奶茶建了一张人脉网
前端·javascript
思无邪665 小时前
用 AI 做 JS 逆向:从抓包到复现的完整方法论
开发语言·javascript·人工智能
福兮说7 小时前
浏览器里把 iPhone 的 HEIC 转成 JPG:Chrome 解不开、转完大了七成、拍摄时间全丢,六个坑实测
前端·javascript·图像处理·chrome·ios·iphone·heic
可乐鸡翅yeah_8 小时前
video.js 集成 hls.js 开发 M3U8 播放器,新手高频踩坑
开发语言·前端·javascript·后端·ecmascript·m3u8·音视频在线播放
wflynn8 小时前
GitHub 今日推荐|ts-rust:把微软 TypeScript-Go 编译器逐行移植成 Rust 实现
rust·typescript·开源·github·compiler·tsc
用户117953654789 小时前
TRAE vs Claude Code 性能对比:从代码生成、多文件重构到底层吞吐,谁更适合你的日常开发?
javascript
kill52210 小时前
useRef
前端·javascript·react.js
米多科技10 小时前
我做了一个 3D 虚拟世界基底,在上面再搭 3D 世界或元宇宙,事半功倍
javascript·人工智能·github
霍营_托尼11 小时前
纯前端播 40GB 本地视频?我把浏览器改造成了「磁盘流式」播放器
前端·javascript·音视频开发