Hello Hive Community Members! ๐
Hope you're all doing fantastic! I'm back with Day 5 of my ReactJS learning series ๐
This journey has been quite the rollercoaster, and today we're diving into something every dev struggles with โ those ugly relative imports ๐ฉ
But before that, if you missed my earlier episodes, here's your cheat sheet ๐
๐ Catch Up on My React Adventures
- ๐ Day One: Fresh React app + AIOHA integration!
- ๐งญ Day Two: Routing drama & rebellious NavBar ๐ค
- ๐ ๏ธ Day Three: Fixed Layouts, Routing & AIOHA ๐ฅ
- ๐ง Day Four: useState, useEffect, and .env headaches ๐
- ๐ฅ Today is Day Five: Letโs clean up those imports with path aliases!
๐ Why Path Aliases?
Letโs face it โ
import Button from "../../../../components/ui/Button"
is just plain ugly and hard to maintain ๐ตโ๐ซ
While pairing up with another dev (shoutout to AI-generated code โจ), I noticed a cleaner import style โ so I had to figure it out myself! Hereโs how you can too ๐
๐ช Step-by-Step: Setting Up Path Aliases
๐ง Step 1: Update tsconfig.app.json
Add these compiler options to set your base path and alias:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
// ...other stuff
}
}
โ๏ธ Step 2: Tweak vite.config.ts
Use path
module to create an alias for @
pointing to your src
folder.
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import tailwindcss from "@tailwindcss/vite";
import path from "path";
// https://vite.dev/config/
export default defineConfig({
plugins: [
react(),
tailwindcss()
],
resolve: {
alias: {
"@": path.resolve(__dirname, "src"),
},
},
});
๐ Boom! Youโre 90% done.
๐ Step 3: Restart Everything!
- Stop your
npm run dev
server. - Restart TypeScript in VS Code (click on the TS version and hit "Restart TS Server").
- Before starting again... do not skip step 4 ๐คฃ
โ๏ธ Step 4: Update Your Imports!
Time to ditch the dot-dot-dot ๐ช
Use beautiful imports like:
import Button from "@/components/ui/Button"
Isnโt that satisfying? ๐
๐ Sources That Helped (But Also Confused Me ๐)
Honestly... I followed these and ended up with TypeScript errors. So, the method described in this post is what actually worked for me! ๐
Thanks for following along!
See you in the next post where Iโll probably break something else and then fix it (again) ๐
Stay curious & keep coding ๐ป๐ช
๐ Final Note
- I asked ChatGPT/AI to help optimize this post to make it more readable and viewer-friendly.
- Here is the link where you can find both original content & improvements made by AI
- https://chatgpt.com/share/68897d05-0eb0-8000-8f07-77280f4f2375
๐ My Contributions to โฆ๏ธ Hive Ecosystem
Contribution | To | Hive | Ecosystem |
---|---|---|---|
Hive Witness Node | Hive API Node (in progress) | 3Speak Video Encoder Node Operator (highest number of nodes) | 3Speak Mobile App Developer |
3Speak Podcast App Developer | 3Speak Shorts App Developer | 3Speak Support & Maintenance Team | Distriator Developer |
CheckinWithXYZ | Hive Inbox | HiFind | Hive Donate App |
Contributed to HiveAuth Mobile App | Ecency โ 3Speak Integration | Ecency โ InLeo Integration | Ecency โ Actifit Integration |
Hive Stats App | Vote for Witness App | HiveFlutterKit | New 3Speak App |
๐ Support Back
โค๏ธ Appreciate my work? Consider supporting @threespeak & @sagarkothari88! โค๏ธ
Vote | For | Witness |
---|---|---|
sagarkothari88 | @sagarkothari88 | |
threespeak | @threespeak |