1 of MANY ways to absolute path setup in Create React App
I know I know, there are way too many articles regarding this. I myself went on google to trying to figure out how to add absolute path functionality so I can go from
import MyButton from ../../components/Button/MyButton.jsx
to
import Button from 'components/Button/MyButton.jsx'
As I was researching I realized OMG there are way too many ways to do this. The frustration was so REAL.
There were some solutions that worked based on the comments in the github issues but I realized some vital steps were missing. Without further ado this is the quick and easy way to setup proper aliasing.
- Create a project via create-react-app
npm run eject
to eject the application- Go into both your
config/webpack.config.dev.js
andconfig/webpack.prod.js
file - Add the following in your
alias
object
alias: {
'components': path.resolve('src/components'), // This is ours!!
'react-native': 'react-native-web'
},
5. At this point you should create a components folder under src and test if it works properly. (Example setup below)
# App.js
import React, { Component } from 'react';
import Button from 'components/Button';
Side note:
Like all good applications you need tests. To get the imports working properly in that case… you can add the following to your package.json
below your moduleFileExtensions
key.
{
....
"moduleFileExtensions": [ ....]
"moduleDirectories": ["node_modules", "src"] // This is ours!!
},
"babel": {
...
}
Conclusion
This was a fairly short article but that was super intentional. I spent a bit of time trying to figure this out because I ended up going through too many rabbit holes. Hope this helps save you from relative path hell! If you have any questions let me know.