DEV Community

Cover image for Stop Using ../../../ While Importing Components, Instead Use This Method
Suhail Kakar
Suhail Kakar

Posted on

Stop Using ../../../ While Importing Components, Instead Use This Method

Introduction 📚

When you go to GitHub and see some other developers code, most of them are importing their components like this👇

import Button from "../../../components/Buttons/Button"
Enter fullscreen mode Exit fullscreen mode

This is called relative import. Relative import will start with either ./,/ or ../.

I am not telling that this is the wrong way and even there is no issue if you import like that, but if you have a very big and complex project, relative imports will look a lot messy similar to this.

import Button from "../../../../../../components/Buttons/Button"
Enter fullscreen mode Exit fullscreen mode

However, there is a very better and cleaner way to import these components. This method is called absolute import. An absolute import will look this like 👇

import Button from "components/Buttons/Button"
Enter fullscreen mode Exit fullscreen mode

Adding absolute imports to React Apps (CRA) 💡

Open your project in any code editor and create a new file in your project's root directory named jsconfig.json. Once you created the file paste the below JSON inside of it.

{
  "compilerOptions": {
    "baseUrl": "src"
  }
}
Enter fullscreen mode Exit fullscreen mode

This will instruct Webpack to use the src directory as a base one.

Conclusion ⌛

I hope you found this short article helpful. If you need any help please let me know in the comment section.

Let's connect on Twitter and LinkedIn

👋 Thanks for reading, See you next time

Top comments (11)

Collapse
 
koddr profile image
Vic Shóstak • Edited

Hello! Thanks for the article 👍

Also, I'm using this way in my project's tsconfig.json:

{
  "compilerOptions": {
    // ...
    "paths": {
      "__/*": ["./src/*"] // <-- it's alias to ./src folder
    },
    // ...
  },
  "include": ["./src"]
}
Enter fullscreen mode Exit fullscreen mode

And next in project files:

// ...

import { Greetings } from '__/Pages/views'; // <-- acctually ./src/Pages/views.tsx
import '__/style.css'; // <-- acctually ./src/style.css

// ...
Enter fullscreen mode Exit fullscreen mode

P.S. my full TS config file is here.

Collapse
 
omkar_k45 profile image
Omkar Kulkarni

I prefer '@' instead of underscore...

Collapse
 
koddr profile image
Vic Shóstak

As you wish!

I mean, you can also do handy placeholders for project folders this way.

For example, easily connect all of your Components:

"__/*": ["./src/Components/*"],
Enter fullscreen mode Exit fullscreen mode

Or styles for each Component:

"__/style/*": ["./src/Components/*/styles/main.css"]
Enter fullscreen mode Exit fullscreen mode

Nevermind what kind of start symbol do you choose... 🤷

Collapse
 
unknownshot profile image
unknown-shot

nice post i like it, are u safe bro

Collapse
 
suhailkakar profile image
Suhail Kakar

Thanks,

Yep, Currently I am living in India :)

Collapse
 
akdevcraft profile image
AK DevCraft

Straight and concise post, great work! Barrel files are another cleaner way to import modules. One of the benefits comes into picture while code refactoring.

Collapse
 
lukeecart profile image
Luke Cartwright

This is great! Thanks for sharing your knowledge

Collapse
 
suhailkakar profile image
Suhail Kakar

Glad you liked it Luke

Collapse
 
sanjarcode profile image
Sanjar Afaq

Nice, good and to the point👍️.

Collapse
 
suhailkakar profile image
Suhail Kakar

Thank you Sanjar :)

Collapse
 
bharathkv90 profile image
bharathkv90

I don’t think relative import will start with a /